ETH Price: $3,097.49 (+0.46%)
Gas: 11 Gwei

Token

Pixie Dust (DUST)
 

Overview

Max Total Supply

0 DUST

Holders

274

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
0xb060b93d2d409d2bcd7a400e3582676a8af33b5e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NFTerrariumDust

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-30
*/

// SPDX-License-Identifier: GPL-3.0

/**

    ╔╗╔╔═╗╔╦╗┌─┐┬─┐┬─┐┌─┐┬─┐┬┬ ┬┌┬┐
    ║║║╠╣  ║ ├┤ ├┬┘├┬┘├─┤├┬┘││ ││││
    ╝╚╝╚   ╩ └─┘┴└─┴└─┴ ┴┴└─┴└─┘┴ ┴
    Contract by @texoid__

*/



// File: @openzeppelin/contracts/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/Address.sol
pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 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/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
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() {
        _setOwner(_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 {
        _setOwner(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");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


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);
}


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;
    }
}


pragma solidity ^0.8.0;
/**
 * @dev Required interface of an ERC1155 compliant contract, as defined in the
 * https://eips.ethereum.org/EIPS/eip-1155[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155 is IERC165 {
    /**
     * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.
     */
    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    /**
     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
     * transfers.
     */
    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

    /**
     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
     * `approved`.
     */
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

    /**
     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
     *
     * If an {URI} event was emitted for `id`, the standard
     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
     * returned by {IERC1155MetadataURI-uri}.
     */
    event URI(string value, uint256 indexed id);

    /**
     * @dev Returns the amount of tokens of token type `id` owned by `account`.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) external view returns (uint256);

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    /**
     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
     *
     * Emits an {ApprovalForAll} event.
     *
     * Requirements:
     *
     * - `operator` cannot be the caller.
     */
    function setApprovalForAll(address operator, bool approved) external;

    /**
     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
     *
     * See {setApprovalForAll}.
     */
    function isApprovedForAll(address account, address operator) external view returns (bool);

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}


pragma solidity ^0.8.0;
/**
 * @dev Interface of the optional ERC1155MetadataExtension interface, as defined
 * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].
 *
 * _Available since v3.1._
 */
interface IERC1155MetadataURI is IERC1155 {
    /**
     * @dev Returns the URI for token type `id`.
     *
     * If the `\{id\}` substring is present in the URI, it must be replaced by
     * clients with the actual token type ID.
     */
    function uri(uint256 id) external view returns (string memory);
}


pragma solidity ^0.8.0;
/**
 * @dev Implementation of the basic standard multi-token.
 * See https://eips.ethereum.org/EIPS/eip-1155
 * Originally based on code by Enjin: https://github.com/enjin/erc-1155
 *
 * _Available since v3.1._
 */
contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {
    using Address for address;

    // Mapping from token ID to account balances
    mapping(uint256 => mapping(address => uint256)) private _balances;

    // Mapping from account to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;

    /**
     * @dev See {_setURI}.
     */
    constructor(string memory uri_) {
        _setURI(uri_);
    }

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC1155MetadataURI-uri}.
     *
     * This implementation returns the same URI for *all* token types. It relies
     * on the token type ID substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * Clients calling this function must replace the `\{id\}` substring with the
     * actual token type ID.
     */
    function uri(uint256) public view virtual override returns (string memory) {
        return _uri;
    }

    /**
     * @dev See {IERC1155-balanceOf}.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }

    /**
     * @dev See {IERC1155-balanceOfBatch}.
     *
     * Requirements:
     *
     * - `accounts` and `ids` must have the same length.
     */
    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }

    /**
     * @dev See {IERC1155-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(_msgSender() != operator, "ERC1155: setting approval status for self");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    /**
     * @dev See {IERC1155-isApprovedForAll}.
     */
    function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[account][operator];
    }

    /**
     * @dev See {IERC1155-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    /**
     * @dev See {IERC1155-safeBatchTransferFrom}.
     */
    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }

    /**
     * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `from` must have a balance of tokens of type `id` of at least `amount`.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }
        _balances[id][to] += amount;

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}.
     *
     * Emits a {TransferBatch} event.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
            _balances[id][to] += amount;
        }

        emit TransferBatch(operator, from, to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    /**
     * @dev Sets a new URI for all token types, by relying on the token type ID
     * substitution mechanism
     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].
     *
     * By this mechanism, any occurrence of the `\{id\}` substring in either the
     * URI or any of the amounts in the JSON file at said URI will be replaced by
     * clients with the token type ID.
     *
     * For example, the `https://token-cdn-domain/\{id\}.json` URI would be
     * interpreted by clients as
     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`
     * for token type ID 0x4cce0.
     *
     * See {uri}.
     *
     * Because these URIs cannot be meaningfully represented by the {URI} event,
     * this function emits no events.
     */
    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    /**
     * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(account != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);

        _balances[id][account] += amount;
        emit TransferSingle(operator, address(0), account, id, amount);

        _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
     * acceptance magic value.
     */
    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    /**
     * @dev Destroys `amount` tokens of token type `id` from `account`
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens of token type `id`.
     */
    function _burn(
        address account,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        uint256 accountBalance = _balances[id][account];
        require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][account] = accountBalance - amount;
        }

        emit TransferSingle(operator, account, address(0), id, amount);
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Requirements:
     *
     * - `ids` and `amounts` must have the same length.
     */
    function _burnBatch(
        address account,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(account != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, account, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 accountBalance = _balances[id][account];
            require(accountBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][account] = accountBalance - amount;
            }
        }

        emit TransferBatch(operator, account, address(0), ids, amounts);
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning, as well as batched variants.
     *
     * The same hook is called on both single and batched variants. For single
     * transfers, the length of the `id` and `amount` arrays will be 1.
     *
     * Calling conditions (for each `id` and `amount` pair):
     *
     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * of token type `id` will be  transferred to `to`.
     * - When `from` is zero, `amount` tokens of token type `id` will be minted
     * for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`
     * will be burned.
     * - `from` and `to` are never both zero.
     * - `ids` and `amounts` have the same, non-zero length.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver(to).onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}


pragma solidity ^0.8.0;
/**
 * @dev _Available since v3.1._
 */
interface IERC1155Receiver is IERC165 {
    /**
        @dev Handles the receipt of a single ERC1155 token type. This function is
        called at the end of a `safeTransferFrom` after the balance has been updated.
        To accept the transfer, this must return
        `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
        (i.e. 0xf23a6e61, or its own function selector).
        @param operator The address which initiated the transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param id The ID of the token being transferred
        @param value The amount of tokens being transferred
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
    */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
        @dev Handles the receipt of a multiple ERC1155 token types. This function
        is called at the end of a `safeBatchTransferFrom` after the balances have
        been updated. To accept the transfer(s), this must return
        `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
        (i.e. 0xbc197c81, or its own function selector).
        @param operator The address which initiated the batch transfer (i.e. msg.sender)
        @param from The address which previously owned the token
        @param ids An array containing ids of each token being transferred (order and length must match values array)
        @param values An array containing amounts of each token being transferred (order and length must match ids array)
        @param data Additional data with no specified format
        @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
    */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}


pragma solidity >=0.8.0 <0.9.0;

contract NFTerrariumDust is ERC1155, Ownable { 
    using Strings for uint256;

    //---------------[ Meta ]---------------\\
    string public name = "Pixie Dust";
    string public symbol = "DUST";
    string public contractMetaLink;

    //---------------[ TokenURI ]---------------\\
    string private baseURI; 
    string private baseExtension = ".json";

    //---------------[ Valid Dust ]---------------\\
    mapping (uint256 => bool) validDust;
    mapping (address => bool) dustUser;

    constructor(string memory _baseURI, string memory _contractMeta) ERC1155("Pixie Dust") {

        baseURI = _baseURI;
        contractMetaLink = _contractMeta;
        
        validDust[1] = true; 
        
    }

    //---------------[ Mint ]---------------\\
    function batchMint(uint256[] memory _ids, uint256[] memory _amount) external onlyOwner {
        _mintBatch(owner(), _ids, _amount, "");
    }

    function airdrop(address[] memory _recipients, uint256 _tokenType, uint256 _amount) external payable onlyOwner {

        validDust[_tokenType] = true;

        for(uint256 i = 0; i < _recipients.length; i++) {
            _mint(_recipients[i], _tokenType, _amount, "");
        }

    }

    //---------------[ Brun ]---------------\\
    function burnDust(uint256 _type, uint256 _amount, address _address) external { 
        require(dustUser[msg.sender] == true, "Invalid Dust User");
        _burn(_address, _type, _amount);
    }

    //---------------[ Public ]---------------\\
    function uri(uint256 tokenID) public view override returns (string memory) {
        require( validDust[tokenID], "URI requested for invalid serum type");

        return bytes(baseURI).length > 0 
            ? string(abi.encodePacked(baseURI, tokenID.toString(), baseExtension))
            : baseURI;

    }

    //---------------[ Only Owner ]---------------\\
    function updateBaseURI(string memory _uri) external onlyOwner {
        baseURI = _uri;
    }

    function updateBaseExtension(string memory _extension) external onlyOwner {
        baseExtension = _extension;
    }

    function updateContractURI(string memory _uri) external onlyOwner {
        contractMetaLink = _uri;
    }

    function contractURI() public view returns (string memory) {
        return contractMetaLink;
    }

    function removeDustUser(address _user) external onlyOwner {
        dustUser[_user] = false;
    }

    function addDustUser(address _user) external onlyOwner {
        dustUser[_user] = true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_baseURI","type":"string"},{"internalType":"string","name":"_contractMeta","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addDustUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_recipients","type":"address[]"},{"internalType":"uint256","name":"_tokenType","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_type","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"name":"burnDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractMetaLink","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeDustUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","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":"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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_extension","type":"string"}],"name":"updateBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"updateBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"updateContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040526040518060400160405280600a81526020017f5069786965204475737400000000000000000000000000000000000000000000815250600490816200004a91906200052a565b506040518060400160405280600481526020017f4455535400000000000000000000000000000000000000000000000000000000815250600590816200009191906200052a565b506040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525060089081620000d891906200052a565b50348015620000e657600080fd5b5060405162004d3938038062004d3983398181016040528101906200010c919062000775565b6040518060400160405280600a81526020017f50697869652044757374000000000000000000000000000000000000000000008152506200015381620001cd60201b60201c565b506200017462000168620001e260201b60201c565b620001ea60201b60201c565b81600790816200018591906200052a565b5080600690816200019791906200052a565b506001600960006001815260200190815260200160002060006101000a81548160ff0219169083151502179055505050620007fa565b8060029081620001de91906200052a565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200033257607f821691505b602082108103620003485762000347620002ea565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000373565b620003be868362000373565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200040b62000405620003ff84620003d6565b620003e0565b620003d6565b9050919050565b6000819050919050565b6200042783620003ea565b6200043f620004368262000412565b84845462000380565b825550505050565b600090565b6200045662000447565b620004638184846200041c565b505050565b5b818110156200048b576200047f6000826200044c565b60018101905062000469565b5050565b601f821115620004da57620004a4816200034e565b620004af8462000363565b81016020851015620004bf578190505b620004d7620004ce8562000363565b83018262000468565b50505b505050565b600082821c905092915050565b6000620004ff60001984600802620004df565b1980831691505092915050565b60006200051a8383620004ec565b9150826002028217905092915050565b6200053582620002b0565b67ffffffffffffffff811115620005515762000550620002bb565b5b6200055d825462000319565b6200056a8282856200048f565b600060209050601f831160018114620005a257600084156200058d578287015190505b6200059985826200050c565b86555062000609565b601f198416620005b2866200034e565b60005b82811015620005dc57848901518255600182019150602085019450602081019050620005b5565b86831015620005fc5784890151620005f8601f891682620004ec565b8355505b6001600288020188555050505b505050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6200064b826200062f565b810181811067ffffffffffffffff821117156200066d576200066c620002bb565b5b80604052505050565b60006200068262000611565b905062000690828262000640565b919050565b600067ffffffffffffffff821115620006b357620006b2620002bb565b5b620006be826200062f565b9050602081019050919050565b60005b83811015620006eb578082015181840152602081019050620006ce565b60008484015250505050565b60006200070e620007088462000695565b62000676565b9050828152602081018484840111156200072d576200072c6200062a565b5b6200073a848285620006cb565b509392505050565b600082601f8301126200075a576200075962000625565b5b81516200076c848260208601620006f7565b91505092915050565b600080604083850312156200078f576200078e6200061b565b5b600083015167ffffffffffffffff811115620007b057620007af62000620565b5b620007be8582860162000742565b925050602083015167ffffffffffffffff811115620007e257620007e162000620565b5b620007f08582860162000742565b9150509250929050565b61452f806200080a6000396000f3fe60806040526004361061013f5760003560e01c80637e5b1e24116100b6578063a496dedf1161006f578063a496dedf14610443578063e8a3d4851461045f578063e985e9c51461048a578063ed18dd64146104c7578063f242432a146104f0578063f2fde38b146105195761013f565b80637e5b1e24146103475780638252ac99146103705780638da5cb5b1461039b578063931688cb146103c657806395d89b41146103ef578063a22cb4651461041a5761013f565b80632eb2c2d6116101085780632eb2c2d61461024f5780633232c10b1461027857806337bb3975146102a15780634e1273f4146102ca578063688d223214610307578063715018a6146103305761013f565b8062fdd58e1461014457806301ffc9a71461018157806306fdde03146101be5780630e89341c146101e95780632738e85614610226575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612905565b610542565b6040516101789190612954565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a391906129c7565b61060a565b6040516101b59190612a0f565b60405180910390f35b3480156101ca57600080fd5b506101d36106ec565b6040516101e09190612aba565b60405180910390f35b3480156101f557600080fd5b50610210600480360381019061020b9190612adc565b61077a565b60405161021d9190612aba565b60405180910390f35b34801561023257600080fd5b5061024d60048036038101906102489190612b09565b6108b8565b005b34801561025b57600080fd5b5061027660048036038101906102719190612d33565b61098f565b005b34801561028457600080fd5b5061029f600480360381019061029a9190612ea3565b610a30565b005b3480156102ad57600080fd5b506102c860048036038101906102c39190612eec565b610abf565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190613002565b610b62565b6040516102fe9190613138565b60405180910390f35b34801561031357600080fd5b5061032e6004803603810190610329919061315a565b610c7b565b005b34801561033c57600080fd5b50610345610d1d565b005b34801561035357600080fd5b5061036e60048036038101906103699190612ea3565b610da5565b005b34801561037c57600080fd5b50610385610e34565b6040516103929190612aba565b60405180910390f35b3480156103a757600080fd5b506103b0610ec2565b6040516103bd91906131e1565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e89190612ea3565b610eec565b005b3480156103fb57600080fd5b50610404610f7b565b6040516104119190612aba565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190613228565b611009565b005b61045d60048036038101906104589190613268565b611189565b005b34801561046b57600080fd5b5061047461128b565b6040516104819190612aba565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906132d7565b61131d565b6040516104be9190612a0f565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e99190612b09565b6113b1565b005b3480156104fc57600080fd5b5061051760048036038101906105129190613317565b611488565b005b34801561052557600080fd5b50610540600480360381019061053b9190612b09565b611529565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990613420565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d557507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106e557506106e482611620565b5b9050919050565b600480546106f99061346f565b80601f01602080910402602001604051908101604052809291908181526020018280546107259061346f565b80156107725780601f1061074757610100808354040283529160200191610772565b820191906000526020600020905b81548152906001019060200180831161075557829003601f168201915b505050505081565b60606009600083815260200190815260200160002060009054906101000a900460ff166107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390613512565b60405180910390fd5b6000600780546107eb9061346f565b90501161088257600780546107ff9061346f565b80601f016020809104026020016040519081016040528092919081815260200182805461082b9061346f565b80156108785780601f1061084d57610100808354040283529160200191610878565b820191906000526020600020905b81548152906001019060200180831161085b57829003601f168201915b50505050506108b1565b600761088d8361168a565b60086040516020016108a193929190613606565b6040516020818303038152906040525b9050919050565b6108c06117ea565b73ffffffffffffffffffffffffffffffffffffffff166108de610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b90613683565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109976117ea565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109dd57506109dc856109d76117ea565b61131d565b5b610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390613715565b60405180910390fd5b610a2985858585856117f2565b5050505050565b610a386117ea565b73ffffffffffffffffffffffffffffffffffffffff16610a56610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa390613683565b60405180910390fd5b8060089081610abb91906138cc565b5050565b60011515600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b49906139ea565b60405180910390fd5b610b5d818484611b05565b505050565b60608151835114610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90613a7c565b60405180910390fd5b6000835167ffffffffffffffff811115610bc557610bc4612b3b565b5b604051908082528060200260200182016040528015610bf35781602001602082028036833780820191505090505b50905060005b8451811015610c7057610c40858281518110610c1857610c17613a9c565b5b6020026020010151858381518110610c3357610c32613a9c565b5b6020026020010151610542565b828281518110610c5357610c52613a9c565b5b60200260200101818152505080610c6990613afa565b9050610bf9565b508091505092915050565b610c836117ea565b73ffffffffffffffffffffffffffffffffffffffff16610ca1610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90613683565b60405180910390fd5b610d19610d02610ec2565b838360405180602001604052806000815250611d21565b5050565b610d256117ea565b73ffffffffffffffffffffffffffffffffffffffff16610d43610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090613683565b60405180910390fd5b610da36000611f3e565b565b610dad6117ea565b73ffffffffffffffffffffffffffffffffffffffff16610dcb610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890613683565b60405180910390fd5b8060069081610e3091906138cc565b5050565b60068054610e419061346f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6d9061346f565b8015610eba5780601f10610e8f57610100808354040283529160200191610eba565b820191906000526020600020905b815481529060010190602001808311610e9d57829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef46117ea565b73ffffffffffffffffffffffffffffffffffffffff16610f12610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90613683565b60405180910390fd5b8060079081610f7791906138cc565b5050565b60058054610f889061346f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb49061346f565b80156110015780601f10610fd657610100808354040283529160200191611001565b820191906000526020600020905b815481529060010190602001808311610fe457829003601f168201915b505050505081565b8173ffffffffffffffffffffffffffffffffffffffff166110286117ea565b73ffffffffffffffffffffffffffffffffffffffff160361107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590613bb4565b60405180910390fd5b806001600061108b6117ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111386117ea565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161117d9190612a0f565b60405180910390a35050565b6111916117ea565b73ffffffffffffffffffffffffffffffffffffffff166111af610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90613683565b60405180910390fd5b60016009600084815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b83518110156112855761127284828151811061125357611252613a9c565b5b6020026020010151848460405180602001604052806000815250612004565b808061127d90613afa565b915050611234565b50505050565b60606006805461129a9061346f565b80601f01602080910402602001604051908101604052809291908181526020018280546112c69061346f565b80156113135780601f106112e857610100808354040283529160200191611313565b820191906000526020600020905b8154815290600101906020018083116112f657829003601f168201915b5050505050905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113b96117ea565b73ffffffffffffffffffffffffffffffffffffffff166113d7610ec2565b73ffffffffffffffffffffffffffffffffffffffff161461142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142490613683565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6114906117ea565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806114d657506114d5856114d06117ea565b61131d565b5b611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c90613c46565b60405180910390fd5b6115228585858585612199565b5050505050565b6115316117ea565b73ffffffffffffffffffffffffffffffffffffffff1661154f610ec2565b73ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613683565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90613cd8565b60405180910390fd5b61161d81611f3e565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600082036116d1576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506117e5565b600082905060005b600082146117035780806116ec90613afa565b915050600a826116fc9190613d27565b91506116d9565b60008167ffffffffffffffff81111561171f5761171e612b3b565b5b6040519080825280601f01601f1916602001820160405280156117515781602001600182028036833780820191505090505b5090505b600085146117de5760018261176a9190613d58565b9150600a856117799190613d8c565b60306117859190613dbd565b60f81b81838151811061179b5761179a613a9c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856117d79190613d27565b9450611755565b8093505050505b919050565b600033905090565b8151835114611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d90613e63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613ef5565b60405180910390fd5b60006118af6117ea565b90506118bf81878787878761241a565b60005b8451811015611a705760008582815181106118e0576118df613a9c565b5b6020026020010151905060008583815181106118ff576118fe613a9c565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199790613f87565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a559190613dbd565b9250508190555050505080611a6990613afa565b90506118c2565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611ae7929190613fa7565b60405180910390a4611afd818787878787612422565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90614050565b60405180910390fd5b6000611b7e6117ea565b9050611bae81856000611b90876125f9565b611b99876125f9565b6040518060200160405280600081525061241a565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c906140e2565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611d12929190614102565b60405180910390a45050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d879061419d565b60405180910390fd5b8151835114611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb90613e63565b60405180910390fd5b6000611dde6117ea565b9050611def8160008787878761241a565b60005b8451811015611ea857838181518110611e0e57611e0d613a9c565b5b6020026020010151600080878481518110611e2c57611e2b613a9c565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e8e9190613dbd565b925050819055508080611ea090613afa565b915050611df2565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611f20929190613fa7565b60405180910390a4611f3781600087878787612422565b5050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9061419d565b60405180910390fd5b600061207d6117ea565b905061209e8160008761208f886125f9565b612098886125f9565b8761241a565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120fd9190613dbd565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161217b929190614102565b60405180910390a461219281600087878787612673565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90613ef5565b60405180910390fd5b60006122126117ea565b9050612232818787612223886125f9565b61222c886125f9565b8761241a565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156122c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c090613f87565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461237e9190613dbd565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516123fb929190614102565b60405180910390a4612411828888888888612673565b50505050505050565b505050505050565b6124418473ffffffffffffffffffffffffffffffffffffffff1661284a565b156125f1578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612487959493929190614212565b6020604051808303816000875af19250505080156124c357506040513d601f19601f820116820180604052508101906124c0919061428f565b60015b612568576124cf6142c9565b806308c379a00361252b57506124e36142eb565b806124ee575061252d565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125229190612aba565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255f906143ed565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e69061447f565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561261857612617612b3b565b5b6040519080825280602002602001820160405280156126465781602001602082028036833780820191505090505b509050828160008151811061265e5761265d613a9c565b5b60200260200101818152505080915050919050565b6126928473ffffffffffffffffffffffffffffffffffffffff1661284a565b15612842578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016126d895949392919061449f565b6020604051808303816000875af192505050801561271457506040513d601f19601f82011682018060405250810190612711919061428f565b60015b6127b9576127206142c9565b806308c379a00361277c57506127346142eb565b8061273f575061277e565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739190612aba565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b0906143ed565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612840576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128379061447f565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061289c82612871565b9050919050565b6128ac81612891565b81146128b757600080fd5b50565b6000813590506128c9816128a3565b92915050565b6000819050919050565b6128e2816128cf565b81146128ed57600080fd5b50565b6000813590506128ff816128d9565b92915050565b6000806040838503121561291c5761291b612867565b5b600061292a858286016128ba565b925050602061293b858286016128f0565b9150509250929050565b61294e816128cf565b82525050565b60006020820190506129696000830184612945565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129a48161296f565b81146129af57600080fd5b50565b6000813590506129c18161299b565b92915050565b6000602082840312156129dd576129dc612867565b5b60006129eb848285016129b2565b91505092915050565b60008115159050919050565b612a09816129f4565b82525050565b6000602082019050612a246000830184612a00565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a64578082015181840152602081019050612a49565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a8c82612a2a565b612a968185612a35565b9350612aa6818560208601612a46565b612aaf81612a70565b840191505092915050565b60006020820190508181036000830152612ad48184612a81565b905092915050565b600060208284031215612af257612af1612867565b5b6000612b00848285016128f0565b91505092915050565b600060208284031215612b1f57612b1e612867565b5b6000612b2d848285016128ba565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b7382612a70565b810181811067ffffffffffffffff82111715612b9257612b91612b3b565b5b80604052505050565b6000612ba561285d565b9050612bb18282612b6a565b919050565b600067ffffffffffffffff821115612bd157612bd0612b3b565b5b602082029050602081019050919050565b600080fd5b6000612bfa612bf584612bb6565b612b9b565b90508083825260208201905060208402830185811115612c1d57612c1c612be2565b5b835b81811015612c465780612c3288826128f0565b845260208401935050602081019050612c1f565b5050509392505050565b600082601f830112612c6557612c64612b36565b5b8135612c75848260208601612be7565b91505092915050565b600080fd5b600067ffffffffffffffff821115612c9e57612c9d612b3b565b5b612ca782612a70565b9050602081019050919050565b82818337600083830152505050565b6000612cd6612cd184612c83565b612b9b565b905082815260208101848484011115612cf257612cf1612c7e565b5b612cfd848285612cb4565b509392505050565b600082601f830112612d1a57612d19612b36565b5b8135612d2a848260208601612cc3565b91505092915050565b600080600080600060a08688031215612d4f57612d4e612867565b5b6000612d5d888289016128ba565b9550506020612d6e888289016128ba565b945050604086013567ffffffffffffffff811115612d8f57612d8e61286c565b5b612d9b88828901612c50565b935050606086013567ffffffffffffffff811115612dbc57612dbb61286c565b5b612dc888828901612c50565b925050608086013567ffffffffffffffff811115612de957612de861286c565b5b612df588828901612d05565b9150509295509295909350565b600067ffffffffffffffff821115612e1d57612e1c612b3b565b5b612e2682612a70565b9050602081019050919050565b6000612e46612e4184612e02565b612b9b565b905082815260208101848484011115612e6257612e61612c7e565b5b612e6d848285612cb4565b509392505050565b600082601f830112612e8a57612e89612b36565b5b8135612e9a848260208601612e33565b91505092915050565b600060208284031215612eb957612eb8612867565b5b600082013567ffffffffffffffff811115612ed757612ed661286c565b5b612ee384828501612e75565b91505092915050565b600080600060608486031215612f0557612f04612867565b5b6000612f13868287016128f0565b9350506020612f24868287016128f0565b9250506040612f35868287016128ba565b9150509250925092565b600067ffffffffffffffff821115612f5a57612f59612b3b565b5b602082029050602081019050919050565b6000612f7e612f7984612f3f565b612b9b565b90508083825260208201905060208402830185811115612fa157612fa0612be2565b5b835b81811015612fca5780612fb688826128ba565b845260208401935050602081019050612fa3565b5050509392505050565b600082601f830112612fe957612fe8612b36565b5b8135612ff9848260208601612f6b565b91505092915050565b6000806040838503121561301957613018612867565b5b600083013567ffffffffffffffff8111156130375761303661286c565b5b61304385828601612fd4565b925050602083013567ffffffffffffffff8111156130645761306361286c565b5b61307085828601612c50565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130af816128cf565b82525050565b60006130c183836130a6565b60208301905092915050565b6000602082019050919050565b60006130e58261307a565b6130ef8185613085565b93506130fa83613096565b8060005b8381101561312b57815161311288826130b5565b975061311d836130cd565b9250506001810190506130fe565b5085935050505092915050565b6000602082019050818103600083015261315281846130da565b905092915050565b6000806040838503121561317157613170612867565b5b600083013567ffffffffffffffff81111561318f5761318e61286c565b5b61319b85828601612c50565b925050602083013567ffffffffffffffff8111156131bc576131bb61286c565b5b6131c885828601612c50565b9150509250929050565b6131db81612891565b82525050565b60006020820190506131f660008301846131d2565b92915050565b613205816129f4565b811461321057600080fd5b50565b600081359050613222816131fc565b92915050565b6000806040838503121561323f5761323e612867565b5b600061324d858286016128ba565b925050602061325e85828601613213565b9150509250929050565b60008060006060848603121561328157613280612867565b5b600084013567ffffffffffffffff81111561329f5761329e61286c565b5b6132ab86828701612fd4565b93505060206132bc868287016128f0565b92505060406132cd868287016128f0565b9150509250925092565b600080604083850312156132ee576132ed612867565b5b60006132fc858286016128ba565b925050602061330d858286016128ba565b9150509250929050565b600080600080600060a0868803121561333357613332612867565b5b6000613341888289016128ba565b9550506020613352888289016128ba565b9450506040613363888289016128f0565b9350506060613374888289016128f0565b925050608086013567ffffffffffffffff8111156133955761339461286c565b5b6133a188828901612d05565b9150509295509295909350565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061340a602b83612a35565b9150613415826133ae565b604082019050919050565b60006020820190508181036000830152613439816133fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061348757607f821691505b60208210810361349a57613499613440565b5b50919050565b7f5552492072657175657374656420666f7220696e76616c696420736572756d2060008201527f7479706500000000000000000000000000000000000000000000000000000000602082015250565b60006134fc602483612a35565b9150613507826134a0565b604082019050919050565b6000602082019050818103600083015261352b816134ef565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461355f8161346f565b6135698186613532565b945060018216600081146135845760018114613599576135cc565b60ff19831686528115158202860193506135cc565b6135a28561353d565b60005b838110156135c4578154818901526001820191506020810190506135a5565b838801955050505b50505092915050565b60006135e082612a2a565b6135ea8185613532565b93506135fa818560208601612a46565b80840191505092915050565b60006136128286613552565b915061361e82856135d5565b915061362a8284613552565b9150819050949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061366d602083612a35565b915061367882613637565b602082019050919050565b6000602082019050818103600083015261369c81613660565b9050919050565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b60006136ff603283612a35565b915061370a826136a3565b604082019050919050565b6000602082019050818103600083015261372e816136f2565b9050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026137827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613745565b61378c8683613745565b95508019841693508086168417925050509392505050565b6000819050919050565b60006137c96137c46137bf846128cf565b6137a4565b6128cf565b9050919050565b6000819050919050565b6137e3836137ae565b6137f76137ef826137d0565b848454613752565b825550505050565b600090565b61380c6137ff565b6138178184846137da565b505050565b5b8181101561383b57613830600082613804565b60018101905061381d565b5050565b601f821115613880576138518161353d565b61385a84613735565b81016020851015613869578190505b61387d61387585613735565b83018261381c565b50505b505050565b600082821c905092915050565b60006138a360001984600802613885565b1980831691505092915050565b60006138bc8383613892565b9150826002028217905092915050565b6138d582612a2a565b67ffffffffffffffff8111156138ee576138ed612b3b565b5b6138f8825461346f565b61390382828561383f565b600060209050601f8311600181146139365760008415613924578287015190505b61392e85826138b0565b865550613996565b601f1984166139448661353d565b60005b8281101561396c57848901518255600182019150602085019450602081019050613947565b868310156139895784890151613985601f891682613892565b8355505b6001600288020188555050505b505050505050565b7f496e76616c696420447573742055736572000000000000000000000000000000600082015250565b60006139d4601183612a35565b91506139df8261399e565b602082019050919050565b60006020820190508181036000830152613a03816139c7565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000613a66602983612a35565b9150613a7182613a0a565b604082019050919050565b60006020820190508181036000830152613a9581613a59565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b05826128cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b3757613b36613acb565b5b600182019050919050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000613b9e602983612a35565b9150613ba982613b42565b604082019050919050565b60006020820190508181036000830152613bcd81613b91565b9050919050565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b6000613c30602983612a35565b9150613c3b82613bd4565b604082019050919050565b60006020820190508181036000830152613c5f81613c23565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cc2602683612a35565b9150613ccd82613c66565b604082019050919050565b60006020820190508181036000830152613cf181613cb5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d32826128cf565b9150613d3d836128cf565b925082613d4d57613d4c613cf8565b5b828204905092915050565b6000613d63826128cf565b9150613d6e836128cf565b9250828203905081811115613d8657613d85613acb565b5b92915050565b6000613d97826128cf565b9150613da2836128cf565b925082613db257613db1613cf8565b5b828206905092915050565b6000613dc8826128cf565b9150613dd3836128cf565b9250828201905080821115613deb57613dea613acb565b5b92915050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b6000613e4d602883612a35565b9150613e5882613df1565b604082019050919050565b60006020820190508181036000830152613e7c81613e40565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613edf602583612a35565b9150613eea82613e83565b604082019050919050565b60006020820190508181036000830152613f0e81613ed2565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000613f71602a83612a35565b9150613f7c82613f15565b604082019050919050565b60006020820190508181036000830152613fa081613f64565b9050919050565b60006040820190508181036000830152613fc181856130da565b90508181036020830152613fd581846130da565b90509392505050565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061403a602383612a35565b915061404582613fde565b604082019050919050565b600060208201905081810360008301526140698161402d565b9050919050565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006140cc602483612a35565b91506140d782614070565b604082019050919050565b600060208201905081810360008301526140fb816140bf565b9050919050565b60006040820190506141176000830185612945565b6141246020830184612945565b9392505050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614187602183612a35565b91506141928261412b565b604082019050919050565b600060208201905081810360008301526141b68161417a565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006141e4826141bd565b6141ee81856141c8565b93506141fe818560208601612a46565b61420781612a70565b840191505092915050565b600060a08201905061422760008301886131d2565b61423460208301876131d2565b818103604083015261424681866130da565b9050818103606083015261425a81856130da565b9050818103608083015261426e81846141d9565b90509695505050505050565b6000815190506142898161299b565b92915050565b6000602082840312156142a5576142a4612867565b5b60006142b38482850161427a565b91505092915050565b60008160e01c9050919050565b600060033d11156142e85760046000803e6142e56000516142bc565b90505b90565b600060443d10614378576142fd61285d565b60043d036004823e80513d602482011167ffffffffffffffff82111715614325575050614378565b808201805167ffffffffffffffff8111156143435750505050614378565b80602083010160043d038501811115614360575050505050614378565b61436f82602001850186612b6a565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b60006143d7603483612a35565b91506143e28261437b565b604082019050919050565b60006020820190508181036000830152614406816143ca565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000614469602883612a35565b91506144748261440d565b604082019050919050565b600060208201905081810360008301526144988161445c565b9050919050565b600060a0820190506144b460008301886131d2565b6144c160208301876131d2565b6144ce6040830186612945565b6144db6060830185612945565b81810360808301526144ed81846141d9565b9050969550505050505056fea2646970667358221220b11165374ef7f5c55b079f97cf936d586f38f062803b629b93d4b29a9794032064736f6c63430008100033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f6170692e6e6674657272617269756d2e78797a2f647573742f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f6170692e6e6674657272617269756d2e78797a2f636f6c6c656374696f6e2f647573742f0000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061013f5760003560e01c80637e5b1e24116100b6578063a496dedf1161006f578063a496dedf14610443578063e8a3d4851461045f578063e985e9c51461048a578063ed18dd64146104c7578063f242432a146104f0578063f2fde38b146105195761013f565b80637e5b1e24146103475780638252ac99146103705780638da5cb5b1461039b578063931688cb146103c657806395d89b41146103ef578063a22cb4651461041a5761013f565b80632eb2c2d6116101085780632eb2c2d61461024f5780633232c10b1461027857806337bb3975146102a15780634e1273f4146102ca578063688d223214610307578063715018a6146103305761013f565b8062fdd58e1461014457806301ffc9a71461018157806306fdde03146101be5780630e89341c146101e95780632738e85614610226575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612905565b610542565b6040516101789190612954565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a391906129c7565b61060a565b6040516101b59190612a0f565b60405180910390f35b3480156101ca57600080fd5b506101d36106ec565b6040516101e09190612aba565b60405180910390f35b3480156101f557600080fd5b50610210600480360381019061020b9190612adc565b61077a565b60405161021d9190612aba565b60405180910390f35b34801561023257600080fd5b5061024d60048036038101906102489190612b09565b6108b8565b005b34801561025b57600080fd5b5061027660048036038101906102719190612d33565b61098f565b005b34801561028457600080fd5b5061029f600480360381019061029a9190612ea3565b610a30565b005b3480156102ad57600080fd5b506102c860048036038101906102c39190612eec565b610abf565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190613002565b610b62565b6040516102fe9190613138565b60405180910390f35b34801561031357600080fd5b5061032e6004803603810190610329919061315a565b610c7b565b005b34801561033c57600080fd5b50610345610d1d565b005b34801561035357600080fd5b5061036e60048036038101906103699190612ea3565b610da5565b005b34801561037c57600080fd5b50610385610e34565b6040516103929190612aba565b60405180910390f35b3480156103a757600080fd5b506103b0610ec2565b6040516103bd91906131e1565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e89190612ea3565b610eec565b005b3480156103fb57600080fd5b50610404610f7b565b6040516104119190612aba565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190613228565b611009565b005b61045d60048036038101906104589190613268565b611189565b005b34801561046b57600080fd5b5061047461128b565b6040516104819190612aba565b60405180910390f35b34801561049657600080fd5b506104b160048036038101906104ac91906132d7565b61131d565b6040516104be9190612a0f565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e99190612b09565b6113b1565b005b3480156104fc57600080fd5b5061051760048036038101906105129190613317565b611488565b005b34801561052557600080fd5b50610540600480360381019061053b9190612b09565b611529565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a990613420565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106d557507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106e557506106e482611620565b5b9050919050565b600480546106f99061346f565b80601f01602080910402602001604051908101604052809291908181526020018280546107259061346f565b80156107725780601f1061074757610100808354040283529160200191610772565b820191906000526020600020905b81548152906001019060200180831161075557829003601f168201915b505050505081565b60606009600083815260200190815260200160002060009054906101000a900460ff166107dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d390613512565b60405180910390fd5b6000600780546107eb9061346f565b90501161088257600780546107ff9061346f565b80601f016020809104026020016040519081016040528092919081815260200182805461082b9061346f565b80156108785780601f1061084d57610100808354040283529160200191610878565b820191906000526020600020905b81548152906001019060200180831161085b57829003601f168201915b50505050506108b1565b600761088d8361168a565b60086040516020016108a193929190613606565b6040516020818303038152906040525b9050919050565b6108c06117ea565b73ffffffffffffffffffffffffffffffffffffffff166108de610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092b90613683565b60405180910390fd5b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109976117ea565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806109dd57506109dc856109d76117ea565b61131d565b5b610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390613715565b60405180910390fd5b610a2985858585856117f2565b5050505050565b610a386117ea565b73ffffffffffffffffffffffffffffffffffffffff16610a56610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa390613683565b60405180910390fd5b8060089081610abb91906138cc565b5050565b60011515600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b49906139ea565b60405180910390fd5b610b5d818484611b05565b505050565b60608151835114610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90613a7c565b60405180910390fd5b6000835167ffffffffffffffff811115610bc557610bc4612b3b565b5b604051908082528060200260200182016040528015610bf35781602001602082028036833780820191505090505b50905060005b8451811015610c7057610c40858281518110610c1857610c17613a9c565b5b6020026020010151858381518110610c3357610c32613a9c565b5b6020026020010151610542565b828281518110610c5357610c52613a9c565b5b60200260200101818152505080610c6990613afa565b9050610bf9565b508091505092915050565b610c836117ea565b73ffffffffffffffffffffffffffffffffffffffff16610ca1610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90613683565b60405180910390fd5b610d19610d02610ec2565b838360405180602001604052806000815250611d21565b5050565b610d256117ea565b73ffffffffffffffffffffffffffffffffffffffff16610d43610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9090613683565b60405180910390fd5b610da36000611f3e565b565b610dad6117ea565b73ffffffffffffffffffffffffffffffffffffffff16610dcb610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890613683565b60405180910390fd5b8060069081610e3091906138cc565b5050565b60068054610e419061346f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6d9061346f565b8015610eba5780601f10610e8f57610100808354040283529160200191610eba565b820191906000526020600020905b815481529060010190602001808311610e9d57829003601f168201915b505050505081565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef46117ea565b73ffffffffffffffffffffffffffffffffffffffff16610f12610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90613683565b60405180910390fd5b8060079081610f7791906138cc565b5050565b60058054610f889061346f565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb49061346f565b80156110015780601f10610fd657610100808354040283529160200191611001565b820191906000526020600020905b815481529060010190602001808311610fe457829003601f168201915b505050505081565b8173ffffffffffffffffffffffffffffffffffffffff166110286117ea565b73ffffffffffffffffffffffffffffffffffffffff160361107e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107590613bb4565b60405180910390fd5b806001600061108b6117ea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111386117ea565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161117d9190612a0f565b60405180910390a35050565b6111916117ea565b73ffffffffffffffffffffffffffffffffffffffff166111af610ec2565b73ffffffffffffffffffffffffffffffffffffffff1614611205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fc90613683565b60405180910390fd5b60016009600084815260200190815260200160002060006101000a81548160ff02191690831515021790555060005b83518110156112855761127284828151811061125357611252613a9c565b5b6020026020010151848460405180602001604052806000815250612004565b808061127d90613afa565b915050611234565b50505050565b60606006805461129a9061346f565b80601f01602080910402602001604051908101604052809291908181526020018280546112c69061346f565b80156113135780601f106112e857610100808354040283529160200191611313565b820191906000526020600020905b8154815290600101906020018083116112f657829003601f168201915b5050505050905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113b96117ea565b73ffffffffffffffffffffffffffffffffffffffff166113d7610ec2565b73ffffffffffffffffffffffffffffffffffffffff161461142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142490613683565b60405180910390fd5b6001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6114906117ea565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806114d657506114d5856114d06117ea565b61131d565b5b611515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150c90613c46565b60405180910390fd5b6115228585858585612199565b5050505050565b6115316117ea565b73ffffffffffffffffffffffffffffffffffffffff1661154f610ec2565b73ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c90613683565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160b90613cd8565b60405180910390fd5b61161d81611f3e565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6060600082036116d1576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506117e5565b600082905060005b600082146117035780806116ec90613afa565b915050600a826116fc9190613d27565b91506116d9565b60008167ffffffffffffffff81111561171f5761171e612b3b565b5b6040519080825280601f01601f1916602001820160405280156117515781602001600182028036833780820191505090505b5090505b600085146117de5760018261176a9190613d58565b9150600a856117799190613d8c565b60306117859190613dbd565b60f81b81838151811061179b5761179a613a9c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856117d79190613d27565b9450611755565b8093505050505b919050565b600033905090565b8151835114611836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182d90613e63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036118a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189c90613ef5565b60405180910390fd5b60006118af6117ea565b90506118bf81878787878761241a565b60005b8451811015611a705760008582815181106118e0576118df613a9c565b5b6020026020010151905060008583815181106118ff576118fe613a9c565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199790613f87565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a559190613dbd565b9250508190555050505080611a6990613afa565b90506118c2565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611ae7929190613fa7565b60405180910390a4611afd818787878787612422565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90614050565b60405180910390fd5b6000611b7e6117ea565b9050611bae81856000611b90876125f9565b611b99876125f9565b6040518060200160405280600081525061241a565b600080600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3c906140e2565b60405180910390fd5b82810360008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051611d12929190614102565b60405180910390a45050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d879061419d565b60405180910390fd5b8151835114611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb90613e63565b60405180910390fd5b6000611dde6117ea565b9050611def8160008787878761241a565b60005b8451811015611ea857838181518110611e0e57611e0d613a9c565b5b6020026020010151600080878481518110611e2c57611e2b613a9c565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e8e9190613dbd565b925050819055508080611ea090613afa565b915050611df2565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611f20929190613fa7565b60405180910390a4611f3781600087878787612422565b5050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9061419d565b60405180910390fd5b600061207d6117ea565b905061209e8160008761208f886125f9565b612098886125f9565b8761241a565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120fd9190613dbd565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62878760405161217b929190614102565b60405180910390a461219281600087878787612673565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ff90613ef5565b60405180910390fd5b60006122126117ea565b9050612232818787612223886125f9565b61222c886125f9565b8761241a565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050838110156122c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c090613f87565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461237e9190613dbd565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516123fb929190614102565b60405180910390a4612411828888888888612673565b50505050505050565b505050505050565b6124418473ffffffffffffffffffffffffffffffffffffffff1661284a565b156125f1578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612487959493929190614212565b6020604051808303816000875af19250505080156124c357506040513d601f19601f820116820180604052508101906124c0919061428f565b60015b612568576124cf6142c9565b806308c379a00361252b57506124e36142eb565b806124ee575061252d565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125229190612aba565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255f906143ed565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e69061447f565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561261857612617612b3b565b5b6040519080825280602002602001820160405280156126465781602001602082028036833780820191505090505b509050828160008151811061265e5761265d613a9c565b5b60200260200101818152505080915050919050565b6126928473ffffffffffffffffffffffffffffffffffffffff1661284a565b15612842578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016126d895949392919061449f565b6020604051808303816000875af192505050801561271457506040513d601f19601f82011682018060405250810190612711919061428f565b60015b6127b9576127206142c9565b806308c379a00361277c57506127346142eb565b8061273f575061277e565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127739190612aba565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b0906143ed565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612840576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128379061447f565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061289c82612871565b9050919050565b6128ac81612891565b81146128b757600080fd5b50565b6000813590506128c9816128a3565b92915050565b6000819050919050565b6128e2816128cf565b81146128ed57600080fd5b50565b6000813590506128ff816128d9565b92915050565b6000806040838503121561291c5761291b612867565b5b600061292a858286016128ba565b925050602061293b858286016128f0565b9150509250929050565b61294e816128cf565b82525050565b60006020820190506129696000830184612945565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6129a48161296f565b81146129af57600080fd5b50565b6000813590506129c18161299b565b92915050565b6000602082840312156129dd576129dc612867565b5b60006129eb848285016129b2565b91505092915050565b60008115159050919050565b612a09816129f4565b82525050565b6000602082019050612a246000830184612a00565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a64578082015181840152602081019050612a49565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a8c82612a2a565b612a968185612a35565b9350612aa6818560208601612a46565b612aaf81612a70565b840191505092915050565b60006020820190508181036000830152612ad48184612a81565b905092915050565b600060208284031215612af257612af1612867565b5b6000612b00848285016128f0565b91505092915050565b600060208284031215612b1f57612b1e612867565b5b6000612b2d848285016128ba565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b7382612a70565b810181811067ffffffffffffffff82111715612b9257612b91612b3b565b5b80604052505050565b6000612ba561285d565b9050612bb18282612b6a565b919050565b600067ffffffffffffffff821115612bd157612bd0612b3b565b5b602082029050602081019050919050565b600080fd5b6000612bfa612bf584612bb6565b612b9b565b90508083825260208201905060208402830185811115612c1d57612c1c612be2565b5b835b81811015612c465780612c3288826128f0565b845260208401935050602081019050612c1f565b5050509392505050565b600082601f830112612c6557612c64612b36565b5b8135612c75848260208601612be7565b91505092915050565b600080fd5b600067ffffffffffffffff821115612c9e57612c9d612b3b565b5b612ca782612a70565b9050602081019050919050565b82818337600083830152505050565b6000612cd6612cd184612c83565b612b9b565b905082815260208101848484011115612cf257612cf1612c7e565b5b612cfd848285612cb4565b509392505050565b600082601f830112612d1a57612d19612b36565b5b8135612d2a848260208601612cc3565b91505092915050565b600080600080600060a08688031215612d4f57612d4e612867565b5b6000612d5d888289016128ba565b9550506020612d6e888289016128ba565b945050604086013567ffffffffffffffff811115612d8f57612d8e61286c565b5b612d9b88828901612c50565b935050606086013567ffffffffffffffff811115612dbc57612dbb61286c565b5b612dc888828901612c50565b925050608086013567ffffffffffffffff811115612de957612de861286c565b5b612df588828901612d05565b9150509295509295909350565b600067ffffffffffffffff821115612e1d57612e1c612b3b565b5b612e2682612a70565b9050602081019050919050565b6000612e46612e4184612e02565b612b9b565b905082815260208101848484011115612e6257612e61612c7e565b5b612e6d848285612cb4565b509392505050565b600082601f830112612e8a57612e89612b36565b5b8135612e9a848260208601612e33565b91505092915050565b600060208284031215612eb957612eb8612867565b5b600082013567ffffffffffffffff811115612ed757612ed661286c565b5b612ee384828501612e75565b91505092915050565b600080600060608486031215612f0557612f04612867565b5b6000612f13868287016128f0565b9350506020612f24868287016128f0565b9250506040612f35868287016128ba565b9150509250925092565b600067ffffffffffffffff821115612f5a57612f59612b3b565b5b602082029050602081019050919050565b6000612f7e612f7984612f3f565b612b9b565b90508083825260208201905060208402830185811115612fa157612fa0612be2565b5b835b81811015612fca5780612fb688826128ba565b845260208401935050602081019050612fa3565b5050509392505050565b600082601f830112612fe957612fe8612b36565b5b8135612ff9848260208601612f6b565b91505092915050565b6000806040838503121561301957613018612867565b5b600083013567ffffffffffffffff8111156130375761303661286c565b5b61304385828601612fd4565b925050602083013567ffffffffffffffff8111156130645761306361286c565b5b61307085828601612c50565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130af816128cf565b82525050565b60006130c183836130a6565b60208301905092915050565b6000602082019050919050565b60006130e58261307a565b6130ef8185613085565b93506130fa83613096565b8060005b8381101561312b57815161311288826130b5565b975061311d836130cd565b9250506001810190506130fe565b5085935050505092915050565b6000602082019050818103600083015261315281846130da565b905092915050565b6000806040838503121561317157613170612867565b5b600083013567ffffffffffffffff81111561318f5761318e61286c565b5b61319b85828601612c50565b925050602083013567ffffffffffffffff8111156131bc576131bb61286c565b5b6131c885828601612c50565b9150509250929050565b6131db81612891565b82525050565b60006020820190506131f660008301846131d2565b92915050565b613205816129f4565b811461321057600080fd5b50565b600081359050613222816131fc565b92915050565b6000806040838503121561323f5761323e612867565b5b600061324d858286016128ba565b925050602061325e85828601613213565b9150509250929050565b60008060006060848603121561328157613280612867565b5b600084013567ffffffffffffffff81111561329f5761329e61286c565b5b6132ab86828701612fd4565b93505060206132bc868287016128f0565b92505060406132cd868287016128f0565b9150509250925092565b600080604083850312156132ee576132ed612867565b5b60006132fc858286016128ba565b925050602061330d858286016128ba565b9150509250929050565b600080600080600060a0868803121561333357613332612867565b5b6000613341888289016128ba565b9550506020613352888289016128ba565b9450506040613363888289016128f0565b9350506060613374888289016128f0565b925050608086013567ffffffffffffffff8111156133955761339461286c565b5b6133a188828901612d05565b9150509295509295909350565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061340a602b83612a35565b9150613415826133ae565b604082019050919050565b60006020820190508181036000830152613439816133fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061348757607f821691505b60208210810361349a57613499613440565b5b50919050565b7f5552492072657175657374656420666f7220696e76616c696420736572756d2060008201527f7479706500000000000000000000000000000000000000000000000000000000602082015250565b60006134fc602483612a35565b9150613507826134a0565b604082019050919050565b6000602082019050818103600083015261352b816134ef565b9050919050565b600081905092915050565b60008190508160005260206000209050919050565b6000815461355f8161346f565b6135698186613532565b945060018216600081146135845760018114613599576135cc565b60ff19831686528115158202860193506135cc565b6135a28561353d565b60005b838110156135c4578154818901526001820191506020810190506135a5565b838801955050505b50505092915050565b60006135e082612a2a565b6135ea8185613532565b93506135fa818560208601612a46565b80840191505092915050565b60006136128286613552565b915061361e82856135d5565b915061362a8284613552565b9150819050949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061366d602083612a35565b915061367882613637565b602082019050919050565b6000602082019050818103600083015261369c81613660565b9050919050565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b60006136ff603283612a35565b915061370a826136a3565b604082019050919050565b6000602082019050818103600083015261372e816136f2565b9050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026137827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613745565b61378c8683613745565b95508019841693508086168417925050509392505050565b6000819050919050565b60006137c96137c46137bf846128cf565b6137a4565b6128cf565b9050919050565b6000819050919050565b6137e3836137ae565b6137f76137ef826137d0565b848454613752565b825550505050565b600090565b61380c6137ff565b6138178184846137da565b505050565b5b8181101561383b57613830600082613804565b60018101905061381d565b5050565b601f821115613880576138518161353d565b61385a84613735565b81016020851015613869578190505b61387d61387585613735565b83018261381c565b50505b505050565b600082821c905092915050565b60006138a360001984600802613885565b1980831691505092915050565b60006138bc8383613892565b9150826002028217905092915050565b6138d582612a2a565b67ffffffffffffffff8111156138ee576138ed612b3b565b5b6138f8825461346f565b61390382828561383f565b600060209050601f8311600181146139365760008415613924578287015190505b61392e85826138b0565b865550613996565b601f1984166139448661353d565b60005b8281101561396c57848901518255600182019150602085019450602081019050613947565b868310156139895784890151613985601f891682613892565b8355505b6001600288020188555050505b505050505050565b7f496e76616c696420447573742055736572000000000000000000000000000000600082015250565b60006139d4601183612a35565b91506139df8261399e565b602082019050919050565b60006020820190508181036000830152613a03816139c7565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b6000613a66602983612a35565b9150613a7182613a0a565b604082019050919050565b60006020820190508181036000830152613a9581613a59565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b05826128cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b3757613b36613acb565b5b600182019050919050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000613b9e602983612a35565b9150613ba982613b42565b604082019050919050565b60006020820190508181036000830152613bcd81613b91565b9050919050565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b6000613c30602983612a35565b9150613c3b82613bd4565b604082019050919050565b60006020820190508181036000830152613c5f81613c23565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613cc2602683612a35565b9150613ccd82613c66565b604082019050919050565b60006020820190508181036000830152613cf181613cb5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d32826128cf565b9150613d3d836128cf565b925082613d4d57613d4c613cf8565b5b828204905092915050565b6000613d63826128cf565b9150613d6e836128cf565b9250828203905081811115613d8657613d85613acb565b5b92915050565b6000613d97826128cf565b9150613da2836128cf565b925082613db257613db1613cf8565b5b828206905092915050565b6000613dc8826128cf565b9150613dd3836128cf565b9250828201905080821115613deb57613dea613acb565b5b92915050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b6000613e4d602883612a35565b9150613e5882613df1565b604082019050919050565b60006020820190508181036000830152613e7c81613e40565b9050919050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613edf602583612a35565b9150613eea82613e83565b604082019050919050565b60006020820190508181036000830152613f0e81613ed2565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000613f71602a83612a35565b9150613f7c82613f15565b604082019050919050565b60006020820190508181036000830152613fa081613f64565b9050919050565b60006040820190508181036000830152613fc181856130da565b90508181036020830152613fd581846130da565b90509392505050565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061403a602383612a35565b915061404582613fde565b604082019050919050565b600060208201905081810360008301526140698161402d565b9050919050565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b60006140cc602483612a35565b91506140d782614070565b604082019050919050565b600060208201905081810360008301526140fb816140bf565b9050919050565b60006040820190506141176000830185612945565b6141246020830184612945565b9392505050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614187602183612a35565b91506141928261412b565b604082019050919050565b600060208201905081810360008301526141b68161417a565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006141e4826141bd565b6141ee81856141c8565b93506141fe818560208601612a46565b61420781612a70565b840191505092915050565b600060a08201905061422760008301886131d2565b61423460208301876131d2565b818103604083015261424681866130da565b9050818103606083015261425a81856130da565b9050818103608083015261426e81846141d9565b90509695505050505050565b6000815190506142898161299b565b92915050565b6000602082840312156142a5576142a4612867565b5b60006142b38482850161427a565b91505092915050565b60008160e01c9050919050565b600060033d11156142e85760046000803e6142e56000516142bc565b90505b90565b600060443d10614378576142fd61285d565b60043d036004823e80513d602482011167ffffffffffffffff82111715614325575050614378565b808201805167ffffffffffffffff8111156143435750505050614378565b80602083010160043d038501811115614360575050505050614378565b61436f82602001850186612b6a565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b60006143d7603483612a35565b91506143e28261437b565b604082019050919050565b60006020820190508181036000830152614406816143ca565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000614469602883612a35565b91506144748261440d565b604082019050919050565b600060208201905081810360008301526144988161445c565b9050919050565b600060a0820190506144b460008301886131d2565b6144c160208301876131d2565b6144ce6040830186612945565b6144db6060830185612945565b81810360808301526144ed81846141d9565b9050969550505050505056fea2646970667358221220b11165374ef7f5c55b079f97cf936d586f38f062803b629b93d4b29a9794032064736f6c63430008100033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002168747470733a2f2f6170692e6e6674657272617269756d2e78797a2f647573742f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68747470733a2f2f6170692e6e6674657272617269756d2e78797a2f636f6c6c656374696f6e2f647573742f0000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _baseURI (string): https://api.nfterrarium.xyz/dust/
Arg [1] : _contractMeta (string): https://api.nfterrarium.xyz/collection/dust/

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000021
Arg [3] : 68747470733a2f2f6170692e6e6674657272617269756d2e78797a2f64757374
Arg [4] : 2f00000000000000000000000000000000000000000000000000000000000000
Arg [5] : 000000000000000000000000000000000000000000000000000000000000002c
Arg [6] : 68747470733a2f2f6170692e6e6674657272617269756d2e78797a2f636f6c6c
Arg [7] : 656374696f6e2f647573742f0000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

37485:2595:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21788:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20811:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37620:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39037:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39871:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23883:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39519:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38782:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22185:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38279:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12989:94;;;;;;;;;;;;;:::i;:::-;;39646:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37696:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12338:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39416:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37660:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22782:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38431:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39762:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23165:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39979:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23405:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13238:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21788:231;21874:7;21921:1;21902:21;;:7;:21;;;21894:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;21989:9;:13;21999:2;21989:13;;;;;;;;;;;:22;22003:7;21989:22;;;;;;;;;;;;;;;;21982:29;;21788:231;;;;:::o;20811:310::-;20913:4;20965:26;20950:41;;;:11;:41;;;;:110;;;;21023:37;21008:52;;;:11;:52;;;;20950:110;:163;;;;21077:36;21101:11;21077:23;:36::i;:::-;20950:163;20930:183;;20811:310;;;:::o;37620:33::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;39037:317::-;39097:13;39132:9;:18;39142:7;39132:18;;;;;;;;;;;;;;;;;;;;;39123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39235:1;39217:7;39211:21;;;;;:::i;:::-;;;:25;:133;;39337:7;39211:133;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39277:7;39286:18;:7;:16;:18::i;:::-;39306:13;39260:60;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;39211:133;39204:140;;39037:317;;;:::o;39871:100::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39958:5:::1;39940:8;:15;39949:5;39940:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;39871:100:::0;:::o;23883:442::-;24124:12;:10;:12::i;:::-;24116:20;;:4;:20;;;:60;;;;24140:36;24157:4;24163:12;:10;:12::i;:::-;24140:16;:36::i;:::-;24116:60;24094:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;24265:52;24288:4;24294:2;24298:3;24303:7;24312:4;24265:22;:52::i;:::-;23883:442;;;;;:::o;39519:119::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39620:10:::1;39604:13;:26;;;;;;:::i;:::-;;39519:119:::0;:::o;38782:197::-;38903:4;38879:28;;:8;:20;38888:10;38879:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;38871:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;38940:31;38946:8;38956:5;38963:7;38940:5;:31::i;:::-;38782:197;;;:::o;22185:524::-;22341:16;22402:3;:10;22383:8;:15;:29;22375:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;22471:30;22518:8;:15;22504:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22471:63;;22552:9;22547:122;22571:8;:15;22567:1;:19;22547:122;;;22627:30;22637:8;22646:1;22637:11;;;;;;;;:::i;:::-;;;;;;;;22650:3;22654:1;22650:6;;;;;;;;:::i;:::-;;;;;;;;22627:9;:30::i;:::-;22608:13;22622:1;22608:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;22588:3;;;;:::i;:::-;;;22547:122;;;;22688:13;22681:20;;;22185:524;;;;:::o;38279:144::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38377:38:::1;38388:7;:5;:7::i;:::-;38397:4;38403:7;38377:38;;;;;;;;;;;::::0;:10:::1;:38::i;:::-;38279:144:::0;;:::o;12989:94::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13054:21:::1;13072:1;13054:9;:21::i;:::-;12989:94::o:0;39646:108::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39742:4:::1;39723:16;:23;;;;;;:::i;:::-;;39646:108:::0;:::o;37696:30::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12338:87::-;12384:7;12411:6;;;;;;;;;;;12404:13;;12338:87;:::o;39416:95::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39499:4:::1;39489:7;:14;;;;;;:::i;:::-;;39416:95:::0;:::o;37660:29::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22782:311::-;22901:8;22885:24;;:12;:10;:12::i;:::-;:24;;;22877:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;23013:8;22968:18;:32;22987:12;:10;:12::i;:::-;22968:32;;;;;;;;;;;;;;;:42;23001:8;22968:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;23066:8;23037:48;;23052:12;:10;:12::i;:::-;23037:48;;;23076:8;23037:48;;;;;;:::i;:::-;;;;;;;;22782:311;;:::o;38431:295::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38579:4:::1;38555:9;:21;38565:10;38555:21;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38600:9;38596:121;38619:11;:18;38615:1;:22;38596:121;;;38659:46;38665:11;38677:1;38665:14;;;;;;;;:::i;:::-;;;;;;;;38681:10;38693:7;38659:46;;;;;;;;;;;::::0;:5:::1;:46::i;:::-;38639:3;;;;;:::i;:::-;;;;38596:121;;;;38431:295:::0;;;:::o;39762:101::-;39806:13;39839:16;39832:23;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39762:101;:::o;23165:168::-;23264:4;23288:18;:27;23307:7;23288:27;;;;;;;;;;;;;;;:37;23316:8;23288:37;;;;;;;;;;;;;;;;;;;;;;;;;23281:44;;23165:168;;;;:::o;39979:96::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40063:4:::1;40045:8;:15;40054:5;40045:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;39979:96:::0;:::o;23405:401::-;23621:12;:10;:12::i;:::-;23613:20;;:4;:20;;;:60;;;;23637:36;23654:4;23660:12;:10;:12::i;:::-;23637:16;:36::i;:::-;23613:60;23591:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;23753:45;23771:4;23777:2;23781;23785:6;23793:4;23753:17;:45::i;:::-;23405:401;;;;;:::o;13238:192::-;12569:12;:10;:12::i;:::-;12558:23;;:7;:5;:7::i;:::-;:23;;;12550:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13347:1:::1;13327:22;;:8;:22;;::::0;13319:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13403:19;13413:8;13403:9;:19::i;:::-;13238:192:::0;:::o;15120:157::-;15205:4;15244:25;15229:40;;;:11;:40;;;;15222:47;;15120:157;;;:::o;663:723::-;719:13;949:1;940:5;:10;936:53;;967:10;;;;;;;;;;;;;;;;;;;;;936:53;999:12;1014:5;999:20;;1030:14;1055:78;1070:1;1062:4;:9;1055:78;;1088:8;;;;;:::i;:::-;;;;1119:2;1111:10;;;;;:::i;:::-;;;1055:78;;;1143:19;1175:6;1165:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1143:39;;1193:154;1209:1;1200:5;:10;1193:154;;1237:1;1227:11;;;;;:::i;:::-;;;1304:2;1296:5;:10;;;;:::i;:::-;1283:2;:24;;;;:::i;:::-;1270:39;;1253:6;1260;1253:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1333:2;1324:11;;;;;:::i;:::-;;;1193:154;;;1371:6;1357:21;;;;;663:723;;;;:::o;11134:98::-;11187:7;11214:10;11207:17;;11134:98;:::o;25967:1074::-;26194:7;:14;26180:3;:10;:28;26172:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26286:1;26272:16;;:2;:16;;;26264:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26343:16;26362:12;:10;:12::i;:::-;26343:31;;26387:60;26408:8;26418:4;26424:2;26428:3;26433:7;26442:4;26387:20;:60::i;:::-;26465:9;26460:421;26484:3;:10;26480:1;:14;26460:421;;;26516:10;26529:3;26533:1;26529:6;;;;;;;;:::i;:::-;;;;;;;;26516:19;;26550:14;26567:7;26575:1;26567:10;;;;;;;;:::i;:::-;;;;;;;;26550:27;;26594:19;26616:9;:13;26626:2;26616:13;;;;;;;;;;;:19;26630:4;26616:19;;;;;;;;;;;;;;;;26594:41;;26673:6;26658:11;:21;;26650:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26806:6;26792:11;:20;26770:9;:13;26780:2;26770:13;;;;;;;;;;;:19;26784:4;26770:19;;;;;;;;;;;;;;;:42;;;;26863:6;26842:9;:13;26852:2;26842:13;;;;;;;;;;;:17;26856:2;26842:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;26501:380;;;26496:3;;;;:::i;:::-;;;26460:421;;;;26928:2;26898:47;;26922:4;26898:47;;26912:8;26898:47;;;26932:3;26937:7;26898:47;;;;;;;:::i;:::-;;;;;;;;26958:75;26994:8;27004:4;27010:2;27014:3;27019:7;27028:4;26958:35;:75::i;:::-;26161:880;25967:1074;;;;;:::o;30323:675::-;30472:1;30453:21;;:7;:21;;;30445:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;30527:16;30546:12;:10;:12::i;:::-;30527:31;;30571:105;30592:8;30602:7;30619:1;30623:21;30641:2;30623:17;:21::i;:::-;30646:25;30664:6;30646:17;:25::i;:::-;30571:105;;;;;;;;;;;;:20;:105::i;:::-;30689:22;30714:9;:13;30724:2;30714:13;;;;;;;;;;;:22;30728:7;30714:22;;;;;;;;;;;;;;;;30689:47;;30773:6;30755:14;:24;;30747:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30898:6;30881:14;:23;30856:9;:13;30866:2;30856:13;;;;;;;;;;;:22;30870:7;30856:22;;;;;;;;;;;;;;;:48;;;;30975:1;30933:57;;30958:7;30933:57;;30948:8;30933:57;;;30979:2;30983:6;30933:57;;;;;;;:::i;:::-;;;;;;;;30434:564;;30323:675;;;:::o;29329:735::-;29521:1;29507:16;;:2;:16;;;29499:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;29594:7;:14;29580:3;:10;:28;29572:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;29666:16;29685:12;:10;:12::i;:::-;29666:31;;29710:66;29731:8;29749:1;29753:2;29757:3;29762:7;29771:4;29710:20;:66::i;:::-;29794:9;29789:103;29813:3;:10;29809:1;:14;29789:103;;;29870:7;29878:1;29870:10;;;;;;;;:::i;:::-;;;;;;;;29845:9;:17;29855:3;29859:1;29855:6;;;;;;;;:::i;:::-;;;;;;;;29845:17;;;;;;;;;;;:21;29863:2;29845:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;29825:3;;;;;:::i;:::-;;;;29789:103;;;;29945:2;29909:53;;29941:1;29909:53;;29923:8;29909:53;;;29949:3;29954:7;29909:53;;;;;;;:::i;:::-;;;;;;;;29975:81;30011:8;30029:1;30033:2;30037:3;30042:7;30051:4;29975:35;:81::i;:::-;29488:576;29329:735;;;;:::o;13438:173::-;13494:16;13513:6;;;;;;;;;;;13494:25;;13539:8;13530:6;;:17;;;;;;;;;;;;;;;;;;13594:8;13563:40;;13584:8;13563:40;;;;;;;;;;;;13483:128;13438:173;:::o;28374:599::-;28551:1;28532:21;;:7;:21;;;28524:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28604:16;28623:12;:10;:12::i;:::-;28604:31;;28648:107;28669:8;28687:1;28691:7;28700:21;28718:2;28700:17;:21::i;:::-;28723:25;28741:6;28723:17;:25::i;:::-;28750:4;28648:20;:107::i;:::-;28794:6;28768:9;:13;28778:2;28768:13;;;;;;;;;;;:22;28782:7;28768:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;28853:7;28816:57;;28849:1;28816:57;;28831:8;28816:57;;;28862:2;28866:6;28816:57;;;;;;;:::i;:::-;;;;;;;;28886:79;28917:8;28935:1;28939:7;28948:2;28952:6;28960:4;28886:30;:79::i;:::-;28513:460;28374:599;;;;:::o;24789:820::-;24991:1;24977:16;;:2;:16;;;24969:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25048:16;25067:12;:10;:12::i;:::-;25048:31;;25092:96;25113:8;25123:4;25129:2;25133:21;25151:2;25133:17;:21::i;:::-;25156:25;25174:6;25156:17;:25::i;:::-;25183:4;25092:20;:96::i;:::-;25201:19;25223:9;:13;25233:2;25223:13;;;;;;;;;;;:19;25237:4;25223:19;;;;;;;;;;;;;;;;25201:41;;25276:6;25261:11;:21;;25253:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25401:6;25387:11;:20;25365:9;:13;25375:2;25365:13;;;;;;;;;;;:19;25379:4;25365:19;;;;;;;;;;;;;;;:42;;;;25450:6;25429:9;:13;25439:2;25429:13;;;;;;;;;;;:17;25443:2;25429:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;25505:2;25474:46;;25499:4;25474:46;;25489:8;25474:46;;;25509:2;25513:6;25474:46;;;;;;;:::i;:::-;;;;;;;;25533:68;25564:8;25574:4;25580:2;25584;25588:6;25596:4;25533:30;:68::i;:::-;24958:651;;24789:820;;;;;:::o;33075:221::-;;;;;;;:::o;34060:817::-;34300:15;:2;:13;;;:15::i;:::-;34296:574;;;34353:2;34336:43;;;34380:8;34390:4;34396:3;34401:7;34410:4;34336:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34332:527;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;34732:6;34725:14;;;;;;;;;;;:::i;:::-;;;;;;;;34332:527;;;34781:62;;;;;;;;;;:::i;:::-;;;;;;;;34332:527;34509:52;;;34497:64;;;:8;:64;;;;34493:163;;34586:50;;;;;;;;;;:::i;:::-;;;;;;;;34493:163;34416:255;34296:574;34060:817;;;;;;:::o;34885:198::-;34951:16;34980:22;35019:1;35005:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34980:41;;35043:7;35032:5;35038:1;35032:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;35070:5;35063:12;;;34885:198;;;:::o;33304:748::-;33519:15;:2;:13;;;:15::i;:::-;33515:530;;;33572:2;33555:38;;;33594:8;33604:4;33610:2;33614:6;33622:4;33555:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;33551:483;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;33907:6;33900:14;;;;;;;;;;;:::i;:::-;;;;;;;;33551:483;;;33956:62;;;;;;;;;;:::i;:::-;;;;;;;;33551:483;33689:47;;;33677:59;;;:8;:59;;;;33673:158;;33761:50;;;;;;;;;;:::i;:::-;;;;;;;;33673:158;33628:218;33515:530;33304:748;;;;;;:::o;3184:387::-;3244:4;3452:12;3519:7;3507:20;3499:28;;3562:1;3555:4;:8;3548:15;;;3184:387;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:149::-;2065:7;2105:66;2098:5;2094:78;2083:89;;2029:149;;;:::o;2184:120::-;2256:23;2273:5;2256:23;:::i;:::-;2249:5;2246:34;2236:62;;2294:1;2291;2284:12;2236:62;2184:120;:::o;2310:137::-;2355:5;2393:6;2380:20;2371:29;;2409:32;2435:5;2409:32;:::i;:::-;2310:137;;;;:::o;2453:327::-;2511:6;2560:2;2548:9;2539:7;2535:23;2531:32;2528:119;;;2566:79;;:::i;:::-;2528:119;2686:1;2711:52;2755:7;2746:6;2735:9;2731:22;2711:52;:::i;:::-;2701:62;;2657:116;2453:327;;;;:::o;2786:90::-;2820:7;2863:5;2856:13;2849:21;2838:32;;2786:90;;;:::o;2882:109::-;2963:21;2978:5;2963:21;:::i;:::-;2958:3;2951:34;2882:109;;:::o;2997:210::-;3084:4;3122:2;3111:9;3107:18;3099:26;;3135:65;3197:1;3186:9;3182:17;3173:6;3135:65;:::i;:::-;2997:210;;;;:::o;3213:99::-;3265:6;3299:5;3293:12;3283:22;;3213:99;;;:::o;3318:169::-;3402:11;3436:6;3431:3;3424:19;3476:4;3471:3;3467:14;3452:29;;3318:169;;;;:::o;3493:246::-;3574:1;3584:113;3598:6;3595:1;3592:13;3584:113;;;3683:1;3678:3;3674:11;3668:18;3664:1;3659:3;3655:11;3648:39;3620:2;3617:1;3613:10;3608:15;;3584:113;;;3731:1;3722:6;3717:3;3713:16;3706:27;3555:184;3493:246;;;:::o;3745:102::-;3786:6;3837:2;3833:7;3828:2;3821:5;3817:14;3813:28;3803:38;;3745:102;;;:::o;3853:377::-;3941:3;3969:39;4002:5;3969:39;:::i;:::-;4024:71;4088:6;4083:3;4024:71;:::i;:::-;4017:78;;4104:65;4162:6;4157:3;4150:4;4143:5;4139:16;4104:65;:::i;:::-;4194:29;4216:6;4194:29;:::i;:::-;4189:3;4185:39;4178:46;;3945:285;3853:377;;;;:::o;4236:313::-;4349:4;4387:2;4376:9;4372:18;4364:26;;4436:9;4430:4;4426:20;4422:1;4411:9;4407:17;4400:47;4464:78;4537:4;4528:6;4464:78;:::i;:::-;4456:86;;4236:313;;;;:::o;4555:329::-;4614:6;4663:2;4651:9;4642:7;4638:23;4634:32;4631:119;;;4669:79;;:::i;:::-;4631:119;4789:1;4814:53;4859:7;4850:6;4839:9;4835:22;4814:53;:::i;:::-;4804:63;;4760:117;4555:329;;;;:::o;4890:::-;4949:6;4998:2;4986:9;4977:7;4973:23;4969:32;4966:119;;;5004:79;;:::i;:::-;4966:119;5124:1;5149:53;5194:7;5185:6;5174:9;5170:22;5149:53;:::i;:::-;5139:63;;5095:117;4890:329;;;;:::o;5225:117::-;5334:1;5331;5324:12;5348:180;5396:77;5393:1;5386:88;5493:4;5490:1;5483:15;5517:4;5514:1;5507:15;5534:281;5617:27;5639:4;5617:27;:::i;:::-;5609:6;5605:40;5747:6;5735:10;5732:22;5711:18;5699:10;5696:34;5693:62;5690:88;;;5758:18;;:::i;:::-;5690:88;5798:10;5794:2;5787:22;5577:238;5534:281;;:::o;5821:129::-;5855:6;5882:20;;:::i;:::-;5872:30;;5911:33;5939:4;5931:6;5911:33;:::i;:::-;5821:129;;;:::o;5956:311::-;6033:4;6123:18;6115:6;6112:30;6109:56;;;6145:18;;:::i;:::-;6109:56;6195:4;6187:6;6183:17;6175:25;;6255:4;6249;6245:15;6237:23;;5956:311;;;:::o;6273:117::-;6382:1;6379;6372:12;6413:710;6509:5;6534:81;6550:64;6607:6;6550:64;:::i;:::-;6534:81;:::i;:::-;6525:90;;6635:5;6664:6;6657:5;6650:21;6698:4;6691:5;6687:16;6680:23;;6751:4;6743:6;6739:17;6731:6;6727:30;6780:3;6772:6;6769:15;6766:122;;;6799:79;;:::i;:::-;6766:122;6914:6;6897:220;6931:6;6926:3;6923:15;6897:220;;;7006:3;7035:37;7068:3;7056:10;7035:37;:::i;:::-;7030:3;7023:50;7102:4;7097:3;7093:14;7086:21;;6973:144;6957:4;6952:3;6948:14;6941:21;;6897:220;;;6901:21;6515:608;;6413:710;;;;;:::o;7146:370::-;7217:5;7266:3;7259:4;7251:6;7247:17;7243:27;7233:122;;7274:79;;:::i;:::-;7233:122;7391:6;7378:20;7416:94;7506:3;7498:6;7491:4;7483:6;7479:17;7416:94;:::i;:::-;7407:103;;7223:293;7146:370;;;;:::o;7522:117::-;7631:1;7628;7621:12;7645:307;7706:4;7796:18;7788:6;7785:30;7782:56;;;7818:18;;:::i;:::-;7782:56;7856:29;7878:6;7856:29;:::i;:::-;7848:37;;7940:4;7934;7930:15;7922:23;;7645:307;;;:::o;7958:146::-;8055:6;8050:3;8045;8032:30;8096:1;8087:6;8082:3;8078:16;8071:27;7958:146;;;:::o;8110:423::-;8187:5;8212:65;8228:48;8269:6;8228:48;:::i;:::-;8212:65;:::i;:::-;8203:74;;8300:6;8293:5;8286:21;8338:4;8331:5;8327:16;8376:3;8367:6;8362:3;8358:16;8355:25;8352:112;;;8383:79;;:::i;:::-;8352:112;8473:54;8520:6;8515:3;8510;8473:54;:::i;:::-;8193:340;8110:423;;;;;:::o;8552:338::-;8607:5;8656:3;8649:4;8641:6;8637:17;8633:27;8623:122;;8664:79;;:::i;:::-;8623:122;8781:6;8768:20;8806:78;8880:3;8872:6;8865:4;8857:6;8853:17;8806:78;:::i;:::-;8797:87;;8613:277;8552:338;;;;:::o;8896:1509::-;9050:6;9058;9066;9074;9082;9131:3;9119:9;9110:7;9106:23;9102:33;9099:120;;;9138:79;;:::i;:::-;9099:120;9258:1;9283:53;9328:7;9319:6;9308:9;9304:22;9283:53;:::i;:::-;9273:63;;9229:117;9385:2;9411:53;9456:7;9447:6;9436:9;9432:22;9411:53;:::i;:::-;9401:63;;9356:118;9541:2;9530:9;9526:18;9513:32;9572:18;9564:6;9561:30;9558:117;;;9594:79;;:::i;:::-;9558:117;9699:78;9769:7;9760:6;9749:9;9745:22;9699:78;:::i;:::-;9689:88;;9484:303;9854:2;9843:9;9839:18;9826:32;9885:18;9877:6;9874:30;9871:117;;;9907:79;;:::i;:::-;9871:117;10012:78;10082:7;10073:6;10062:9;10058:22;10012:78;:::i;:::-;10002:88;;9797:303;10167:3;10156:9;10152:19;10139:33;10199:18;10191:6;10188:30;10185:117;;;10221:79;;:::i;:::-;10185:117;10326:62;10380:7;10371:6;10360:9;10356:22;10326:62;:::i;:::-;10316:72;;10110:288;8896:1509;;;;;;;;:::o;10411:308::-;10473:4;10563:18;10555:6;10552:30;10549:56;;;10585:18;;:::i;:::-;10549:56;10623:29;10645:6;10623:29;:::i;:::-;10615:37;;10707:4;10701;10697:15;10689:23;;10411:308;;;:::o;10725:425::-;10803:5;10828:66;10844:49;10886:6;10844:49;:::i;:::-;10828:66;:::i;:::-;10819:75;;10917:6;10910:5;10903:21;10955:4;10948:5;10944:16;10993:3;10984:6;10979:3;10975:16;10972:25;10969:112;;;11000:79;;:::i;:::-;10969:112;11090:54;11137:6;11132:3;11127;11090:54;:::i;:::-;10809:341;10725:425;;;;;:::o;11170:340::-;11226:5;11275:3;11268:4;11260:6;11256:17;11252:27;11242:122;;11283:79;;:::i;:::-;11242:122;11400:6;11387:20;11425:79;11500:3;11492:6;11485:4;11477:6;11473:17;11425:79;:::i;:::-;11416:88;;11232:278;11170:340;;;;:::o;11516:509::-;11585:6;11634:2;11622:9;11613:7;11609:23;11605:32;11602:119;;;11640:79;;:::i;:::-;11602:119;11788:1;11777:9;11773:17;11760:31;11818:18;11810:6;11807:30;11804:117;;;11840:79;;:::i;:::-;11804:117;11945:63;12000:7;11991:6;11980:9;11976:22;11945:63;:::i;:::-;11935:73;;11731:287;11516:509;;;;:::o;12031:619::-;12108:6;12116;12124;12173:2;12161:9;12152:7;12148:23;12144:32;12141:119;;;12179:79;;:::i;:::-;12141:119;12299:1;12324:53;12369:7;12360:6;12349:9;12345:22;12324:53;:::i;:::-;12314:63;;12270:117;12426:2;12452:53;12497:7;12488:6;12477:9;12473:22;12452:53;:::i;:::-;12442:63;;12397:118;12554:2;12580:53;12625:7;12616:6;12605:9;12601:22;12580:53;:::i;:::-;12570:63;;12525:118;12031:619;;;;;:::o;12656:311::-;12733:4;12823:18;12815:6;12812:30;12809:56;;;12845:18;;:::i;:::-;12809:56;12895:4;12887:6;12883:17;12875:25;;12955:4;12949;12945:15;12937:23;;12656:311;;;:::o;12990:710::-;13086:5;13111:81;13127:64;13184:6;13127:64;:::i;:::-;13111:81;:::i;:::-;13102:90;;13212:5;13241:6;13234:5;13227:21;13275:4;13268:5;13264:16;13257:23;;13328:4;13320:6;13316:17;13308:6;13304:30;13357:3;13349:6;13346:15;13343:122;;;13376:79;;:::i;:::-;13343:122;13491:6;13474:220;13508:6;13503:3;13500:15;13474:220;;;13583:3;13612:37;13645:3;13633:10;13612:37;:::i;:::-;13607:3;13600:50;13679:4;13674:3;13670:14;13663:21;;13550:144;13534:4;13529:3;13525:14;13518:21;;13474:220;;;13478:21;13092:608;;12990:710;;;;;:::o;13723:370::-;13794:5;13843:3;13836:4;13828:6;13824:17;13820:27;13810:122;;13851:79;;:::i;:::-;13810:122;13968:6;13955:20;13993:94;14083:3;14075:6;14068:4;14060:6;14056:17;13993:94;:::i;:::-;13984:103;;13800:293;13723:370;;;;:::o;14099:894::-;14217:6;14225;14274:2;14262:9;14253:7;14249:23;14245:32;14242:119;;;14280:79;;:::i;:::-;14242:119;14428:1;14417:9;14413:17;14400:31;14458:18;14450:6;14447:30;14444:117;;;14480:79;;:::i;:::-;14444:117;14585:78;14655:7;14646:6;14635:9;14631:22;14585:78;:::i;:::-;14575:88;;14371:302;14740:2;14729:9;14725:18;14712:32;14771:18;14763:6;14760:30;14757:117;;;14793:79;;:::i;:::-;14757:117;14898:78;14968:7;14959:6;14948:9;14944:22;14898:78;:::i;:::-;14888:88;;14683:303;14099:894;;;;;:::o;14999:114::-;15066:6;15100:5;15094:12;15084:22;;14999:114;;;:::o;15119:184::-;15218:11;15252:6;15247:3;15240:19;15292:4;15287:3;15283:14;15268:29;;15119:184;;;;:::o;15309:132::-;15376:4;15399:3;15391:11;;15429:4;15424:3;15420:14;15412:22;;15309:132;;;:::o;15447:108::-;15524:24;15542:5;15524:24;:::i;:::-;15519:3;15512:37;15447:108;;:::o;15561:179::-;15630:10;15651:46;15693:3;15685:6;15651:46;:::i;:::-;15729:4;15724:3;15720:14;15706:28;;15561:179;;;;:::o;15746:113::-;15816:4;15848;15843:3;15839:14;15831:22;;15746:113;;;:::o;15895:732::-;16014:3;16043:54;16091:5;16043:54;:::i;:::-;16113:86;16192:6;16187:3;16113:86;:::i;:::-;16106:93;;16223:56;16273:5;16223:56;:::i;:::-;16302:7;16333:1;16318:284;16343:6;16340:1;16337:13;16318:284;;;16419:6;16413:13;16446:63;16505:3;16490:13;16446:63;:::i;:::-;16439:70;;16532:60;16585:6;16532:60;:::i;:::-;16522:70;;16378:224;16365:1;16362;16358:9;16353:14;;16318:284;;;16322:14;16618:3;16611:10;;16019:608;;;15895:732;;;;:::o;16633:373::-;16776:4;16814:2;16803:9;16799:18;16791:26;;16863:9;16857:4;16853:20;16849:1;16838:9;16834:17;16827:47;16891:108;16994:4;16985:6;16891:108;:::i;:::-;16883:116;;16633:373;;;;:::o;17012:894::-;17130:6;17138;17187:2;17175:9;17166:7;17162:23;17158:32;17155:119;;;17193:79;;:::i;:::-;17155:119;17341:1;17330:9;17326:17;17313:31;17371:18;17363:6;17360:30;17357:117;;;17393:79;;:::i;:::-;17357:117;17498:78;17568:7;17559:6;17548:9;17544:22;17498:78;:::i;:::-;17488:88;;17284:302;17653:2;17642:9;17638:18;17625:32;17684:18;17676:6;17673:30;17670:117;;;17706:79;;:::i;:::-;17670:117;17811:78;17881:7;17872:6;17861:9;17857:22;17811:78;:::i;:::-;17801:88;;17596:303;17012:894;;;;;:::o;17912:118::-;17999:24;18017:5;17999:24;:::i;:::-;17994:3;17987:37;17912:118;;:::o;18036:222::-;18129:4;18167:2;18156:9;18152:18;18144:26;;18180:71;18248:1;18237:9;18233:17;18224:6;18180:71;:::i;:::-;18036:222;;;;:::o;18264:116::-;18334:21;18349:5;18334:21;:::i;:::-;18327:5;18324:32;18314:60;;18370:1;18367;18360:12;18314:60;18264:116;:::o;18386:133::-;18429:5;18467:6;18454:20;18445:29;;18483:30;18507:5;18483:30;:::i;:::-;18386:133;;;;:::o;18525:468::-;18590:6;18598;18647:2;18635:9;18626:7;18622:23;18618:32;18615:119;;;18653:79;;:::i;:::-;18615:119;18773:1;18798:53;18843:7;18834:6;18823:9;18819:22;18798:53;:::i;:::-;18788:63;;18744:117;18900:2;18926:50;18968:7;18959:6;18948:9;18944:22;18926:50;:::i;:::-;18916:60;;18871:115;18525:468;;;;;:::o;18999:829::-;19101:6;19109;19117;19166:2;19154:9;19145:7;19141:23;19137:32;19134:119;;;19172:79;;:::i;:::-;19134:119;19320:1;19309:9;19305:17;19292:31;19350:18;19342:6;19339:30;19336:117;;;19372:79;;:::i;:::-;19336:117;19477:78;19547:7;19538:6;19527:9;19523:22;19477:78;:::i;:::-;19467:88;;19263:302;19604:2;19630:53;19675:7;19666:6;19655:9;19651:22;19630:53;:::i;:::-;19620:63;;19575:118;19732:2;19758:53;19803:7;19794:6;19783:9;19779:22;19758:53;:::i;:::-;19748:63;;19703:118;18999:829;;;;;:::o;19834:474::-;19902:6;19910;19959:2;19947:9;19938:7;19934:23;19930:32;19927:119;;;19965:79;;:::i;:::-;19927:119;20085:1;20110:53;20155:7;20146:6;20135:9;20131:22;20110:53;:::i;:::-;20100:63;;20056:117;20212:2;20238:53;20283:7;20274:6;20263:9;20259:22;20238:53;:::i;:::-;20228:63;;20183:118;19834:474;;;;;:::o;20314:1089::-;20418:6;20426;20434;20442;20450;20499:3;20487:9;20478:7;20474:23;20470:33;20467:120;;;20506:79;;:::i;:::-;20467:120;20626:1;20651:53;20696:7;20687:6;20676:9;20672:22;20651:53;:::i;:::-;20641:63;;20597:117;20753:2;20779:53;20824:7;20815:6;20804:9;20800:22;20779:53;:::i;:::-;20769:63;;20724:118;20881:2;20907:53;20952:7;20943:6;20932:9;20928:22;20907:53;:::i;:::-;20897:63;;20852:118;21009:2;21035:53;21080:7;21071:6;21060:9;21056:22;21035:53;:::i;:::-;21025:63;;20980:118;21165:3;21154:9;21150:19;21137:33;21197:18;21189:6;21186:30;21183:117;;;21219:79;;:::i;:::-;21183:117;21324:62;21378:7;21369:6;21358:9;21354:22;21324:62;:::i;:::-;21314:72;;21108:288;20314:1089;;;;;;;;:::o;21409:230::-;21549:34;21545:1;21537:6;21533:14;21526:58;21618:13;21613:2;21605:6;21601:15;21594:38;21409:230;:::o;21645:366::-;21787:3;21808:67;21872:2;21867:3;21808:67;:::i;:::-;21801:74;;21884:93;21973:3;21884:93;:::i;:::-;22002:2;21997:3;21993:12;21986:19;;21645:366;;;:::o;22017:419::-;22183:4;22221:2;22210:9;22206:18;22198:26;;22270:9;22264:4;22260:20;22256:1;22245:9;22241:17;22234:47;22298:131;22424:4;22298:131;:::i;:::-;22290:139;;22017:419;;;:::o;22442:180::-;22490:77;22487:1;22480:88;22587:4;22584:1;22577:15;22611:4;22608:1;22601:15;22628:320;22672:6;22709:1;22703:4;22699:12;22689:22;;22756:1;22750:4;22746:12;22777:18;22767:81;;22833:4;22825:6;22821:17;22811:27;;22767:81;22895:2;22887:6;22884:14;22864:18;22861:38;22858:84;;22914:18;;:::i;:::-;22858:84;22679:269;22628:320;;;:::o;22954:223::-;23094:34;23090:1;23082:6;23078:14;23071:58;23163:6;23158:2;23150:6;23146:15;23139:31;22954:223;:::o;23183:366::-;23325:3;23346:67;23410:2;23405:3;23346:67;:::i;:::-;23339:74;;23422:93;23511:3;23422:93;:::i;:::-;23540:2;23535:3;23531:12;23524:19;;23183:366;;;:::o;23555:419::-;23721:4;23759:2;23748:9;23744:18;23736:26;;23808:9;23802:4;23798:20;23794:1;23783:9;23779:17;23772:47;23836:131;23962:4;23836:131;:::i;:::-;23828:139;;23555:419;;;:::o;23980:148::-;24082:11;24119:3;24104:18;;23980:148;;;;:::o;24134:141::-;24183:4;24206:3;24198:11;;24229:3;24226:1;24219:14;24263:4;24260:1;24250:18;24242:26;;24134:141;;;:::o;24305:874::-;24408:3;24445:5;24439:12;24474:36;24500:9;24474:36;:::i;:::-;24526:89;24608:6;24603:3;24526:89;:::i;:::-;24519:96;;24646:1;24635:9;24631:17;24662:1;24657:166;;;;24837:1;24832:341;;;;24624:549;;24657:166;24741:4;24737:9;24726;24722:25;24717:3;24710:38;24803:6;24796:14;24789:22;24781:6;24777:35;24772:3;24768:45;24761:52;;24657:166;;24832:341;24899:38;24931:5;24899:38;:::i;:::-;24959:1;24973:154;24987:6;24984:1;24981:13;24973:154;;;25061:7;25055:14;25051:1;25046:3;25042:11;25035:35;25111:1;25102:7;25098:15;25087:26;;25009:4;25006:1;25002:12;24997:17;;24973:154;;;25156:6;25151:3;25147:16;25140:23;;24839:334;;24624:549;;24412:767;;24305:874;;;;:::o;25185:390::-;25291:3;25319:39;25352:5;25319:39;:::i;:::-;25374:89;25456:6;25451:3;25374:89;:::i;:::-;25367:96;;25472:65;25530:6;25525:3;25518:4;25511:5;25507:16;25472:65;:::i;:::-;25562:6;25557:3;25553:16;25546:23;;25295:280;25185:390;;;;:::o;25581:583::-;25803:3;25825:92;25913:3;25904:6;25825:92;:::i;:::-;25818:99;;25934:95;26025:3;26016:6;25934:95;:::i;:::-;25927:102;;26046:92;26134:3;26125:6;26046:92;:::i;:::-;26039:99;;26155:3;26148:10;;25581:583;;;;;;:::o;26170:182::-;26310:34;26306:1;26298:6;26294:14;26287:58;26170:182;:::o;26358:366::-;26500:3;26521:67;26585:2;26580:3;26521:67;:::i;:::-;26514:74;;26597:93;26686:3;26597:93;:::i;:::-;26715:2;26710:3;26706:12;26699:19;;26358:366;;;:::o;26730:419::-;26896:4;26934:2;26923:9;26919:18;26911:26;;26983:9;26977:4;26973:20;26969:1;26958:9;26954:17;26947:47;27011:131;27137:4;27011:131;:::i;:::-;27003:139;;26730:419;;;:::o;27155:237::-;27295:34;27291:1;27283:6;27279:14;27272:58;27364:20;27359:2;27351:6;27347:15;27340:45;27155:237;:::o;27398:366::-;27540:3;27561:67;27625:2;27620:3;27561:67;:::i;:::-;27554:74;;27637:93;27726:3;27637:93;:::i;:::-;27755:2;27750:3;27746:12;27739:19;;27398:366;;;:::o;27770:419::-;27936:4;27974:2;27963:9;27959:18;27951:26;;28023:9;28017:4;28013:20;28009:1;27998:9;27994:17;27987:47;28051:131;28177:4;28051:131;:::i;:::-;28043:139;;27770:419;;;:::o;28195:93::-;28232:6;28279:2;28274;28267:5;28263:14;28259:23;28249:33;;28195:93;;;:::o;28294:107::-;28338:8;28388:5;28382:4;28378:16;28357:37;;28294:107;;;;:::o;28407:393::-;28476:6;28526:1;28514:10;28510:18;28549:97;28579:66;28568:9;28549:97;:::i;:::-;28667:39;28697:8;28686:9;28667:39;:::i;:::-;28655:51;;28739:4;28735:9;28728:5;28724:21;28715:30;;28788:4;28778:8;28774:19;28767:5;28764:30;28754:40;;28483:317;;28407:393;;;;;:::o;28806:60::-;28834:3;28855:5;28848:12;;28806:60;;;:::o;28872:142::-;28922:9;28955:53;28973:34;28982:24;29000:5;28982:24;:::i;:::-;28973:34;:::i;:::-;28955:53;:::i;:::-;28942:66;;28872:142;;;:::o;29020:75::-;29063:3;29084:5;29077:12;;29020:75;;;:::o;29101:269::-;29211:39;29242:7;29211:39;:::i;:::-;29272:91;29321:41;29345:16;29321:41;:::i;:::-;29313:6;29306:4;29300:11;29272:91;:::i;:::-;29266:4;29259:105;29177:193;29101:269;;;:::o;29376:73::-;29421:3;29376:73;:::o;29455:189::-;29532:32;;:::i;:::-;29573:65;29631:6;29623;29617:4;29573:65;:::i;:::-;29508:136;29455:189;;:::o;29650:186::-;29710:120;29727:3;29720:5;29717:14;29710:120;;;29781:39;29818:1;29811:5;29781:39;:::i;:::-;29754:1;29747:5;29743:13;29734:22;;29710:120;;;29650:186;;:::o;29842:543::-;29943:2;29938:3;29935:11;29932:446;;;29977:38;30009:5;29977:38;:::i;:::-;30061:29;30079:10;30061:29;:::i;:::-;30051:8;30047:44;30244:2;30232:10;30229:18;30226:49;;;30265:8;30250:23;;30226:49;30288:80;30344:22;30362:3;30344:22;:::i;:::-;30334:8;30330:37;30317:11;30288:80;:::i;:::-;29947:431;;29932:446;29842:543;;;:::o;30391:117::-;30445:8;30495:5;30489:4;30485:16;30464:37;;30391:117;;;;:::o;30514:169::-;30558:6;30591:51;30639:1;30635:6;30627:5;30624:1;30620:13;30591:51;:::i;:::-;30587:56;30672:4;30666;30662:15;30652:25;;30565:118;30514:169;;;;:::o;30688:295::-;30764:4;30910:29;30935:3;30929:4;30910:29;:::i;:::-;30902:37;;30972:3;30969:1;30965:11;30959:4;30956:21;30948:29;;30688:295;;;;:::o;30988:1395::-;31105:37;31138:3;31105:37;:::i;:::-;31207:18;31199:6;31196:30;31193:56;;;31229:18;;:::i;:::-;31193:56;31273:38;31305:4;31299:11;31273:38;:::i;:::-;31358:67;31418:6;31410;31404:4;31358:67;:::i;:::-;31452:1;31476:4;31463:17;;31508:2;31500:6;31497:14;31525:1;31520:618;;;;32182:1;32199:6;32196:77;;;32248:9;32243:3;32239:19;32233:26;32224:35;;32196:77;32299:67;32359:6;32352:5;32299:67;:::i;:::-;32293:4;32286:81;32155:222;31490:887;;31520:618;31572:4;31568:9;31560:6;31556:22;31606:37;31638:4;31606:37;:::i;:::-;31665:1;31679:208;31693:7;31690:1;31687:14;31679:208;;;31772:9;31767:3;31763:19;31757:26;31749:6;31742:42;31823:1;31815:6;31811:14;31801:24;;31870:2;31859:9;31855:18;31842:31;;31716:4;31713:1;31709:12;31704:17;;31679:208;;;31915:6;31906:7;31903:19;31900:179;;;31973:9;31968:3;31964:19;31958:26;32016:48;32058:4;32050:6;32046:17;32035:9;32016:48;:::i;:::-;32008:6;32001:64;31923:156;31900:179;32125:1;32121;32113:6;32109:14;32105:22;32099:4;32092:36;31527:611;;;31490:887;;31080:1303;;;30988:1395;;:::o;32389:167::-;32529:19;32525:1;32517:6;32513:14;32506:43;32389:167;:::o;32562:366::-;32704:3;32725:67;32789:2;32784:3;32725:67;:::i;:::-;32718:74;;32801:93;32890:3;32801:93;:::i;:::-;32919:2;32914:3;32910:12;32903:19;;32562:366;;;:::o;32934:419::-;33100:4;33138:2;33127:9;33123:18;33115:26;;33187:9;33181:4;33177:20;33173:1;33162:9;33158:17;33151:47;33215:131;33341:4;33215:131;:::i;:::-;33207:139;;32934:419;;;:::o;33359:228::-;33499:34;33495:1;33487:6;33483:14;33476:58;33568:11;33563:2;33555:6;33551:15;33544:36;33359:228;:::o;33593:366::-;33735:3;33756:67;33820:2;33815:3;33756:67;:::i;:::-;33749:74;;33832:93;33921:3;33832:93;:::i;:::-;33950:2;33945:3;33941:12;33934:19;;33593:366;;;:::o;33965:419::-;34131:4;34169:2;34158:9;34154:18;34146:26;;34218:9;34212:4;34208:20;34204:1;34193:9;34189:17;34182:47;34246:131;34372:4;34246:131;:::i;:::-;34238:139;;33965:419;;;:::o;34390:180::-;34438:77;34435:1;34428:88;34535:4;34532:1;34525:15;34559:4;34556:1;34549:15;34576:180;34624:77;34621:1;34614:88;34721:4;34718:1;34711:15;34745:4;34742:1;34735:15;34762:233;34801:3;34824:24;34842:5;34824:24;:::i;:::-;34815:33;;34870:66;34863:5;34860:77;34857:103;;34940:18;;:::i;:::-;34857:103;34987:1;34980:5;34976:13;34969:20;;34762:233;;;:::o;35001:228::-;35141:34;35137:1;35129:6;35125:14;35118:58;35210:11;35205:2;35197:6;35193:15;35186:36;35001:228;:::o;35235:366::-;35377:3;35398:67;35462:2;35457:3;35398:67;:::i;:::-;35391:74;;35474:93;35563:3;35474:93;:::i;:::-;35592:2;35587:3;35583:12;35576:19;;35235:366;;;:::o;35607:419::-;35773:4;35811:2;35800:9;35796:18;35788:26;;35860:9;35854:4;35850:20;35846:1;35835:9;35831:17;35824:47;35888:131;36014:4;35888:131;:::i;:::-;35880:139;;35607:419;;;:::o;36032:228::-;36172:34;36168:1;36160:6;36156:14;36149:58;36241:11;36236:2;36228:6;36224:15;36217:36;36032:228;:::o;36266:366::-;36408:3;36429:67;36493:2;36488:3;36429:67;:::i;:::-;36422:74;;36505:93;36594:3;36505:93;:::i;:::-;36623:2;36618:3;36614:12;36607:19;;36266:366;;;:::o;36638:419::-;36804:4;36842:2;36831:9;36827:18;36819:26;;36891:9;36885:4;36881:20;36877:1;36866:9;36862:17;36855:47;36919:131;37045:4;36919:131;:::i;:::-;36911:139;;36638:419;;;:::o;37063:225::-;37203:34;37199:1;37191:6;37187:14;37180:58;37272:8;37267:2;37259:6;37255:15;37248:33;37063:225;:::o;37294:366::-;37436:3;37457:67;37521:2;37516:3;37457:67;:::i;:::-;37450:74;;37533:93;37622:3;37533:93;:::i;:::-;37651:2;37646:3;37642:12;37635:19;;37294:366;;;:::o;37666:419::-;37832:4;37870:2;37859:9;37855:18;37847:26;;37919:9;37913:4;37909:20;37905:1;37894:9;37890:17;37883:47;37947:131;38073:4;37947:131;:::i;:::-;37939:139;;37666:419;;;:::o;38091:180::-;38139:77;38136:1;38129:88;38236:4;38233:1;38226:15;38260:4;38257:1;38250:15;38277:185;38317:1;38334:20;38352:1;38334:20;:::i;:::-;38329:25;;38368:20;38386:1;38368:20;:::i;:::-;38363:25;;38407:1;38397:35;;38412:18;;:::i;:::-;38397:35;38454:1;38451;38447:9;38442:14;;38277:185;;;;:::o;38468:194::-;38508:4;38528:20;38546:1;38528:20;:::i;:::-;38523:25;;38562:20;38580:1;38562:20;:::i;:::-;38557:25;;38606:1;38603;38599:9;38591:17;;38630:1;38624:4;38621:11;38618:37;;;38635:18;;:::i;:::-;38618:37;38468:194;;;;:::o;38668:176::-;38700:1;38717:20;38735:1;38717:20;:::i;:::-;38712:25;;38751:20;38769:1;38751:20;:::i;:::-;38746:25;;38790:1;38780:35;;38795:18;;:::i;:::-;38780:35;38836:1;38833;38829:9;38824:14;;38668:176;;;;:::o;38850:191::-;38890:3;38909:20;38927:1;38909:20;:::i;:::-;38904:25;;38943:20;38961:1;38943:20;:::i;:::-;38938:25;;38986:1;38983;38979:9;38972:16;;39007:3;39004:1;39001:10;38998:36;;;39014:18;;:::i;:::-;38998:36;38850:191;;;;:::o;39047:227::-;39187:34;39183:1;39175:6;39171:14;39164:58;39256:10;39251:2;39243:6;39239:15;39232:35;39047:227;:::o;39280:366::-;39422:3;39443:67;39507:2;39502:3;39443:67;:::i;:::-;39436:74;;39519:93;39608:3;39519:93;:::i;:::-;39637:2;39632:3;39628:12;39621:19;;39280:366;;;:::o;39652:419::-;39818:4;39856:2;39845:9;39841:18;39833:26;;39905:9;39899:4;39895:20;39891:1;39880:9;39876:17;39869:47;39933:131;40059:4;39933:131;:::i;:::-;39925:139;;39652:419;;;:::o;40077:224::-;40217:34;40213:1;40205:6;40201:14;40194:58;40286:7;40281:2;40273:6;40269:15;40262:32;40077:224;:::o;40307:366::-;40449:3;40470:67;40534:2;40529:3;40470:67;:::i;:::-;40463:74;;40546:93;40635:3;40546:93;:::i;:::-;40664:2;40659:3;40655:12;40648:19;;40307:366;;;:::o;40679:419::-;40845:4;40883:2;40872:9;40868:18;40860:26;;40932:9;40926:4;40922:20;40918:1;40907:9;40903:17;40896:47;40960:131;41086:4;40960:131;:::i;:::-;40952:139;;40679:419;;;:::o;41104:229::-;41244:34;41240:1;41232:6;41228:14;41221:58;41313:12;41308:2;41300:6;41296:15;41289:37;41104:229;:::o;41339:366::-;41481:3;41502:67;41566:2;41561:3;41502:67;:::i;:::-;41495:74;;41578:93;41667:3;41578:93;:::i;:::-;41696:2;41691:3;41687:12;41680:19;;41339:366;;;:::o;41711:419::-;41877:4;41915:2;41904:9;41900:18;41892:26;;41964:9;41958:4;41954:20;41950:1;41939:9;41935:17;41928:47;41992:131;42118:4;41992:131;:::i;:::-;41984:139;;41711:419;;;:::o;42136:634::-;42357:4;42395:2;42384:9;42380:18;42372:26;;42444:9;42438:4;42434:20;42430:1;42419:9;42415:17;42408:47;42472:108;42575:4;42566:6;42472:108;:::i;:::-;42464:116;;42627:9;42621:4;42617:20;42612:2;42601:9;42597:18;42590:48;42655:108;42758:4;42749:6;42655:108;:::i;:::-;42647:116;;42136:634;;;;;:::o;42776:222::-;42916:34;42912:1;42904:6;42900:14;42893:58;42985:5;42980:2;42972:6;42968:15;42961:30;42776:222;:::o;43004:366::-;43146:3;43167:67;43231:2;43226:3;43167:67;:::i;:::-;43160:74;;43243:93;43332:3;43243:93;:::i;:::-;43361:2;43356:3;43352:12;43345:19;;43004:366;;;:::o;43376:419::-;43542:4;43580:2;43569:9;43565:18;43557:26;;43629:9;43623:4;43619:20;43615:1;43604:9;43600:17;43593:47;43657:131;43783:4;43657:131;:::i;:::-;43649:139;;43376:419;;;:::o;43801:223::-;43941:34;43937:1;43929:6;43925:14;43918:58;44010:6;44005:2;43997:6;43993:15;43986:31;43801:223;:::o;44030:366::-;44172:3;44193:67;44257:2;44252:3;44193:67;:::i;:::-;44186:74;;44269:93;44358:3;44269:93;:::i;:::-;44387:2;44382:3;44378:12;44371:19;;44030:366;;;:::o;44402:419::-;44568:4;44606:2;44595:9;44591:18;44583:26;;44655:9;44649:4;44645:20;44641:1;44630:9;44626:17;44619:47;44683:131;44809:4;44683:131;:::i;:::-;44675:139;;44402:419;;;:::o;44827:332::-;44948:4;44986:2;44975:9;44971:18;44963:26;;44999:71;45067:1;45056:9;45052:17;45043:6;44999:71;:::i;:::-;45080:72;45148:2;45137:9;45133:18;45124:6;45080:72;:::i;:::-;44827:332;;;;;:::o;45165:220::-;45305:34;45301:1;45293:6;45289:14;45282:58;45374:3;45369:2;45361:6;45357:15;45350:28;45165:220;:::o;45391:366::-;45533:3;45554:67;45618:2;45613:3;45554:67;:::i;:::-;45547:74;;45630:93;45719:3;45630:93;:::i;:::-;45748:2;45743:3;45739:12;45732:19;;45391:366;;;:::o;45763:419::-;45929:4;45967:2;45956:9;45952:18;45944:26;;46016:9;46010:4;46006:20;46002:1;45991:9;45987:17;45980:47;46044:131;46170:4;46044:131;:::i;:::-;46036:139;;45763:419;;;:::o;46188:98::-;46239:6;46273:5;46267:12;46257:22;;46188:98;;;:::o;46292:168::-;46375:11;46409:6;46404:3;46397:19;46449:4;46444:3;46440:14;46425:29;;46292:168;;;;:::o;46466:373::-;46552:3;46580:38;46612:5;46580:38;:::i;:::-;46634:70;46697:6;46692:3;46634:70;:::i;:::-;46627:77;;46713:65;46771:6;46766:3;46759:4;46752:5;46748:16;46713:65;:::i;:::-;46803:29;46825:6;46803:29;:::i;:::-;46798:3;46794:39;46787:46;;46556:283;46466:373;;;;:::o;46845:1053::-;47168:4;47206:3;47195:9;47191:19;47183:27;;47220:71;47288:1;47277:9;47273:17;47264:6;47220:71;:::i;:::-;47301:72;47369:2;47358:9;47354:18;47345:6;47301:72;:::i;:::-;47420:9;47414:4;47410:20;47405:2;47394:9;47390:18;47383:48;47448:108;47551:4;47542:6;47448:108;:::i;:::-;47440:116;;47603:9;47597:4;47593:20;47588:2;47577:9;47573:18;47566:48;47631:108;47734:4;47725:6;47631:108;:::i;:::-;47623:116;;47787:9;47781:4;47777:20;47771:3;47760:9;47756:19;47749:49;47815:76;47886:4;47877:6;47815:76;:::i;:::-;47807:84;;46845:1053;;;;;;;;:::o;47904:141::-;47960:5;47991:6;47985:13;47976:22;;48007:32;48033:5;48007:32;:::i;:::-;47904:141;;;;:::o;48051:349::-;48120:6;48169:2;48157:9;48148:7;48144:23;48140:32;48137:119;;;48175:79;;:::i;:::-;48137:119;48295:1;48320:63;48375:7;48366:6;48355:9;48351:22;48320:63;:::i;:::-;48310:73;;48266:127;48051:349;;;;:::o;48406:106::-;48450:8;48499:5;48494:3;48490:15;48469:36;;48406:106;;;:::o;48518:183::-;48553:3;48591:1;48573:16;48570:23;48567:128;;;48629:1;48626;48623;48608:23;48651:34;48682:1;48676:8;48651:34;:::i;:::-;48644:41;;48567:128;48518:183;:::o;48707:711::-;48746:3;48784:4;48766:16;48763:26;48792:5;48760:39;48821:20;;:::i;:::-;48896:1;48878:16;48874:24;48871:1;48865:4;48850:49;48929:4;48923:11;49028:16;49021:4;49013:6;49009:17;49006:39;48973:18;48965:6;48962:30;48946:113;48943:146;;;49074:5;;;;48943:146;49120:6;49114:4;49110:17;49156:3;49150:10;49183:18;49175:6;49172:30;49169:43;;;49205:5;;;;;;49169:43;49253:6;49246:4;49241:3;49237:14;49233:27;49312:1;49294:16;49290:24;49284:4;49280:35;49275:3;49272:44;49269:57;;;49319:5;;;;;;;49269:57;49336;49384:6;49378:4;49374:17;49366:6;49362:30;49356:4;49336:57;:::i;:::-;49409:3;49402:10;;48750:668;;;;;48707:711;;:::o;49424:239::-;49564:34;49560:1;49552:6;49548:14;49541:58;49633:22;49628:2;49620:6;49616:15;49609:47;49424:239;:::o;49669:366::-;49811:3;49832:67;49896:2;49891:3;49832:67;:::i;:::-;49825:74;;49908:93;49997:3;49908:93;:::i;:::-;50026:2;50021:3;50017:12;50010:19;;49669:366;;;:::o;50041:419::-;50207:4;50245:2;50234:9;50230:18;50222:26;;50294:9;50288:4;50284:20;50280:1;50269:9;50265:17;50258:47;50322:131;50448:4;50322:131;:::i;:::-;50314:139;;50041:419;;;:::o;50466:227::-;50606:34;50602:1;50594:6;50590:14;50583:58;50675:10;50670:2;50662:6;50658:15;50651:35;50466:227;:::o;50699:366::-;50841:3;50862:67;50926:2;50921:3;50862:67;:::i;:::-;50855:74;;50938:93;51027:3;50938:93;:::i;:::-;51056:2;51051:3;51047:12;51040:19;;50699:366;;;:::o;51071:419::-;51237:4;51275:2;51264:9;51260:18;51252:26;;51324:9;51318:4;51314:20;51310:1;51299:9;51295:17;51288:47;51352:131;51478:4;51352:131;:::i;:::-;51344:139;;51071:419;;;:::o;51496:751::-;51719:4;51757:3;51746:9;51742:19;51734:27;;51771:71;51839:1;51828:9;51824:17;51815:6;51771:71;:::i;:::-;51852:72;51920:2;51909:9;51905:18;51896:6;51852:72;:::i;:::-;51934;52002:2;51991:9;51987:18;51978:6;51934:72;:::i;:::-;52016;52084:2;52073:9;52069:18;52060:6;52016:72;:::i;:::-;52136:9;52130:4;52126:20;52120:3;52109:9;52105:19;52098:49;52164:76;52235:4;52226:6;52164:76;:::i;:::-;52156:84;;51496:751;;;;;;;;:::o

Swarm Source

ipfs://b11165374ef7f5c55b079f97cf936d586f38f062803b629b93d4b29a97940320
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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