ETH Price: $3,243.87 (-0.46%)
Gas: 1 Gwei

Token

MetaPizza (MP)
 

Overview

Max Total Supply

305 MP

Holders

230

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

0x88e76e904bf2ae273d00619795a64f13bd546817
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:
MetaPizza

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-06
*/

/*


███╗░░░███╗███████╗████████╗░█████╗░██████╗░██╗███████╗███████╗░█████╗░
████╗░████║██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║╚════██║╚════██║██╔══██╗
██╔████╔██║█████╗░░░░░██║░░░███████║██████╔╝██║░░███╔═╝░░███╔═╝███████║
██║╚██╔╝██║██╔══╝░░░░░██║░░░██╔══██║██╔═══╝░██║██╔══╝░░██╔══╝░░██╔══██║
██║░╚═╝░██║███████╗░░░██║░░░██║░░██║██║░░░░░██║███████╗███████╗██║░░██║
╚═╝░░░░░╚═╝╚══════╝░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░░░░╚═╝╚══════╝╚══════╝╚═╝░░╚═╝

[email protected]

*/
// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @openzeppelin/contracts/utils/Address.sol


// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)

pragma solidity ^0.8.0;


/**
 * @dev Implementation of the {IERC165} interface.
 *
 * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
 * for the additional interface id that will be supported. For example:
 *
 * ```solidity
 * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
 *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
 * }
 * ```
 *
 * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
 */
abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol)

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.
     *
     * NOTE: 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.
     *
     * NOTE: 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);
}

// File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol)

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

// File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol)

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

// File: @openzeppelin/contracts/token/ERC1155/ERC1155.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC1155/ERC1155.sol)

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 {
        _setApprovalForAll(_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 `to`.
     *
     * Emits a {TransferSingle} event.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
     * acceptance magic value.
     */
    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");

        address operator = _msgSender();

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

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

        _doSafeTransferAcceptanceCheck(operator, address(0), to, 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 `from`
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `from` must have at least `amount` tokens of token type `id`.
     */
    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

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

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

        emit TransferSingle(operator, from, 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 from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

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

        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: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

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

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits a {ApprovalForAll} event.
     */
    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    /**
     * @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.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.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;
    }
}

// File: artifacts/MetaPizza.sol


pragma solidity ^0.8.0;




contract MetaPizza is ERC1155, Ownable {
    string public constant name = "MetaPizza";
    string public constant symbol = "MP";

    uint32 public totalSupply = 0;
    uint32 public constant maxSupply = 9999;
    uint256 public constant unitPrice = 0.111 ether;

    uint32 public saleStart = 1651950000;

    constructor(string memory _uri) ERC1155(_uri) {}

    function setURI(string memory _uri) external onlyOwner {
        _setURI(_uri);
    }

    function setSaleStart(uint32 _saleStart) external onlyOwner {
        saleStart = _saleStart;
    }

    function saleIsActive() public view returns (bool) {
        return saleStart <= block.timestamp;
    }

    function mint(address _to, uint32 _count) internal {
        require(_count > 0, "Count must be greater than 0.");
        require(
            totalSupply + _count <= maxSupply,
            "Count exceeds the maximum allowed supply."
        );

        totalSupply += _count;

        if (_count > 1) {
            uint256[] memory ids = new uint256[](uint256(_count));
            uint256[] memory amounts = new uint256[](uint256(_count));

            for (uint32 i = 0; i < _count; i++) {
                ids[i] = totalSupply - _count + i;
                amounts[i] = 1;
            }

            _mintBatch(_to, ids, amounts, "");
        } else {
            _mint(_to, totalSupply - 1, 1, "");
        }
    }

    function mint(uint32 _count) external payable {
        require(saleIsActive(), "Sale is not active.");
        require(msg.value >= unitPrice * _count, "Not enough ether.");

        mint(msg.sender, _count);
    }

    function airdrop(address[] memory _addresses) external onlyOwner {
        require(
            totalSupply + _addresses.length <= maxSupply,
            "Count exceeds the maximum allowed supply."
        );

        for (uint256 i = 0; i < _addresses.length; i++) {
            mint(_addresses[i], 1);
        }
    }

    function withdraw() external onlyOwner {
        address[2] memory addresses = [
            0x85d311ce4d669be5b2D386dcA34531d240EEcD68,
            0x00889fc62F0b701e6393A99495F9d0b24C8858E8
        ];

        uint32[2] memory shares = [uint32(9600), uint32(400)];

        uint256 balance = address(this).balance;

        for (uint32 i = 0; i < addresses.length; i++) {
            uint256 amount = i == addresses.length - 1
                ? address(this).balance
                : (balance * shares[i]) / 10000;
            payable(addresses[i]).transfer(amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_uri","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":"_addresses","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"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":"maxSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_count","type":"uint32"}],"name":"mint","outputs":[],"stateMutability":"payable","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":[],"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":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleStart","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_saleStart","type":"uint32"}],"name":"setSaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600360146101000a81548163ffffffff021916908363ffffffff160217905550636276c1b0600360186101000a81548163ffffffff021916908363ffffffff1602179055503480156200005857600080fd5b506040516200448c3803806200448c83398181016040528101906200007e9190620002d0565b806200009081620000b860201b60201c565b50620000b1620000a5620000d460201b60201c565b620000dc60201b60201c565b50620004a5565b8060029080519060200190620000d0929190620001a2565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001b090620003b6565b90600052602060002090601f016020900481019282620001d4576000855562000220565b82601f10620001ef57805160ff191683800117855562000220565b8280016001018555821562000220579182015b828111156200021f57825182559160200191906001019062000202565b5b5090506200022f919062000233565b5090565b5b808211156200024e57600081600090555060010162000234565b5090565b60006200026962000263846200034a565b62000321565b90508281526020810184848401111562000288576200028762000485565b5b6200029584828562000380565b509392505050565b600082601f830112620002b557620002b462000480565b5b8151620002c784826020860162000252565b91505092915050565b600060208284031215620002e957620002e86200048f565b5b600082015167ffffffffffffffff8111156200030a57620003096200048a565b5b62000318848285016200029d565b91505092915050565b60006200032d62000340565b90506200033b8282620003ec565b919050565b6000604051905090565b600067ffffffffffffffff82111562000368576200036762000451565b5b620003738262000494565b9050602081019050919050565b60005b83811015620003a057808201518184015260208101905062000383565b83811115620003b0576000848401525b50505050565b60006002820490506001821680620003cf57607f821691505b60208210811415620003e657620003e562000422565b5b50919050565b620003f78262000494565b810181811067ffffffffffffffff8211171562000419576200041862000451565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b613fd780620004b56000396000f3fe60806040526004361061013f5760003560e01c80638da5cb5b116100b6578063d5abeb011161006f578063d5abeb0114610426578063e73faa2d14610451578063e985e9c51461047c578063eb8d2444146104b9578063f242432a146104e4578063f2fde38b1461050d5761013f565b80638da5cb5b1461033757806395d89b4114610362578063a22cb4651461038d578063a71bbebe146103b6578063a741ae1e146103d2578063ab0bcc41146103fb5761013f565b806318160ddd1161010857806318160ddd1461024f5780632eb2c2d61461027a5780633ccfd60b146102a35780634e1273f4146102ba578063715018a6146102f7578063729ad39e1461030e5761013f565b8062fdd58e1461014457806301ffc9a71461018157806302fe5305146101be57806306fdde03146101e75780630e89341c14610212575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612ac5565b610536565b60405161017891906133dc565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a39190612bc6565b6105ff565b6040516101b5919061317f565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612c20565b6106e1565b005b3480156101f357600080fd5b506101fc610769565b604051610209919061319a565b60405180910390f35b34801561021e57600080fd5b5061023960048036038101906102349190612c69565b6107a2565b604051610246919061319a565b60405180910390f35b34801561025b57600080fd5b50610264610836565b6040516102719190613420565b60405180910390f35b34801561028657600080fd5b506102a1600480360381019061029c919061291f565b61084c565b005b3480156102af57600080fd5b506102b86108ed565b005b3480156102c657600080fd5b506102e160048036038101906102dc9190612b4e565b610b2c565b6040516102ee9190613126565b60405180910390f35b34801561030357600080fd5b5061030c610c45565b005b34801561031a57600080fd5b5061033560048036038101906103309190612b05565b610ccd565b005b34801561034357600080fd5b5061034c610e00565b6040516103599190613049565b60405180910390f35b34801561036e57600080fd5b50610377610e2a565b604051610384919061319a565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612a85565b610e63565b005b6103d060048036038101906103cb9190612c96565b610e79565b005b3480156103de57600080fd5b506103f960048036038101906103f49190612c96565b610f29565b005b34801561040757600080fd5b50610410610fc9565b60405161041d9190613420565b60405180910390f35b34801561043257600080fd5b5061043b610fdf565b6040516104489190613420565b60405180910390f35b34801561045d57600080fd5b50610466610fe5565b60405161047391906133dc565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e91906128df565b610ff1565b6040516104b0919061317f565b60405180910390f35b3480156104c557600080fd5b506104ce611085565b6040516104db919061317f565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906129ee565b6110a8565b005b34801561051957600080fd5b50610534600480360381019061052f91906128b2565b611149565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e906131fc565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106ca57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106da57506106d982611241565b5b9050919050565b6106e96112ab565b73ffffffffffffffffffffffffffffffffffffffff16610707610e00565b73ffffffffffffffffffffffffffffffffffffffff161461075d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107549061331c565b60405180910390fd5b610766816112b3565b50565b6040518060400160405280600981526020017f4d65746150697a7a61000000000000000000000000000000000000000000000081525081565b6060600280546107b1906137d4565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906137d4565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b50505050509050919050565b600360149054906101000a900463ffffffff1681565b6108546112ab565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061089a5750610899856108946112ab565b610ff1565b5b6108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d0906132bc565b60405180910390fd5b6108e685858585856112cd565b5050505050565b6108f56112ab565b73ffffffffffffffffffffffffffffffffffffffff16610913610e00565b73ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109609061331c565b60405180910390fd5b600060405180604001604052807385d311ce4d669be5b2d386dca34531d240eecd6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200172889fc62f0b701e6393a99495f9d0b24c8858e873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525090506000604051806040016040528061258063ffffffff1663ffffffff16815260200161019063ffffffff1663ffffffff168152509050600047905060005b60028163ffffffff161015610b2657600060016002610a5d91906136a6565b8263ffffffff1614610aaa57612710848363ffffffff1660028110610a8557610a8461393a565b5b602002015163ffffffff1684610a9b919061364c565b610aa5919061361b565b610aac565b475b9050848263ffffffff1660028110610ac757610ac661393a565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b11573d6000803e3d6000fd5b50508080610b1e90613880565b915050610a3e565b50505050565b60608151835114610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b699061337c565b60405180910390fd5b6000835167ffffffffffffffff811115610b8f57610b8e613969565b5b604051908082528060200260200182016040528015610bbd5781602001602082028036833780820191505090505b50905060005b8451811015610c3a57610c0a858281518110610be257610be161393a565b5b6020026020010151858381518110610bfd57610bfc61393a565b5b6020026020010151610536565b828281518110610c1d57610c1c61393a565b5b60200260200101818152505080610c3390613837565b9050610bc3565b508091505092915050565b610c4d6112ab565b73ffffffffffffffffffffffffffffffffffffffff16610c6b610e00565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb89061331c565b60405180910390fd5b610ccb60006115e1565b565b610cd56112ab565b73ffffffffffffffffffffffffffffffffffffffff16610cf3610e00565b73ffffffffffffffffffffffffffffffffffffffff1614610d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d409061331c565b60405180910390fd5b61270f63ffffffff168151600360149054906101000a900463ffffffff1663ffffffff16610d77919061358b565b1115610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf906132fc565b60405180910390fd5b60005b8151811015610dfc57610de9828281518110610dda57610dd961393a565b5b602002602001015160016116a7565b8080610df490613837565b915050610dbb565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600281526020017f4d5000000000000000000000000000000000000000000000000000000000000081525081565b610e75610e6e6112ab565b838361195f565b5050565b610e81611085565b610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb79061333c565b60405180910390fd5b8063ffffffff1667018a59e972118000610eda919061364c565b341015610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061327c565b60405180910390fd5b610f2633826116a7565b50565b610f316112ab565b73ffffffffffffffffffffffffffffffffffffffff16610f4f610e00565b73ffffffffffffffffffffffffffffffffffffffff1614610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c9061331c565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b600360189054906101000a900463ffffffff1681565b61270f81565b67018a59e97211800081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600042600360189054906101000a900463ffffffff1663ffffffff161115905090565b6110b06112ab565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110f657506110f5856110f06112ab565b610ff1565b5b611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c9061323c565b60405180910390fd5b6111428585858585611acc565b5050505050565b6111516112ab565b73ffffffffffffffffffffffffffffffffffffffff1661116f610e00565b73ffffffffffffffffffffffffffffffffffffffff16146111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc9061331c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c9061321c565b60405180910390fd5b61123e816115e1565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b80600290805190602001906112c9929190612575565b5050565b8151835114611311576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113089061339c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061329c565b60405180910390fd5b600061138b6112ab565b905061139b818787878787611d4e565b60005b845181101561154c5760008582815181106113bc576113bb61393a565b5b6020026020010151905060008583815181106113db576113da61393a565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561147c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611473906132dc565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611531919061358b565b925050819055505050508061154590613837565b905061139e565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516115c3929190613148565b60405180910390a46115d9818787878787611d56565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008163ffffffff16116116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e79061325c565b60405180910390fd5b61270f63ffffffff1681600360149054906101000a900463ffffffff1661171791906135e1565b63ffffffff16111561175e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611755906132fc565b60405180910390fd5b80600360148282829054906101000a900463ffffffff1661177f91906135e1565b92506101000a81548163ffffffff021916908363ffffffff16021790555060018163ffffffff16111561191a5760008163ffffffff1667ffffffffffffffff8111156117ce576117cd613969565b5b6040519080825280602002602001820160405280156117fc5781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff81111561182157611820613969565b5b60405190808252806020026020018201604052801561184f5781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff1610156118f7578084600360149054906101000a900463ffffffff1661188891906136da565b61189291906135e1565b63ffffffff16838263ffffffff16815181106118b1576118b061393a565b5b6020026020010181815250506001828263ffffffff16815181106118d8576118d761393a565b5b60200260200101818152505080806118ef90613880565b915050611855565b5061191384838360405180602001604052806000815250611f3d565b505061195b565b61195a826001600360149054906101000a900463ffffffff1661193d91906136da565b63ffffffff1660016040518060200160405280600081525061215b565b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061335c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611abf919061317f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b339061329c565b60405180910390fd5b6000611b466112ab565b9050611b66818787611b57886122f1565b611b60886122f1565b87611d4e565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf4906132dc565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cb2919061358b565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611d2f9291906133f7565b60405180910390a4611d4582888888888861236b565b50505050505050565b505050505050565b611d758473ffffffffffffffffffffffffffffffffffffffff16612552565b15611f35578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611dbb959493929190613064565b602060405180830381600087803b158015611dd557600080fd5b505af1925050508015611e0657506040513d601f19601f82011682018060405250810190611e039190612bf3565b60015b611eac57611e12613998565b806308c379a01415611e6f5750611e27613e98565b80611e325750611e71565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e66919061319a565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea3906131bc565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a906131dc565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906133bc565b60405180910390fd5b8151835114611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe89061339c565b60405180910390fd5b6000611ffb6112ab565b905061200c81600087878787611d4e565b60005b84518110156120c55783818151811061202b5761202a61393a565b5b60200260200101516000808784815181106120495761204861393a565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120ab919061358b565b9250508190555080806120bd90613837565b91505061200f565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161213d929190613148565b60405180910390a461215481600087878787611d56565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c2906133bc565b60405180910390fd5b60006121d56112ab565b90506121f6816000876121e7886122f1565b6121f0886122f1565b87611d4e565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612255919061358b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516122d39291906133f7565b60405180910390a46122ea8160008787878761236b565b5050505050565b60606000600167ffffffffffffffff8111156123105761230f613969565b5b60405190808252806020026020018201604052801561233e5781602001602082028036833780820191505090505b50905082816000815181106123565761235561393a565b5b60200260200101818152505080915050919050565b61238a8473ffffffffffffffffffffffffffffffffffffffff16612552565b1561254a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016123d09594939291906130cc565b602060405180830381600087803b1580156123ea57600080fd5b505af192505050801561241b57506040513d601f19601f820116820180604052508101906124189190612bf3565b60015b6124c157612427613998565b806308c379a01415612484575061243c613e98565b806124475750612486565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b919061319a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906131bc565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f906131dc565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612581906137d4565b90600052602060002090601f0160209004810192826125a357600085556125ea565b82601f106125bc57805160ff19168380011785556125ea565b828001600101855582156125ea579182015b828111156125e95782518255916020019190600101906125ce565b5b5090506125f791906125fb565b5090565b5b808211156126145760008160009055506001016125fc565b5090565b600061262b61262684613460565b61343b565b9050808382526020820190508285602086028201111561264e5761264d6139bf565b5b60005b8581101561267e5781612664888261277c565b845260208401935060208301925050600181019050612651565b5050509392505050565b600061269b6126968461348c565b61343b565b905080838252602082019050828560208602820111156126be576126bd6139bf565b5b60005b858110156126ee57816126d48882612888565b8452602084019350602083019250506001810190506126c1565b5050509392505050565b600061270b612706846134b8565b61343b565b905082815260208101848484011115612727576127266139c4565b5b612732848285613792565b509392505050565b600061274d612748846134e9565b61343b565b905082815260208101848484011115612769576127686139c4565b5b612774848285613792565b509392505050565b60008135905061278b81613f2e565b92915050565b600082601f8301126127a6576127a56139ba565b5b81356127b6848260208601612618565b91505092915050565b600082601f8301126127d4576127d36139ba565b5b81356127e4848260208601612688565b91505092915050565b6000813590506127fc81613f45565b92915050565b60008135905061281181613f5c565b92915050565b60008151905061282681613f5c565b92915050565b600082601f830112612841576128406139ba565b5b81356128518482602086016126f8565b91505092915050565b600082601f83011261286f5761286e6139ba565b5b813561287f84826020860161273a565b91505092915050565b60008135905061289781613f73565b92915050565b6000813590506128ac81613f8a565b92915050565b6000602082840312156128c8576128c76139ce565b5b60006128d68482850161277c565b91505092915050565b600080604083850312156128f6576128f56139ce565b5b60006129048582860161277c565b92505060206129158582860161277c565b9150509250929050565b600080600080600060a0868803121561293b5761293a6139ce565b5b60006129498882890161277c565b955050602061295a8882890161277c565b945050604086013567ffffffffffffffff81111561297b5761297a6139c9565b5b612987888289016127bf565b935050606086013567ffffffffffffffff8111156129a8576129a76139c9565b5b6129b4888289016127bf565b925050608086013567ffffffffffffffff8111156129d5576129d46139c9565b5b6129e18882890161282c565b9150509295509295909350565b600080600080600060a08688031215612a0a57612a096139ce565b5b6000612a188882890161277c565b9550506020612a298882890161277c565b9450506040612a3a88828901612888565b9350506060612a4b88828901612888565b925050608086013567ffffffffffffffff811115612a6c57612a6b6139c9565b5b612a788882890161282c565b9150509295509295909350565b60008060408385031215612a9c57612a9b6139ce565b5b6000612aaa8582860161277c565b9250506020612abb858286016127ed565b9150509250929050565b60008060408385031215612adc57612adb6139ce565b5b6000612aea8582860161277c565b9250506020612afb85828601612888565b9150509250929050565b600060208284031215612b1b57612b1a6139ce565b5b600082013567ffffffffffffffff811115612b3957612b386139c9565b5b612b4584828501612791565b91505092915050565b60008060408385031215612b6557612b646139ce565b5b600083013567ffffffffffffffff811115612b8357612b826139c9565b5b612b8f85828601612791565b925050602083013567ffffffffffffffff811115612bb057612baf6139c9565b5b612bbc858286016127bf565b9150509250929050565b600060208284031215612bdc57612bdb6139ce565b5b6000612bea84828501612802565b91505092915050565b600060208284031215612c0957612c086139ce565b5b6000612c1784828501612817565b91505092915050565b600060208284031215612c3657612c356139ce565b5b600082013567ffffffffffffffff811115612c5457612c536139c9565b5b612c608482850161285a565b91505092915050565b600060208284031215612c7f57612c7e6139ce565b5b6000612c8d84828501612888565b91505092915050565b600060208284031215612cac57612cab6139ce565b5b6000612cba8482850161289d565b91505092915050565b6000612ccf838361301c565b60208301905092915050565b612ce48161370e565b82525050565b6000612cf58261352a565b612cff8185613558565b9350612d0a8361351a565b8060005b83811015612d3b578151612d228882612cc3565b9750612d2d8361354b565b925050600181019050612d0e565b5085935050505092915050565b612d5181613720565b82525050565b6000612d6282613535565b612d6c8185613569565b9350612d7c8185602086016137a1565b612d85816139d3565b840191505092915050565b6000612d9b82613540565b612da5818561357a565b9350612db58185602086016137a1565b612dbe816139d3565b840191505092915050565b6000612dd660348361357a565b9150612de1826139f1565b604082019050919050565b6000612df960288361357a565b9150612e0482613a40565b604082019050919050565b6000612e1c602b8361357a565b9150612e2782613a8f565b604082019050919050565b6000612e3f60268361357a565b9150612e4a82613ade565b604082019050919050565b6000612e6260298361357a565b9150612e6d82613b2d565b604082019050919050565b6000612e85601d8361357a565b9150612e9082613b7c565b602082019050919050565b6000612ea860118361357a565b9150612eb382613ba5565b602082019050919050565b6000612ecb60258361357a565b9150612ed682613bce565b604082019050919050565b6000612eee60328361357a565b9150612ef982613c1d565b604082019050919050565b6000612f11602a8361357a565b9150612f1c82613c6c565b604082019050919050565b6000612f3460298361357a565b9150612f3f82613cbb565b604082019050919050565b6000612f5760208361357a565b9150612f6282613d0a565b602082019050919050565b6000612f7a60138361357a565b9150612f8582613d33565b602082019050919050565b6000612f9d60298361357a565b9150612fa882613d5c565b604082019050919050565b6000612fc060298361357a565b9150612fcb82613dab565b604082019050919050565b6000612fe360288361357a565b9150612fee82613dfa565b604082019050919050565b600061300660218361357a565b915061301182613e49565b604082019050919050565b61302581613778565b82525050565b61303481613778565b82525050565b61304381613782565b82525050565b600060208201905061305e6000830184612cdb565b92915050565b600060a0820190506130796000830188612cdb565b6130866020830187612cdb565b81810360408301526130988186612cea565b905081810360608301526130ac8185612cea565b905081810360808301526130c08184612d57565b90509695505050505050565b600060a0820190506130e16000830188612cdb565b6130ee6020830187612cdb565b6130fb604083018661302b565b613108606083018561302b565b818103608083015261311a8184612d57565b90509695505050505050565b600060208201905081810360008301526131408184612cea565b905092915050565b600060408201905081810360008301526131628185612cea565b905081810360208301526131768184612cea565b90509392505050565b60006020820190506131946000830184612d48565b92915050565b600060208201905081810360008301526131b48184612d90565b905092915050565b600060208201905081810360008301526131d581612dc9565b9050919050565b600060208201905081810360008301526131f581612dec565b9050919050565b6000602082019050818103600083015261321581612e0f565b9050919050565b6000602082019050818103600083015261323581612e32565b9050919050565b6000602082019050818103600083015261325581612e55565b9050919050565b6000602082019050818103600083015261327581612e78565b9050919050565b6000602082019050818103600083015261329581612e9b565b9050919050565b600060208201905081810360008301526132b581612ebe565b9050919050565b600060208201905081810360008301526132d581612ee1565b9050919050565b600060208201905081810360008301526132f581612f04565b9050919050565b6000602082019050818103600083015261331581612f27565b9050919050565b6000602082019050818103600083015261333581612f4a565b9050919050565b6000602082019050818103600083015261335581612f6d565b9050919050565b6000602082019050818103600083015261337581612f90565b9050919050565b6000602082019050818103600083015261339581612fb3565b9050919050565b600060208201905081810360008301526133b581612fd6565b9050919050565b600060208201905081810360008301526133d581612ff9565b9050919050565b60006020820190506133f1600083018461302b565b92915050565b600060408201905061340c600083018561302b565b613419602083018461302b565b9392505050565b6000602082019050613435600083018461303a565b92915050565b6000613445613456565b90506134518282613806565b919050565b6000604051905090565b600067ffffffffffffffff82111561347b5761347a613969565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156134a7576134a6613969565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156134d3576134d2613969565b5b6134dc826139d3565b9050602081019050919050565b600067ffffffffffffffff82111561350457613503613969565b5b61350d826139d3565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061359682613778565b91506135a183613778565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135d6576135d56138ad565b5b828201905092915050565b60006135ec82613782565b91506135f783613782565b92508263ffffffff038211156136105761360f6138ad565b5b828201905092915050565b600061362682613778565b915061363183613778565b925082613641576136406138dc565b5b828204905092915050565b600061365782613778565b915061366283613778565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561369b5761369a6138ad565b5b828202905092915050565b60006136b182613778565b91506136bc83613778565b9250828210156136cf576136ce6138ad565b5b828203905092915050565b60006136e582613782565b91506136f083613782565b925082821015613703576137026138ad565b5b828203905092915050565b600061371982613758565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b838110156137bf5780820151818401526020810190506137a4565b838111156137ce576000848401525b50505050565b600060028204905060018216806137ec57607f821691505b60208210811415613800576137ff61390b565b5b50919050565b61380f826139d3565b810181811067ffffffffffffffff8211171561382e5761382d613969565b5b80604052505050565b600061384282613778565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613875576138746138ad565b5b600182019050919050565b600061388b82613782565b915063ffffffff8214156138a2576138a16138ad565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156139b75760046000803e6139b46000516139e4565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53616c65206973206e6f74206163746976652e00000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015613ea857613f2b565b613eb0613456565b60043d036004823e80513d602482011167ffffffffffffffff82111715613ed8575050613f2b565b808201805167ffffffffffffffff811115613ef65750505050613f2b565b80602083010160043d038501811115613f13575050505050613f2b565b613f2282602001850186613806565b82955050505050505b90565b613f378161370e565b8114613f4257600080fd5b50565b613f4e81613720565b8114613f5957600080fd5b50565b613f658161372c565b8114613f7057600080fd5b50565b613f7c81613778565b8114613f8757600080fd5b50565b613f9381613782565b8114613f9e57600080fd5b5056fea2646970667358221220aa6dd986feaf911a6ab34dc49416c5d6eb28e9af6d8695eaebe3a1725226209d64736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f6275636b6574732e6d7970696e6174612e636c6f75642f697066732f516d586d43445a56546262426f6b384257517665554432724b5976764c596e3965446964596144773763686e316f2f7b69647d2e6a736f6e00000000

Deployed Bytecode

0x60806040526004361061013f5760003560e01c80638da5cb5b116100b6578063d5abeb011161006f578063d5abeb0114610426578063e73faa2d14610451578063e985e9c51461047c578063eb8d2444146104b9578063f242432a146104e4578063f2fde38b1461050d5761013f565b80638da5cb5b1461033757806395d89b4114610362578063a22cb4651461038d578063a71bbebe146103b6578063a741ae1e146103d2578063ab0bcc41146103fb5761013f565b806318160ddd1161010857806318160ddd1461024f5780632eb2c2d61461027a5780633ccfd60b146102a35780634e1273f4146102ba578063715018a6146102f7578063729ad39e1461030e5761013f565b8062fdd58e1461014457806301ffc9a71461018157806302fe5305146101be57806306fdde03146101e75780630e89341c14610212575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612ac5565b610536565b60405161017891906133dc565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a39190612bc6565b6105ff565b6040516101b5919061317f565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612c20565b6106e1565b005b3480156101f357600080fd5b506101fc610769565b604051610209919061319a565b60405180910390f35b34801561021e57600080fd5b5061023960048036038101906102349190612c69565b6107a2565b604051610246919061319a565b60405180910390f35b34801561025b57600080fd5b50610264610836565b6040516102719190613420565b60405180910390f35b34801561028657600080fd5b506102a1600480360381019061029c919061291f565b61084c565b005b3480156102af57600080fd5b506102b86108ed565b005b3480156102c657600080fd5b506102e160048036038101906102dc9190612b4e565b610b2c565b6040516102ee9190613126565b60405180910390f35b34801561030357600080fd5b5061030c610c45565b005b34801561031a57600080fd5b5061033560048036038101906103309190612b05565b610ccd565b005b34801561034357600080fd5b5061034c610e00565b6040516103599190613049565b60405180910390f35b34801561036e57600080fd5b50610377610e2a565b604051610384919061319a565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612a85565b610e63565b005b6103d060048036038101906103cb9190612c96565b610e79565b005b3480156103de57600080fd5b506103f960048036038101906103f49190612c96565b610f29565b005b34801561040757600080fd5b50610410610fc9565b60405161041d9190613420565b60405180910390f35b34801561043257600080fd5b5061043b610fdf565b6040516104489190613420565b60405180910390f35b34801561045d57600080fd5b50610466610fe5565b60405161047391906133dc565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e91906128df565b610ff1565b6040516104b0919061317f565b60405180910390f35b3480156104c557600080fd5b506104ce611085565b6040516104db919061317f565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906129ee565b6110a8565b005b34801561051957600080fd5b50610534600480360381019061052f91906128b2565b611149565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e906131fc565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106ca57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106da57506106d982611241565b5b9050919050565b6106e96112ab565b73ffffffffffffffffffffffffffffffffffffffff16610707610e00565b73ffffffffffffffffffffffffffffffffffffffff161461075d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107549061331c565b60405180910390fd5b610766816112b3565b50565b6040518060400160405280600981526020017f4d65746150697a7a61000000000000000000000000000000000000000000000081525081565b6060600280546107b1906137d4565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906137d4565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b50505050509050919050565b600360149054906101000a900463ffffffff1681565b6108546112ab565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061089a5750610899856108946112ab565b610ff1565b5b6108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d0906132bc565b60405180910390fd5b6108e685858585856112cd565b5050505050565b6108f56112ab565b73ffffffffffffffffffffffffffffffffffffffff16610913610e00565b73ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109609061331c565b60405180910390fd5b600060405180604001604052807385d311ce4d669be5b2d386dca34531d240eecd6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200172889fc62f0b701e6393a99495f9d0b24c8858e873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525090506000604051806040016040528061258063ffffffff1663ffffffff16815260200161019063ffffffff1663ffffffff168152509050600047905060005b60028163ffffffff161015610b2657600060016002610a5d91906136a6565b8263ffffffff1614610aaa57612710848363ffffffff1660028110610a8557610a8461393a565b5b602002015163ffffffff1684610a9b919061364c565b610aa5919061361b565b610aac565b475b9050848263ffffffff1660028110610ac757610ac661393a565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b11573d6000803e3d6000fd5b50508080610b1e90613880565b915050610a3e565b50505050565b60608151835114610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b699061337c565b60405180910390fd5b6000835167ffffffffffffffff811115610b8f57610b8e613969565b5b604051908082528060200260200182016040528015610bbd5781602001602082028036833780820191505090505b50905060005b8451811015610c3a57610c0a858281518110610be257610be161393a565b5b6020026020010151858381518110610bfd57610bfc61393a565b5b6020026020010151610536565b828281518110610c1d57610c1c61393a565b5b60200260200101818152505080610c3390613837565b9050610bc3565b508091505092915050565b610c4d6112ab565b73ffffffffffffffffffffffffffffffffffffffff16610c6b610e00565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb89061331c565b60405180910390fd5b610ccb60006115e1565b565b610cd56112ab565b73ffffffffffffffffffffffffffffffffffffffff16610cf3610e00565b73ffffffffffffffffffffffffffffffffffffffff1614610d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d409061331c565b60405180910390fd5b61270f63ffffffff168151600360149054906101000a900463ffffffff1663ffffffff16610d77919061358b565b1115610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf906132fc565b60405180910390fd5b60005b8151811015610dfc57610de9828281518110610dda57610dd961393a565b5b602002602001015160016116a7565b8080610df490613837565b915050610dbb565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600281526020017f4d5000000000000000000000000000000000000000000000000000000000000081525081565b610e75610e6e6112ab565b838361195f565b5050565b610e81611085565b610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb79061333c565b60405180910390fd5b8063ffffffff1667018a59e972118000610eda919061364c565b341015610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061327c565b60405180910390fd5b610f2633826116a7565b50565b610f316112ab565b73ffffffffffffffffffffffffffffffffffffffff16610f4f610e00565b73ffffffffffffffffffffffffffffffffffffffff1614610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c9061331c565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b600360189054906101000a900463ffffffff1681565b61270f81565b67018a59e97211800081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600042600360189054906101000a900463ffffffff1663ffffffff161115905090565b6110b06112ab565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110f657506110f5856110f06112ab565b610ff1565b5b611135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c9061323c565b60405180910390fd5b6111428585858585611acc565b5050505050565b6111516112ab565b73ffffffffffffffffffffffffffffffffffffffff1661116f610e00565b73ffffffffffffffffffffffffffffffffffffffff16146111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc9061331c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c9061321c565b60405180910390fd5b61123e816115e1565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b80600290805190602001906112c9929190612575565b5050565b8151835114611311576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113089061339c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061329c565b60405180910390fd5b600061138b6112ab565b905061139b818787878787611d4e565b60005b845181101561154c5760008582815181106113bc576113bb61393a565b5b6020026020010151905060008583815181106113db576113da61393a565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561147c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611473906132dc565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611531919061358b565b925050819055505050508061154590613837565b905061139e565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516115c3929190613148565b60405180910390a46115d9818787878787611d56565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008163ffffffff16116116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e79061325c565b60405180910390fd5b61270f63ffffffff1681600360149054906101000a900463ffffffff1661171791906135e1565b63ffffffff16111561175e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611755906132fc565b60405180910390fd5b80600360148282829054906101000a900463ffffffff1661177f91906135e1565b92506101000a81548163ffffffff021916908363ffffffff16021790555060018163ffffffff16111561191a5760008163ffffffff1667ffffffffffffffff8111156117ce576117cd613969565b5b6040519080825280602002602001820160405280156117fc5781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff81111561182157611820613969565b5b60405190808252806020026020018201604052801561184f5781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff1610156118f7578084600360149054906101000a900463ffffffff1661188891906136da565b61189291906135e1565b63ffffffff16838263ffffffff16815181106118b1576118b061393a565b5b6020026020010181815250506001828263ffffffff16815181106118d8576118d761393a565b5b60200260200101818152505080806118ef90613880565b915050611855565b5061191384838360405180602001604052806000815250611f3d565b505061195b565b61195a826001600360149054906101000a900463ffffffff1661193d91906136da565b63ffffffff1660016040518060200160405280600081525061215b565b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061335c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611abf919061317f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b339061329c565b60405180910390fd5b6000611b466112ab565b9050611b66818787611b57886122f1565b611b60886122f1565b87611d4e565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf4906132dc565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cb2919061358b565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611d2f9291906133f7565b60405180910390a4611d4582888888888861236b565b50505050505050565b505050505050565b611d758473ffffffffffffffffffffffffffffffffffffffff16612552565b15611f35578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611dbb959493929190613064565b602060405180830381600087803b158015611dd557600080fd5b505af1925050508015611e0657506040513d601f19601f82011682018060405250810190611e039190612bf3565b60015b611eac57611e12613998565b806308c379a01415611e6f5750611e27613e98565b80611e325750611e71565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e66919061319a565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea3906131bc565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a906131dc565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa4906133bc565b60405180910390fd5b8151835114611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe89061339c565b60405180910390fd5b6000611ffb6112ab565b905061200c81600087878787611d4e565b60005b84518110156120c55783818151811061202b5761202a61393a565b5b60200260200101516000808784815181106120495761204861393a565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120ab919061358b565b9250508190555080806120bd90613837565b91505061200f565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161213d929190613148565b60405180910390a461215481600087878787611d56565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c2906133bc565b60405180910390fd5b60006121d56112ab565b90506121f6816000876121e7886122f1565b6121f0886122f1565b87611d4e565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612255919061358b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516122d39291906133f7565b60405180910390a46122ea8160008787878761236b565b5050505050565b60606000600167ffffffffffffffff8111156123105761230f613969565b5b60405190808252806020026020018201604052801561233e5781602001602082028036833780820191505090505b50905082816000815181106123565761235561393a565b5b60200260200101818152505080915050919050565b61238a8473ffffffffffffffffffffffffffffffffffffffff16612552565b1561254a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016123d09594939291906130cc565b602060405180830381600087803b1580156123ea57600080fd5b505af192505050801561241b57506040513d601f19601f820116820180604052508101906124189190612bf3565b60015b6124c157612427613998565b806308c379a01415612484575061243c613e98565b806124475750612486565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b919061319a565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906131bc565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253f906131dc565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612581906137d4565b90600052602060002090601f0160209004810192826125a357600085556125ea565b82601f106125bc57805160ff19168380011785556125ea565b828001600101855582156125ea579182015b828111156125e95782518255916020019190600101906125ce565b5b5090506125f791906125fb565b5090565b5b808211156126145760008160009055506001016125fc565b5090565b600061262b61262684613460565b61343b565b9050808382526020820190508285602086028201111561264e5761264d6139bf565b5b60005b8581101561267e5781612664888261277c565b845260208401935060208301925050600181019050612651565b5050509392505050565b600061269b6126968461348c565b61343b565b905080838252602082019050828560208602820111156126be576126bd6139bf565b5b60005b858110156126ee57816126d48882612888565b8452602084019350602083019250506001810190506126c1565b5050509392505050565b600061270b612706846134b8565b61343b565b905082815260208101848484011115612727576127266139c4565b5b612732848285613792565b509392505050565b600061274d612748846134e9565b61343b565b905082815260208101848484011115612769576127686139c4565b5b612774848285613792565b509392505050565b60008135905061278b81613f2e565b92915050565b600082601f8301126127a6576127a56139ba565b5b81356127b6848260208601612618565b91505092915050565b600082601f8301126127d4576127d36139ba565b5b81356127e4848260208601612688565b91505092915050565b6000813590506127fc81613f45565b92915050565b60008135905061281181613f5c565b92915050565b60008151905061282681613f5c565b92915050565b600082601f830112612841576128406139ba565b5b81356128518482602086016126f8565b91505092915050565b600082601f83011261286f5761286e6139ba565b5b813561287f84826020860161273a565b91505092915050565b60008135905061289781613f73565b92915050565b6000813590506128ac81613f8a565b92915050565b6000602082840312156128c8576128c76139ce565b5b60006128d68482850161277c565b91505092915050565b600080604083850312156128f6576128f56139ce565b5b60006129048582860161277c565b92505060206129158582860161277c565b9150509250929050565b600080600080600060a0868803121561293b5761293a6139ce565b5b60006129498882890161277c565b955050602061295a8882890161277c565b945050604086013567ffffffffffffffff81111561297b5761297a6139c9565b5b612987888289016127bf565b935050606086013567ffffffffffffffff8111156129a8576129a76139c9565b5b6129b4888289016127bf565b925050608086013567ffffffffffffffff8111156129d5576129d46139c9565b5b6129e18882890161282c565b9150509295509295909350565b600080600080600060a08688031215612a0a57612a096139ce565b5b6000612a188882890161277c565b9550506020612a298882890161277c565b9450506040612a3a88828901612888565b9350506060612a4b88828901612888565b925050608086013567ffffffffffffffff811115612a6c57612a6b6139c9565b5b612a788882890161282c565b9150509295509295909350565b60008060408385031215612a9c57612a9b6139ce565b5b6000612aaa8582860161277c565b9250506020612abb858286016127ed565b9150509250929050565b60008060408385031215612adc57612adb6139ce565b5b6000612aea8582860161277c565b9250506020612afb85828601612888565b9150509250929050565b600060208284031215612b1b57612b1a6139ce565b5b600082013567ffffffffffffffff811115612b3957612b386139c9565b5b612b4584828501612791565b91505092915050565b60008060408385031215612b6557612b646139ce565b5b600083013567ffffffffffffffff811115612b8357612b826139c9565b5b612b8f85828601612791565b925050602083013567ffffffffffffffff811115612bb057612baf6139c9565b5b612bbc858286016127bf565b9150509250929050565b600060208284031215612bdc57612bdb6139ce565b5b6000612bea84828501612802565b91505092915050565b600060208284031215612c0957612c086139ce565b5b6000612c1784828501612817565b91505092915050565b600060208284031215612c3657612c356139ce565b5b600082013567ffffffffffffffff811115612c5457612c536139c9565b5b612c608482850161285a565b91505092915050565b600060208284031215612c7f57612c7e6139ce565b5b6000612c8d84828501612888565b91505092915050565b600060208284031215612cac57612cab6139ce565b5b6000612cba8482850161289d565b91505092915050565b6000612ccf838361301c565b60208301905092915050565b612ce48161370e565b82525050565b6000612cf58261352a565b612cff8185613558565b9350612d0a8361351a565b8060005b83811015612d3b578151612d228882612cc3565b9750612d2d8361354b565b925050600181019050612d0e565b5085935050505092915050565b612d5181613720565b82525050565b6000612d6282613535565b612d6c8185613569565b9350612d7c8185602086016137a1565b612d85816139d3565b840191505092915050565b6000612d9b82613540565b612da5818561357a565b9350612db58185602086016137a1565b612dbe816139d3565b840191505092915050565b6000612dd660348361357a565b9150612de1826139f1565b604082019050919050565b6000612df960288361357a565b9150612e0482613a40565b604082019050919050565b6000612e1c602b8361357a565b9150612e2782613a8f565b604082019050919050565b6000612e3f60268361357a565b9150612e4a82613ade565b604082019050919050565b6000612e6260298361357a565b9150612e6d82613b2d565b604082019050919050565b6000612e85601d8361357a565b9150612e9082613b7c565b602082019050919050565b6000612ea860118361357a565b9150612eb382613ba5565b602082019050919050565b6000612ecb60258361357a565b9150612ed682613bce565b604082019050919050565b6000612eee60328361357a565b9150612ef982613c1d565b604082019050919050565b6000612f11602a8361357a565b9150612f1c82613c6c565b604082019050919050565b6000612f3460298361357a565b9150612f3f82613cbb565b604082019050919050565b6000612f5760208361357a565b9150612f6282613d0a565b602082019050919050565b6000612f7a60138361357a565b9150612f8582613d33565b602082019050919050565b6000612f9d60298361357a565b9150612fa882613d5c565b604082019050919050565b6000612fc060298361357a565b9150612fcb82613dab565b604082019050919050565b6000612fe360288361357a565b9150612fee82613dfa565b604082019050919050565b600061300660218361357a565b915061301182613e49565b604082019050919050565b61302581613778565b82525050565b61303481613778565b82525050565b61304381613782565b82525050565b600060208201905061305e6000830184612cdb565b92915050565b600060a0820190506130796000830188612cdb565b6130866020830187612cdb565b81810360408301526130988186612cea565b905081810360608301526130ac8185612cea565b905081810360808301526130c08184612d57565b90509695505050505050565b600060a0820190506130e16000830188612cdb565b6130ee6020830187612cdb565b6130fb604083018661302b565b613108606083018561302b565b818103608083015261311a8184612d57565b90509695505050505050565b600060208201905081810360008301526131408184612cea565b905092915050565b600060408201905081810360008301526131628185612cea565b905081810360208301526131768184612cea565b90509392505050565b60006020820190506131946000830184612d48565b92915050565b600060208201905081810360008301526131b48184612d90565b905092915050565b600060208201905081810360008301526131d581612dc9565b9050919050565b600060208201905081810360008301526131f581612dec565b9050919050565b6000602082019050818103600083015261321581612e0f565b9050919050565b6000602082019050818103600083015261323581612e32565b9050919050565b6000602082019050818103600083015261325581612e55565b9050919050565b6000602082019050818103600083015261327581612e78565b9050919050565b6000602082019050818103600083015261329581612e9b565b9050919050565b600060208201905081810360008301526132b581612ebe565b9050919050565b600060208201905081810360008301526132d581612ee1565b9050919050565b600060208201905081810360008301526132f581612f04565b9050919050565b6000602082019050818103600083015261331581612f27565b9050919050565b6000602082019050818103600083015261333581612f4a565b9050919050565b6000602082019050818103600083015261335581612f6d565b9050919050565b6000602082019050818103600083015261337581612f90565b9050919050565b6000602082019050818103600083015261339581612fb3565b9050919050565b600060208201905081810360008301526133b581612fd6565b9050919050565b600060208201905081810360008301526133d581612ff9565b9050919050565b60006020820190506133f1600083018461302b565b92915050565b600060408201905061340c600083018561302b565b613419602083018461302b565b9392505050565b6000602082019050613435600083018461303a565b92915050565b6000613445613456565b90506134518282613806565b919050565b6000604051905090565b600067ffffffffffffffff82111561347b5761347a613969565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156134a7576134a6613969565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156134d3576134d2613969565b5b6134dc826139d3565b9050602081019050919050565b600067ffffffffffffffff82111561350457613503613969565b5b61350d826139d3565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061359682613778565b91506135a183613778565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135d6576135d56138ad565b5b828201905092915050565b60006135ec82613782565b91506135f783613782565b92508263ffffffff038211156136105761360f6138ad565b5b828201905092915050565b600061362682613778565b915061363183613778565b925082613641576136406138dc565b5b828204905092915050565b600061365782613778565b915061366283613778565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561369b5761369a6138ad565b5b828202905092915050565b60006136b182613778565b91506136bc83613778565b9250828210156136cf576136ce6138ad565b5b828203905092915050565b60006136e582613782565b91506136f083613782565b925082821015613703576137026138ad565b5b828203905092915050565b600061371982613758565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b838110156137bf5780820151818401526020810190506137a4565b838111156137ce576000848401525b50505050565b600060028204905060018216806137ec57607f821691505b60208210811415613800576137ff61390b565b5b50919050565b61380f826139d3565b810181811067ffffffffffffffff8211171561382e5761382d613969565b5b80604052505050565b600061384282613778565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613875576138746138ad565b5b600182019050919050565b600061388b82613782565b915063ffffffff8214156138a2576138a16138ad565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156139b75760046000803e6139b46000516139e4565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f53616c65206973206e6f74206163746976652e00000000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015613ea857613f2b565b613eb0613456565b60043d036004823e80513d602482011167ffffffffffffffff82111715613ed8575050613f2b565b808201805167ffffffffffffffff811115613ef65750505050613f2b565b80602083010160043d038501811115613f13575050505050613f2b565b613f2282602001850186613806565b82955050505050505b90565b613f378161370e565b8114613f4257600080fd5b50565b613f4e81613720565b8114613f5957600080fd5b50565b613f658161372c565b8114613f7057600080fd5b50565b613f7c81613778565b8114613f8757600080fd5b50565b613f9381613782565b8114613f9e57600080fd5b5056fea2646970667358221220aa6dd986feaf911a6ab34dc49416c5d6eb28e9af6d8695eaebe3a1725226209d64736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f6275636b6574732e6d7970696e6174612e636c6f75642f697066732f516d586d43445a56546262426f6b384257517665554432724b5976764c596e3965446964596144773763686e316f2f7b69647d2e6a736f6e00000000

-----Decoded View---------------
Arg [0] : _uri (string): https://buckets.mypinata.cloud/ipfs/QmXmCDZVTbbBok8BWQveUD2rKYvvLYn9eDidYaDw7chn1o/{id}.json

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000005c
Arg [2] : 68747470733a2f2f6275636b6574732e6d7970696e6174612e636c6f75642f69
Arg [3] : 7066732f516d586d43445a56546262426f6b384257517665554432724b597676
Arg [4] : 4c596e3965446964596144773763686e316f2f7b69647d2e6a736f6e00000000


Deployed Bytecode Sourcemap

38277:2612:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24703:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23726:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38655:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38323:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24447:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38416:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26642:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40285:601;;;;;;;;;;;;;:::i;:::-;;25100:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3932:103;;;;;;;;;;;;;:::i;:::-;;39949:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3281:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38371:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25697:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39721:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38750:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38554:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38452:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38498:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25924:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38859:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26164:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4190:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24703:231;24789:7;24836:1;24817:21;;:7;:21;;;;24809:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;24904:9;:13;24914:2;24904:13;;;;;;;;;;;:22;24918:7;24904:22;;;;;;;;;;;;;;;;24897:29;;24703:231;;;;:::o;23726:310::-;23828:4;23880:26;23865:41;;;:11;:41;;;;:110;;;;23938:37;23923:52;;;:11;:52;;;;23865:110;:163;;;;23992:36;24016:11;23992:23;:36::i;:::-;23865:163;23845:183;;23726:310;;;:::o;38655:87::-;3512:12;:10;:12::i;:::-;3501:23;;:7;:5;:7::i;:::-;:23;;;3493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38721:13:::1;38729:4;38721:7;:13::i;:::-;38655:87:::0;:::o;38323:41::-;;;;;;;;;;;;;;;;;;;:::o;24447:105::-;24507:13;24540:4;24533:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24447:105;;;:::o;38416:29::-;;;;;;;;;;;;;:::o;26642:442::-;26883:12;:10;:12::i;:::-;26875:20;;:4;:20;;;:60;;;;26899:36;26916:4;26922:12;:10;:12::i;:::-;26899:16;:36::i;:::-;26875:60;26853:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;27024:52;27047:4;27053:2;27057:3;27062:7;27071:4;27024:22;:52::i;:::-;26642:442;;;;;:::o;40285:601::-;3512:12;:10;:12::i;:::-;3501:23;;:7;:5;:7::i;:::-;:23;;;3493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;40335:27:::1;:155;;;;;;;;40380:42;40335:155;;;;;;;;40437:42;40335:155;;;;;;::::0;::::1;;40503:23;:53;;;;;;;;40537:4;40503:53;;;;;;;;40551:3;40503:53;;;;;;::::0;::::1;;40569:15;40587:21;40569:39;;40626:8;40621:258;40644:16;40640:1;:20;;;40621:258;;;40682:14;40723:1;40704:16;:20;;;;:::i;:::-;40699:1;:25;;;:115;;40809:5;40796:6;40803:1;40796:9;;;;;;;;;:::i;:::-;;;;;;40786:19;;:7;:19;;;;:::i;:::-;40785:29;;;;:::i;:::-;40699:115;;;40744:21;40699:115;40682:132;;40837:9;40847:1;40837:12;;;;;;;;;:::i;:::-;;;;;;40829:30;;:38;40860:6;40829:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;40667:212;40662:3;;;;;:::i;:::-;;;;40621:258;;;;40324:562;;;40285:601::o:0;25100:524::-;25256:16;25317:3;:10;25298:8;:15;:29;25290:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25386:30;25433:8;:15;25419:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25386:63;;25467:9;25462:122;25486:8;:15;25482:1;:19;25462:122;;;25542:30;25552:8;25561:1;25552:11;;;;;;;;:::i;:::-;;;;;;;;25565:3;25569:1;25565:6;;;;;;;;:::i;:::-;;;;;;;;25542:9;:30::i;:::-;25523:13;25537:1;25523:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;25503:3;;;;:::i;:::-;;;25462:122;;;;25603:13;25596:20;;;25100:524;;;;:::o;3932:103::-;3512:12;:10;:12::i;:::-;3501:23;;:7;:5;:7::i;:::-;:23;;;3493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3997:30:::1;4024:1;3997:18;:30::i;:::-;3932:103::o:0;39949:328::-;3512:12;:10;:12::i;:::-;3501:23;;:7;:5;:7::i;:::-;:23;;;3493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38487:4:::1;40047:44;;40061:10;:17;40047:11;;;;;;;;;;;:31;;;;;;:::i;:::-;:44;;40025:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;40178:9;40173:97;40197:10;:17;40193:1;:21;40173:97;;;40236:22;40241:10;40252:1;40241:13;;;;;;;;:::i;:::-;;;;;;;;40256:1;40236:4;:22::i;:::-;40216:3;;;;;:::i;:::-;;;;40173:97;;;;39949:328:::0;:::o;3281:87::-;3327:7;3354:6;;;;;;;;;;;3347:13;;3281:87;:::o;38371:36::-;;;;;;;;;;;;;;;;;;;:::o;25697:155::-;25792:52;25811:12;:10;:12::i;:::-;25825:8;25835;25792:18;:52::i;:::-;25697:155;;:::o;39721:220::-;39786:14;:12;:14::i;:::-;39778:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;39868:6;39856:18;;38534:11;39856:18;;;;:::i;:::-;39843:9;:31;;39835:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;39909:24;39914:10;39926:6;39909:4;:24::i;:::-;39721:220;:::o;38750:101::-;3512:12;:10;:12::i;:::-;3501:23;;:7;:5;:7::i;:::-;:23;;;3493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38833:10:::1;38821:9;;:22;;;;;;;;;;;;;;;;;;38750:101:::0;:::o;38554:36::-;;;;;;;;;;;;;:::o;38452:39::-;38487:4;38452:39;:::o;38498:47::-;38534:11;38498:47;:::o;25924:168::-;26023:4;26047:18;:27;26066:7;26047:27;;;;;;;;;;;;;;;:37;26075:8;26047:37;;;;;;;;;;;;;;;;;;;;;;;;;26040:44;;25924:168;;;;:::o;38859:105::-;38904:4;38941:15;38928:9;;;;;;;;;;;:28;;;;38921:35;;38859:105;:::o;26164:401::-;26380:12;:10;:12::i;:::-;26372:20;;:4;:20;;;:60;;;;26396:36;26413:4;26419:12;:10;:12::i;:::-;26396:16;:36::i;:::-;26372:60;26350:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;26512:45;26530:4;26536:2;26540;26544:6;26552:4;26512:17;:45::i;:::-;26164:401;;;;;:::o;4190:201::-;3512:12;:10;:12::i;:::-;3501:23;;:7;:5;:7::i;:::-;:23;;;3493:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4299:1:::1;4279:22;;:8;:22;;;;4271:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4355:28;4374:8;4355:18;:28::i;:::-;4190:201:::0;:::o;15034:157::-;15119:4;15158:25;15143:40;;;:11;:40;;;;15136:47;;15034:157;;;:::o;2005:98::-;2058:7;2085:10;2078:17;;2005:98;:::o;30644:88::-;30718:6;30711:4;:13;;;;;;;;;;;;:::i;:::-;;30644:88;:::o;28726:1074::-;28953:7;:14;28939:3;:10;:28;28931:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;29045:1;29031:16;;:2;:16;;;;29023:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;29102:16;29121:12;:10;:12::i;:::-;29102:31;;29146:60;29167:8;29177:4;29183:2;29187:3;29192:7;29201:4;29146:20;:60::i;:::-;29224:9;29219:421;29243:3;:10;29239:1;:14;29219:421;;;29275:10;29288:3;29292:1;29288:6;;;;;;;;:::i;:::-;;;;;;;;29275:19;;29309:14;29326:7;29334:1;29326:10;;;;;;;;:::i;:::-;;;;;;;;29309:27;;29353:19;29375:9;:13;29385:2;29375:13;;;;;;;;;;;:19;29389:4;29375:19;;;;;;;;;;;;;;;;29353:41;;29432:6;29417:11;:21;;29409:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;29565:6;29551:11;:20;29529:9;:13;29539:2;29529:13;;;;;;;;;;;:19;29543:4;29529:19;;;;;;;;;;;;;;;:42;;;;29622:6;29601:9;:13;29611:2;29601:13;;;;;;;;;;;:17;29615:2;29601:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;29260:380;;;29255:3;;;;:::i;:::-;;;29219:421;;;;29687:2;29657:47;;29681:4;29657:47;;29671:8;29657:47;;;29691:3;29696:7;29657:47;;;;;;;:::i;:::-;;;;;;;;29717:75;29753:8;29763:4;29769:2;29773:3;29778:7;29787:4;29717:35;:75::i;:::-;28920:880;28726:1074;;;;;:::o;4551:191::-;4625:16;4644:6;;;;;;;;;;;4625:25;;4670:8;4661:6;;:17;;;;;;;;;;;;;;;;;;4725:8;4694:40;;4715:8;4694:40;;;;;;;;;;;;4614:128;4551:191;:::o;38972:741::-;39051:1;39042:6;:10;;;39034:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;38487:4;39119:33;;39133:6;39119:11;;;;;;;;;;;:20;;;;:::i;:::-;:33;;;;39097:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;39249:6;39234:11;;:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;39281:1;39272:6;:10;;;39268:438;;;39299:20;39344:6;39336:15;;39322:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39299:53;;39367:24;39416:6;39408:15;;39394:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39367:57;;39446:8;39441:137;39464:6;39460:10;;:1;:10;;;39441:137;;;39528:1;39519:6;39505:11;;;;;;;;;;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;39496:33;;:3;39500:1;39496:6;;;;;;;;;;:::i;:::-;;;;;;;:33;;;;;39561:1;39548:7;39556:1;39548:10;;;;;;;;;;:::i;:::-;;;;;;;:14;;;;;39472:3;;;;;:::i;:::-;;;;39441:137;;;;39594:33;39605:3;39610;39615:7;39594:33;;;;;;;;;;;;:10;:33::i;:::-;39284:355;;39268:438;;;39660:34;39666:3;39685:1;39671:11;;;;;;;;;;;:15;;;;:::i;:::-;39660:34;;39688:1;39660:34;;;;;;;;;;;;:5;:34::i;:::-;39268:438;38972:741;;:::o;34912:331::-;35067:8;35058:17;;:5;:17;;;;35050:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;35170:8;35132:18;:25;35151:5;35132:25;;;;;;;;;;;;;;;:35;35158:8;35132:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35216:8;35194:41;;35209:5;35194:41;;;35226:8;35194:41;;;;;;:::i;:::-;;;;;;;;34912:331;;;:::o;27548:820::-;27750:1;27736:16;;:2;:16;;;;27728:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27807:16;27826:12;:10;:12::i;:::-;27807:31;;27851:96;27872:8;27882:4;27888:2;27892:21;27910:2;27892:17;:21::i;:::-;27915:25;27933:6;27915:17;:25::i;:::-;27942:4;27851:20;:96::i;:::-;27960:19;27982:9;:13;27992:2;27982:13;;;;;;;;;;;:19;27996:4;27982:19;;;;;;;;;;;;;;;;27960:41;;28035:6;28020:11;:21;;28012:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;28160:6;28146:11;:20;28124:9;:13;28134:2;28124:13;;;;;;;;;;;:19;28138:4;28124:19;;;;;;;;;;;;;;;:42;;;;28209:6;28188:9;:13;28198:2;28188:13;;;;;;;;;;;:17;28202:2;28188:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;28264:2;28233:46;;28258:4;28233:46;;28248:8;28233:46;;;28268:2;28272:6;28233:46;;;;;;;:::i;:::-;;;;;;;;28292:68;28323:8;28333:4;28339:2;28343;28347:6;28355:4;28292:30;:68::i;:::-;27717:651;;27548:820;;;;;:::o;36199:221::-;;;;;;;:::o;37180:813::-;37420:15;:2;:13;;;:15::i;:::-;37416:570;;;37473:2;37456:43;;;37500:8;37510:4;37516:3;37521:7;37530:4;37456:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;37452:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;37848:6;37841:14;;;;;;;;;;;:::i;:::-;;;;;;;;37452:523;;;37897:62;;;;;;;;;;:::i;:::-;;;;;;;;37452:523;37629:48;;;37617:60;;;:8;:60;;;;37613:159;;37702:50;;;;;;;;;;:::i;:::-;;;;;;;;37613:159;37536:251;37416:570;37180:813;;;;;;:::o;32043:735::-;32235:1;32221:16;;:2;:16;;;;32213:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32308:7;:14;32294:3;:10;:28;32286:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;32380:16;32399:12;:10;:12::i;:::-;32380:31;;32424:66;32445:8;32463:1;32467:2;32471:3;32476:7;32485:4;32424:20;:66::i;:::-;32508:9;32503:103;32527:3;:10;32523:1;:14;32503:103;;;32584:7;32592:1;32584:10;;;;;;;;:::i;:::-;;;;;;;;32559:9;:17;32569:3;32573:1;32569:6;;;;;;;;:::i;:::-;;;;;;;;32559:17;;;;;;;;;;;:21;32577:2;32559:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;32539:3;;;;;:::i;:::-;;;;32503:103;;;;32659:2;32623:53;;32655:1;32623:53;;32637:8;32623:53;;;32663:3;32668:7;32623:53;;;;;;;:::i;:::-;;;;;;;;32689:81;32725:8;32743:1;32747:2;32751:3;32756:7;32765:4;32689:35;:81::i;:::-;32202:576;32043:735;;;;:::o;31118:569::-;31285:1;31271:16;;:2;:16;;;;31263:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;31338:16;31357:12;:10;:12::i;:::-;31338:31;;31382:102;31403:8;31421:1;31425:2;31429:21;31447:2;31429:17;:21::i;:::-;31452:25;31470:6;31452:17;:25::i;:::-;31479:4;31382:20;:102::i;:::-;31518:6;31497:9;:13;31507:2;31497:13;;;;;;;;;;;:17;31511:2;31497:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;31577:2;31540:52;;31573:1;31540:52;;31555:8;31540:52;;;31581:2;31585:6;31540:52;;;;;;;:::i;:::-;;;;;;;;31605:74;31636:8;31654:1;31658:2;31662;31666:6;31674:4;31605:30;:74::i;:::-;31252:435;31118:569;;;;:::o;38001:198::-;38067:16;38096:22;38135:1;38121:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38096:41;;38159:7;38148:5;38154:1;38148:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;38186:5;38179:12;;;38001:198;;;:::o;36428:744::-;36643:15;:2;:13;;;:15::i;:::-;36639:526;;;36696:2;36679:38;;;36718:8;36728:4;36734:2;36738:6;36746:4;36679:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36675:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;37027:6;37020:14;;;;;;;;;;;:::i;:::-;;;;;;;;36675:479;;;37076:62;;;;;;;;;;:::i;:::-;;;;;;;;36675:479;36813:43;;;36801:55;;;:8;:55;;;;36797:154;;36881:50;;;;;;;;;;:::i;:::-;;;;;;;;36797:154;36752:214;36639:526;36428:744;;;;;;:::o;5982:326::-;6042:4;6299:1;6277:7;:19;;;:23;6270:30;;5982:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3401:137;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3544:141;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:122;;3816:79;;:::i;:::-;3775:122;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;3704:338;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:122;;4175:79;;:::i;:::-;4134:122;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;4062:340;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4408:139;;;;:::o;4553:137::-;4598:5;4636:6;4623:20;4614:29;;4652:32;4678:5;4652:32;:::i;:::-;4553:137;;;;:::o;4696:329::-;4755:6;4804:2;4792:9;4783:7;4779:23;4775:32;4772:119;;;4810:79;;:::i;:::-;4772:119;4930:1;4955:53;5000:7;4991:6;4980:9;4976:22;4955:53;:::i;:::-;4945:63;;4901:117;4696:329;;;;:::o;5031:474::-;5099:6;5107;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5253:117;5409:2;5435:53;5480:7;5471:6;5460:9;5456:22;5435:53;:::i;:::-;5425:63;;5380:118;5031:474;;;;;:::o;5511:1509::-;5665:6;5673;5681;5689;5697;5746:3;5734:9;5725:7;5721:23;5717:33;5714:120;;;5753:79;;:::i;:::-;5714:120;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;6000:2;6026:53;6071:7;6062:6;6051:9;6047:22;6026:53;:::i;:::-;6016:63;;5971:118;6156:2;6145:9;6141:18;6128:32;6187:18;6179:6;6176:30;6173:117;;;6209:79;;:::i;:::-;6173:117;6314:78;6384:7;6375:6;6364:9;6360:22;6314:78;:::i;:::-;6304:88;;6099:303;6469:2;6458:9;6454:18;6441:32;6500:18;6492:6;6489:30;6486:117;;;6522:79;;:::i;:::-;6486:117;6627:78;6697:7;6688:6;6677:9;6673:22;6627:78;:::i;:::-;6617:88;;6412:303;6782:3;6771:9;6767:19;6754:33;6814:18;6806:6;6803:30;6800:117;;;6836:79;;:::i;:::-;6800:117;6941:62;6995:7;6986:6;6975:9;6971:22;6941:62;:::i;:::-;6931:72;;6725:288;5511:1509;;;;;;;;:::o;7026:1089::-;7130:6;7138;7146;7154;7162;7211:3;7199:9;7190:7;7186:23;7182:33;7179:120;;;7218:79;;:::i;:::-;7179:120;7338:1;7363:53;7408:7;7399:6;7388:9;7384:22;7363:53;:::i;:::-;7353:63;;7309:117;7465:2;7491:53;7536:7;7527:6;7516:9;7512:22;7491:53;:::i;:::-;7481:63;;7436:118;7593:2;7619:53;7664:7;7655:6;7644:9;7640:22;7619:53;:::i;:::-;7609:63;;7564:118;7721:2;7747:53;7792:7;7783:6;7772:9;7768:22;7747:53;:::i;:::-;7737:63;;7692:118;7877:3;7866:9;7862:19;7849:33;7909:18;7901:6;7898:30;7895:117;;;7931:79;;:::i;:::-;7895:117;8036:62;8090:7;8081:6;8070:9;8066:22;8036:62;:::i;:::-;8026:72;;7820:288;7026:1089;;;;;;;;:::o;8121:468::-;8186:6;8194;8243:2;8231:9;8222:7;8218:23;8214:32;8211:119;;;8249:79;;:::i;:::-;8211:119;8369:1;8394:53;8439:7;8430:6;8419:9;8415:22;8394:53;:::i;:::-;8384:63;;8340:117;8496:2;8522:50;8564:7;8555:6;8544:9;8540:22;8522:50;:::i;:::-;8512:60;;8467:115;8121:468;;;;;:::o;8595:474::-;8663:6;8671;8720:2;8708:9;8699:7;8695:23;8691:32;8688:119;;;8726:79;;:::i;:::-;8688:119;8846:1;8871:53;8916:7;8907:6;8896:9;8892:22;8871:53;:::i;:::-;8861:63;;8817:117;8973:2;8999:53;9044:7;9035:6;9024:9;9020:22;8999:53;:::i;:::-;8989:63;;8944:118;8595:474;;;;;:::o;9075:539::-;9159:6;9208:2;9196:9;9187:7;9183:23;9179:32;9176:119;;;9214:79;;:::i;:::-;9176:119;9362:1;9351:9;9347:17;9334:31;9392:18;9384:6;9381:30;9378:117;;;9414:79;;:::i;:::-;9378:117;9519:78;9589:7;9580:6;9569:9;9565:22;9519:78;:::i;:::-;9509:88;;9305:302;9075:539;;;;:::o;9620:894::-;9738:6;9746;9795:2;9783:9;9774:7;9770:23;9766:32;9763:119;;;9801:79;;:::i;:::-;9763:119;9949:1;9938:9;9934:17;9921:31;9979:18;9971:6;9968:30;9965:117;;;10001:79;;:::i;:::-;9965:117;10106:78;10176:7;10167:6;10156:9;10152:22;10106:78;:::i;:::-;10096:88;;9892:302;10261:2;10250:9;10246:18;10233:32;10292:18;10284:6;10281:30;10278:117;;;10314:79;;:::i;:::-;10278:117;10419:78;10489:7;10480:6;10469:9;10465:22;10419:78;:::i;:::-;10409:88;;10204:303;9620:894;;;;;:::o;10520:327::-;10578:6;10627:2;10615:9;10606:7;10602:23;10598:32;10595:119;;;10633:79;;:::i;:::-;10595:119;10753:1;10778:52;10822:7;10813:6;10802:9;10798:22;10778:52;:::i;:::-;10768:62;;10724:116;10520:327;;;;:::o;10853:349::-;10922:6;10971:2;10959:9;10950:7;10946:23;10942:32;10939:119;;;10977:79;;:::i;:::-;10939:119;11097:1;11122:63;11177:7;11168:6;11157:9;11153:22;11122:63;:::i;:::-;11112:73;;11068:127;10853:349;;;;:::o;11208:509::-;11277:6;11326:2;11314:9;11305:7;11301:23;11297:32;11294:119;;;11332:79;;:::i;:::-;11294:119;11480:1;11469:9;11465:17;11452:31;11510:18;11502:6;11499:30;11496:117;;;11532:79;;:::i;:::-;11496:117;11637:63;11692:7;11683:6;11672:9;11668:22;11637:63;:::i;:::-;11627:73;;11423:287;11208:509;;;;:::o;11723:329::-;11782:6;11831:2;11819:9;11810:7;11806:23;11802:32;11799:119;;;11837:79;;:::i;:::-;11799:119;11957:1;11982:53;12027:7;12018:6;12007:9;12003:22;11982:53;:::i;:::-;11972:63;;11928:117;11723:329;;;;:::o;12058:327::-;12116:6;12165:2;12153:9;12144:7;12140:23;12136:32;12133:119;;;12171:79;;:::i;:::-;12133:119;12291:1;12316:52;12360:7;12351:6;12340:9;12336:22;12316:52;:::i;:::-;12306:62;;12262:116;12058:327;;;;:::o;12391:179::-;12460:10;12481:46;12523:3;12515:6;12481:46;:::i;:::-;12559:4;12554:3;12550:14;12536:28;;12391:179;;;;:::o;12576:118::-;12663:24;12681:5;12663:24;:::i;:::-;12658:3;12651:37;12576:118;;:::o;12730:732::-;12849:3;12878:54;12926:5;12878:54;:::i;:::-;12948:86;13027:6;13022:3;12948:86;:::i;:::-;12941:93;;13058:56;13108:5;13058:56;:::i;:::-;13137:7;13168:1;13153:284;13178:6;13175:1;13172:13;13153:284;;;13254:6;13248:13;13281:63;13340:3;13325:13;13281:63;:::i;:::-;13274:70;;13367:60;13420:6;13367:60;:::i;:::-;13357:70;;13213:224;13200:1;13197;13193:9;13188:14;;13153:284;;;13157:14;13453:3;13446:10;;12854:608;;;12730:732;;;;:::o;13468:109::-;13549:21;13564:5;13549:21;:::i;:::-;13544:3;13537:34;13468:109;;:::o;13583:360::-;13669:3;13697:38;13729:5;13697:38;:::i;:::-;13751:70;13814:6;13809:3;13751:70;:::i;:::-;13744:77;;13830:52;13875:6;13870:3;13863:4;13856:5;13852:16;13830:52;:::i;:::-;13907:29;13929:6;13907:29;:::i;:::-;13902:3;13898:39;13891:46;;13673:270;13583:360;;;;:::o;13949:364::-;14037:3;14065:39;14098:5;14065:39;:::i;:::-;14120:71;14184:6;14179:3;14120:71;:::i;:::-;14113:78;;14200:52;14245:6;14240:3;14233:4;14226:5;14222:16;14200:52;:::i;:::-;14277:29;14299:6;14277:29;:::i;:::-;14272:3;14268:39;14261:46;;14041:272;13949:364;;;;:::o;14319:366::-;14461:3;14482:67;14546:2;14541:3;14482:67;:::i;:::-;14475:74;;14558:93;14647:3;14558:93;:::i;:::-;14676:2;14671:3;14667:12;14660:19;;14319:366;;;:::o;14691:::-;14833:3;14854:67;14918:2;14913:3;14854:67;:::i;:::-;14847:74;;14930:93;15019:3;14930:93;:::i;:::-;15048:2;15043:3;15039:12;15032:19;;14691:366;;;:::o;15063:::-;15205:3;15226:67;15290:2;15285:3;15226:67;:::i;:::-;15219:74;;15302:93;15391:3;15302:93;:::i;:::-;15420:2;15415:3;15411:12;15404:19;;15063:366;;;:::o;15435:::-;15577:3;15598:67;15662:2;15657:3;15598:67;:::i;:::-;15591:74;;15674:93;15763:3;15674:93;:::i;:::-;15792:2;15787:3;15783:12;15776:19;;15435:366;;;:::o;15807:::-;15949:3;15970:67;16034:2;16029:3;15970:67;:::i;:::-;15963:74;;16046:93;16135:3;16046:93;:::i;:::-;16164:2;16159:3;16155:12;16148:19;;15807:366;;;:::o;16179:::-;16321:3;16342:67;16406:2;16401:3;16342:67;:::i;:::-;16335:74;;16418:93;16507:3;16418:93;:::i;:::-;16536:2;16531:3;16527:12;16520:19;;16179:366;;;:::o;16551:::-;16693:3;16714:67;16778:2;16773:3;16714:67;:::i;:::-;16707:74;;16790:93;16879:3;16790:93;:::i;:::-;16908:2;16903:3;16899:12;16892:19;;16551:366;;;:::o;16923:::-;17065:3;17086:67;17150:2;17145:3;17086:67;:::i;:::-;17079:74;;17162:93;17251:3;17162:93;:::i;:::-;17280:2;17275:3;17271:12;17264:19;;16923:366;;;:::o;17295:::-;17437:3;17458:67;17522:2;17517:3;17458:67;:::i;:::-;17451:74;;17534:93;17623:3;17534:93;:::i;:::-;17652:2;17647:3;17643:12;17636:19;;17295:366;;;:::o;17667:::-;17809:3;17830:67;17894:2;17889:3;17830:67;:::i;:::-;17823:74;;17906:93;17995:3;17906:93;:::i;:::-;18024:2;18019:3;18015:12;18008:19;;17667:366;;;:::o;18039:::-;18181:3;18202:67;18266:2;18261:3;18202:67;:::i;:::-;18195:74;;18278:93;18367:3;18278:93;:::i;:::-;18396:2;18391:3;18387:12;18380:19;;18039:366;;;:::o;18411:::-;18553:3;18574:67;18638:2;18633:3;18574:67;:::i;:::-;18567:74;;18650:93;18739:3;18650:93;:::i;:::-;18768:2;18763:3;18759:12;18752:19;;18411:366;;;:::o;18783:::-;18925:3;18946:67;19010:2;19005:3;18946:67;:::i;:::-;18939:74;;19022:93;19111:3;19022:93;:::i;:::-;19140:2;19135:3;19131:12;19124:19;;18783:366;;;:::o;19155:::-;19297:3;19318:67;19382:2;19377:3;19318:67;:::i;:::-;19311:74;;19394:93;19483:3;19394:93;:::i;:::-;19512:2;19507:3;19503:12;19496:19;;19155:366;;;:::o;19527:::-;19669:3;19690:67;19754:2;19749:3;19690:67;:::i;:::-;19683:74;;19766:93;19855:3;19766:93;:::i;:::-;19884:2;19879:3;19875:12;19868:19;;19527:366;;;:::o;19899:::-;20041:3;20062:67;20126:2;20121:3;20062:67;:::i;:::-;20055:74;;20138:93;20227:3;20138:93;:::i;:::-;20256:2;20251:3;20247:12;20240:19;;19899:366;;;:::o;20271:::-;20413:3;20434:67;20498:2;20493:3;20434:67;:::i;:::-;20427:74;;20510:93;20599:3;20510:93;:::i;:::-;20628:2;20623:3;20619:12;20612:19;;20271:366;;;:::o;20643:108::-;20720:24;20738:5;20720:24;:::i;:::-;20715:3;20708:37;20643:108;;:::o;20757:118::-;20844:24;20862:5;20844:24;:::i;:::-;20839:3;20832:37;20757:118;;:::o;20881:115::-;20966:23;20983:5;20966:23;:::i;:::-;20961:3;20954:36;20881:115;;:::o;21002:222::-;21095:4;21133:2;21122:9;21118:18;21110:26;;21146:71;21214:1;21203:9;21199:17;21190:6;21146:71;:::i;:::-;21002:222;;;;:::o;21230:1053::-;21553:4;21591:3;21580:9;21576:19;21568:27;;21605:71;21673:1;21662:9;21658:17;21649:6;21605:71;:::i;:::-;21686:72;21754:2;21743:9;21739:18;21730:6;21686:72;:::i;:::-;21805:9;21799:4;21795:20;21790:2;21779:9;21775:18;21768:48;21833:108;21936:4;21927:6;21833:108;:::i;:::-;21825:116;;21988:9;21982:4;21978:20;21973:2;21962:9;21958:18;21951:48;22016:108;22119:4;22110:6;22016:108;:::i;:::-;22008:116;;22172:9;22166:4;22162:20;22156:3;22145:9;22141:19;22134:49;22200:76;22271:4;22262:6;22200:76;:::i;:::-;22192:84;;21230:1053;;;;;;;;:::o;22289:751::-;22512:4;22550:3;22539:9;22535:19;22527:27;;22564:71;22632:1;22621:9;22617:17;22608:6;22564:71;:::i;:::-;22645:72;22713:2;22702:9;22698:18;22689:6;22645:72;:::i;:::-;22727;22795:2;22784:9;22780:18;22771:6;22727:72;:::i;:::-;22809;22877:2;22866:9;22862:18;22853:6;22809:72;:::i;:::-;22929:9;22923:4;22919:20;22913:3;22902:9;22898:19;22891:49;22957:76;23028:4;23019:6;22957:76;:::i;:::-;22949:84;;22289:751;;;;;;;;:::o;23046:373::-;23189:4;23227:2;23216:9;23212:18;23204:26;;23276:9;23270:4;23266:20;23262:1;23251:9;23247:17;23240:47;23304:108;23407:4;23398:6;23304:108;:::i;:::-;23296:116;;23046:373;;;;:::o;23425:634::-;23646:4;23684:2;23673:9;23669:18;23661:26;;23733:9;23727:4;23723:20;23719:1;23708:9;23704:17;23697:47;23761:108;23864:4;23855:6;23761:108;:::i;:::-;23753:116;;23916:9;23910:4;23906:20;23901:2;23890:9;23886:18;23879:48;23944:108;24047:4;24038:6;23944:108;:::i;:::-;23936:116;;23425:634;;;;;:::o;24065:210::-;24152:4;24190:2;24179:9;24175:18;24167:26;;24203:65;24265:1;24254:9;24250:17;24241:6;24203:65;:::i;:::-;24065:210;;;;:::o;24281:313::-;24394:4;24432:2;24421:9;24417:18;24409:26;;24481:9;24475:4;24471:20;24467:1;24456:9;24452:17;24445:47;24509:78;24582:4;24573:6;24509:78;:::i;:::-;24501:86;;24281:313;;;;:::o;24600:419::-;24766:4;24804:2;24793:9;24789:18;24781:26;;24853:9;24847:4;24843:20;24839:1;24828:9;24824:17;24817:47;24881:131;25007:4;24881:131;:::i;:::-;24873:139;;24600:419;;;:::o;25025:::-;25191:4;25229:2;25218:9;25214:18;25206:26;;25278:9;25272:4;25268:20;25264:1;25253:9;25249:17;25242:47;25306:131;25432:4;25306:131;:::i;:::-;25298:139;;25025:419;;;:::o;25450:::-;25616:4;25654:2;25643:9;25639:18;25631:26;;25703:9;25697:4;25693:20;25689:1;25678:9;25674:17;25667:47;25731:131;25857:4;25731:131;:::i;:::-;25723:139;;25450:419;;;:::o;25875:::-;26041:4;26079:2;26068:9;26064:18;26056:26;;26128:9;26122:4;26118:20;26114:1;26103:9;26099:17;26092:47;26156:131;26282:4;26156:131;:::i;:::-;26148:139;;25875:419;;;:::o;26300:::-;26466:4;26504:2;26493:9;26489:18;26481:26;;26553:9;26547:4;26543:20;26539:1;26528:9;26524:17;26517:47;26581:131;26707:4;26581:131;:::i;:::-;26573:139;;26300:419;;;:::o;26725:::-;26891:4;26929:2;26918:9;26914:18;26906:26;;26978:9;26972:4;26968:20;26964:1;26953:9;26949:17;26942:47;27006:131;27132:4;27006:131;:::i;:::-;26998:139;;26725:419;;;:::o;27150:::-;27316:4;27354:2;27343:9;27339:18;27331:26;;27403:9;27397:4;27393:20;27389:1;27378:9;27374:17;27367:47;27431:131;27557:4;27431:131;:::i;:::-;27423:139;;27150:419;;;:::o;27575:::-;27741:4;27779:2;27768:9;27764:18;27756:26;;27828:9;27822:4;27818:20;27814:1;27803:9;27799:17;27792:47;27856:131;27982:4;27856:131;:::i;:::-;27848:139;;27575:419;;;:::o;28000:::-;28166:4;28204:2;28193:9;28189:18;28181:26;;28253:9;28247:4;28243:20;28239:1;28228:9;28224:17;28217:47;28281:131;28407:4;28281:131;:::i;:::-;28273:139;;28000:419;;;:::o;28425:::-;28591:4;28629:2;28618:9;28614:18;28606:26;;28678:9;28672:4;28668:20;28664:1;28653:9;28649:17;28642:47;28706:131;28832:4;28706:131;:::i;:::-;28698:139;;28425:419;;;:::o;28850:::-;29016:4;29054:2;29043:9;29039:18;29031:26;;29103:9;29097:4;29093:20;29089:1;29078:9;29074:17;29067:47;29131:131;29257:4;29131:131;:::i;:::-;29123:139;;28850:419;;;:::o;29275:::-;29441:4;29479:2;29468:9;29464:18;29456:26;;29528:9;29522:4;29518:20;29514:1;29503:9;29499:17;29492:47;29556:131;29682:4;29556:131;:::i;:::-;29548:139;;29275:419;;;:::o;29700:::-;29866:4;29904:2;29893:9;29889:18;29881:26;;29953:9;29947:4;29943:20;29939:1;29928:9;29924:17;29917:47;29981:131;30107:4;29981:131;:::i;:::-;29973:139;;29700:419;;;:::o;30125:::-;30291:4;30329:2;30318:9;30314:18;30306:26;;30378:9;30372:4;30368:20;30364:1;30353:9;30349:17;30342:47;30406:131;30532:4;30406:131;:::i;:::-;30398:139;;30125:419;;;:::o;30550:::-;30716:4;30754:2;30743:9;30739:18;30731:26;;30803:9;30797:4;30793:20;30789:1;30778:9;30774:17;30767:47;30831:131;30957:4;30831:131;:::i;:::-;30823:139;;30550:419;;;:::o;30975:::-;31141:4;31179:2;31168:9;31164:18;31156:26;;31228:9;31222:4;31218:20;31214:1;31203:9;31199:17;31192:47;31256:131;31382:4;31256:131;:::i;:::-;31248:139;;30975:419;;;:::o;31400:::-;31566:4;31604:2;31593:9;31589:18;31581:26;;31653:9;31647:4;31643:20;31639:1;31628:9;31624:17;31617:47;31681:131;31807:4;31681:131;:::i;:::-;31673:139;;31400:419;;;:::o;31825:222::-;31918:4;31956:2;31945:9;31941:18;31933:26;;31969:71;32037:1;32026:9;32022:17;32013:6;31969:71;:::i;:::-;31825:222;;;;:::o;32053:332::-;32174:4;32212:2;32201:9;32197:18;32189:26;;32225:71;32293:1;32282:9;32278:17;32269:6;32225:71;:::i;:::-;32306:72;32374:2;32363:9;32359:18;32350:6;32306:72;:::i;:::-;32053:332;;;;;:::o;32391:218::-;32482:4;32520:2;32509:9;32505:18;32497:26;;32533:69;32599:1;32588:9;32584:17;32575:6;32533:69;:::i;:::-;32391:218;;;;:::o;32615:129::-;32649:6;32676:20;;:::i;:::-;32666:30;;32705:33;32733:4;32725:6;32705:33;:::i;:::-;32615:129;;;:::o;32750:75::-;32783:6;32816:2;32810:9;32800:19;;32750:75;:::o;32831:311::-;32908:4;32998:18;32990:6;32987:30;32984:56;;;33020:18;;:::i;:::-;32984:56;33070:4;33062:6;33058:17;33050:25;;33130:4;33124;33120:15;33112:23;;32831:311;;;:::o;33148:::-;33225:4;33315:18;33307:6;33304:30;33301:56;;;33337:18;;:::i;:::-;33301:56;33387:4;33379:6;33375:17;33367:25;;33447:4;33441;33437:15;33429:23;;33148:311;;;:::o;33465:307::-;33526:4;33616:18;33608:6;33605:30;33602:56;;;33638:18;;:::i;:::-;33602:56;33676:29;33698:6;33676:29;:::i;:::-;33668:37;;33760:4;33754;33750:15;33742:23;;33465:307;;;:::o;33778:308::-;33840:4;33930:18;33922:6;33919:30;33916:56;;;33952:18;;:::i;:::-;33916:56;33990:29;34012:6;33990:29;:::i;:::-;33982:37;;34074:4;34068;34064:15;34056:23;;33778:308;;;:::o;34092:132::-;34159:4;34182:3;34174:11;;34212:4;34207:3;34203:14;34195:22;;34092:132;;;:::o;34230:114::-;34297:6;34331:5;34325:12;34315:22;;34230:114;;;:::o;34350:98::-;34401:6;34435:5;34429:12;34419:22;;34350:98;;;:::o;34454:99::-;34506:6;34540:5;34534:12;34524:22;;34454:99;;;:::o;34559:113::-;34629:4;34661;34656:3;34652:14;34644:22;;34559:113;;;:::o;34678:184::-;34777:11;34811:6;34806:3;34799:19;34851:4;34846:3;34842:14;34827:29;;34678:184;;;;:::o;34868:168::-;34951:11;34985:6;34980:3;34973:19;35025:4;35020:3;35016:14;35001:29;;34868:168;;;;:::o;35042:169::-;35126:11;35160:6;35155:3;35148:19;35200:4;35195:3;35191:14;35176:29;;35042:169;;;;:::o;35217:305::-;35257:3;35276:20;35294:1;35276:20;:::i;:::-;35271:25;;35310:20;35328:1;35310:20;:::i;:::-;35305:25;;35464:1;35396:66;35392:74;35389:1;35386:81;35383:107;;;35470:18;;:::i;:::-;35383:107;35514:1;35511;35507:9;35500:16;;35217:305;;;;:::o;35528:246::-;35567:3;35586:19;35603:1;35586:19;:::i;:::-;35581:24;;35619:19;35636:1;35619:19;:::i;:::-;35614:24;;35716:1;35704:10;35700:18;35697:1;35694:25;35691:51;;;35722:18;;:::i;:::-;35691:51;35766:1;35763;35759:9;35752:16;;35528:246;;;;:::o;35780:185::-;35820:1;35837:20;35855:1;35837:20;:::i;:::-;35832:25;;35871:20;35889:1;35871:20;:::i;:::-;35866:25;;35910:1;35900:35;;35915:18;;:::i;:::-;35900:35;35957:1;35954;35950:9;35945:14;;35780:185;;;;:::o;35971:348::-;36011:7;36034:20;36052:1;36034:20;:::i;:::-;36029:25;;36068:20;36086:1;36068:20;:::i;:::-;36063:25;;36256:1;36188:66;36184:74;36181:1;36178:81;36173:1;36166:9;36159:17;36155:105;36152:131;;;36263:18;;:::i;:::-;36152:131;36311:1;36308;36304:9;36293:20;;35971:348;;;;:::o;36325:191::-;36365:4;36385:20;36403:1;36385:20;:::i;:::-;36380:25;;36419:20;36437:1;36419:20;:::i;:::-;36414:25;;36458:1;36455;36452:8;36449:34;;;36463:18;;:::i;:::-;36449:34;36508:1;36505;36501:9;36493:17;;36325:191;;;;:::o;36522:188::-;36561:4;36581:19;36598:1;36581:19;:::i;:::-;36576:24;;36614:19;36631:1;36614:19;:::i;:::-;36609:24;;36652:1;36649;36646:8;36643:34;;;36657:18;;:::i;:::-;36643:34;36702:1;36699;36695:9;36687:17;;36522:188;;;;:::o;36716:96::-;36753:7;36782:24;36800:5;36782:24;:::i;:::-;36771:35;;36716:96;;;:::o;36818:90::-;36852:7;36895:5;36888:13;36881:21;36870:32;;36818:90;;;:::o;36914:149::-;36950:7;36990:66;36983:5;36979:78;36968:89;;36914:149;;;:::o;37069:126::-;37106:7;37146:42;37139:5;37135:54;37124:65;;37069:126;;;:::o;37201:77::-;37238:7;37267:5;37256:16;;37201:77;;;:::o;37284:93::-;37320:7;37360:10;37353:5;37349:22;37338:33;;37284:93;;;:::o;37383:154::-;37467:6;37462:3;37457;37444:30;37529:1;37520:6;37515:3;37511:16;37504:27;37383:154;;;:::o;37543:307::-;37611:1;37621:113;37635:6;37632:1;37629:13;37621:113;;;37720:1;37715:3;37711:11;37705:18;37701:1;37696:3;37692:11;37685:39;37657:2;37654:1;37650:10;37645:15;;37621:113;;;37752:6;37749:1;37746:13;37743:101;;;37832:1;37823:6;37818:3;37814:16;37807:27;37743:101;37592:258;37543:307;;;:::o;37856:320::-;37900:6;37937:1;37931:4;37927:12;37917:22;;37984:1;37978:4;37974:12;38005:18;37995:81;;38061:4;38053:6;38049:17;38039:27;;37995:81;38123:2;38115:6;38112:14;38092:18;38089:38;38086:84;;;38142:18;;:::i;:::-;38086:84;37907:269;37856:320;;;:::o;38182:281::-;38265:27;38287:4;38265:27;:::i;:::-;38257:6;38253:40;38395:6;38383:10;38380:22;38359:18;38347:10;38344:34;38341:62;38338:88;;;38406:18;;:::i;:::-;38338:88;38446:10;38442:2;38435:22;38225:238;38182:281;;:::o;38469:233::-;38508:3;38531:24;38549:5;38531:24;:::i;:::-;38522:33;;38577:66;38570:5;38567:77;38564:103;;;38647:18;;:::i;:::-;38564:103;38694:1;38687:5;38683:13;38676:20;;38469:233;;;:::o;38708:175::-;38746:3;38769:23;38786:5;38769:23;:::i;:::-;38760:32;;38814:10;38807:5;38804:21;38801:47;;;38828:18;;:::i;:::-;38801:47;38875:1;38868:5;38864:13;38857:20;;38708:175;;;:::o;38889:180::-;38937:77;38934:1;38927:88;39034:4;39031:1;39024:15;39058:4;39055:1;39048:15;39075:180;39123:77;39120:1;39113:88;39220:4;39217:1;39210:15;39244:4;39241:1;39234:15;39261:180;39309:77;39306:1;39299:88;39406:4;39403:1;39396:15;39430:4;39427:1;39420:15;39447:180;39495:77;39492:1;39485:88;39592:4;39589:1;39582:15;39616:4;39613:1;39606:15;39633:180;39681:77;39678:1;39671:88;39778:4;39775:1;39768:15;39802:4;39799:1;39792:15;39819:183;39854:3;39892:1;39874:16;39871:23;39868:128;;;39930:1;39927;39924;39909:23;39952:34;39983:1;39977:8;39952:34;:::i;:::-;39945:41;;39868:128;39819:183;:::o;40008:117::-;40117:1;40114;40107:12;40131:117;40240:1;40237;40230:12;40254:117;40363:1;40360;40353:12;40377:117;40486:1;40483;40476:12;40500:117;40609:1;40606;40599:12;40623:102;40664:6;40715:2;40711:7;40706:2;40699:5;40695:14;40691:28;40681:38;;40623:102;;;:::o;40731:106::-;40775:8;40824:5;40819:3;40815:15;40794:36;;40731:106;;;:::o;40843:239::-;40983:34;40979:1;40971:6;40967:14;40960:58;41052:22;41047:2;41039:6;41035:15;41028:47;40843:239;:::o;41088:227::-;41228:34;41224:1;41216:6;41212:14;41205:58;41297:10;41292:2;41284:6;41280:15;41273:35;41088:227;:::o;41321:230::-;41461:34;41457:1;41449:6;41445:14;41438:58;41530:13;41525:2;41517:6;41513:15;41506:38;41321:230;:::o;41557:225::-;41697:34;41693:1;41685:6;41681:14;41674:58;41766:8;41761:2;41753:6;41749:15;41742:33;41557:225;:::o;41788:228::-;41928:34;41924:1;41916:6;41912:14;41905:58;41997:11;41992:2;41984:6;41980:15;41973:36;41788:228;:::o;42022:179::-;42162:31;42158:1;42150:6;42146:14;42139:55;42022:179;:::o;42207:167::-;42347:19;42343:1;42335:6;42331:14;42324:43;42207:167;:::o;42380:224::-;42520:34;42516:1;42508:6;42504:14;42497:58;42589:7;42584:2;42576:6;42572:15;42565:32;42380:224;:::o;42610:237::-;42750:34;42746:1;42738:6;42734:14;42727:58;42819:20;42814:2;42806:6;42802:15;42795:45;42610:237;:::o;42853:229::-;42993:34;42989:1;42981:6;42977:14;42970:58;43062:12;43057:2;43049:6;43045:15;43038:37;42853:229;:::o;43088:228::-;43228:34;43224:1;43216:6;43212:14;43205:58;43297:11;43292:2;43284:6;43280:15;43273:36;43088:228;:::o;43322:182::-;43462:34;43458:1;43450:6;43446:14;43439:58;43322:182;:::o;43510:169::-;43650:21;43646:1;43638:6;43634:14;43627:45;43510:169;:::o;43685:228::-;43825:34;43821:1;43813:6;43809:14;43802:58;43894:11;43889:2;43881:6;43877:15;43870:36;43685:228;:::o;43919:::-;44059:34;44055:1;44047:6;44043:14;44036:58;44128:11;44123:2;44115:6;44111:15;44104:36;43919:228;:::o;44153:227::-;44293:34;44289:1;44281:6;44277:14;44270:58;44362:10;44357:2;44349:6;44345:15;44338:35;44153:227;:::o;44386:220::-;44526:34;44522:1;44514:6;44510:14;44503:58;44595:3;44590:2;44582:6;44578:15;44571:28;44386:220;:::o;44612:711::-;44651:3;44689:4;44671:16;44668:26;44665:39;;;44697:5;;44665:39;44726:20;;:::i;:::-;44801:1;44783:16;44779:24;44776:1;44770:4;44755:49;44834:4;44828:11;44933:16;44926:4;44918:6;44914:17;44911:39;44878:18;44870:6;44867:30;44851:113;44848:146;;;44979:5;;;;44848:146;45025:6;45019:4;45015:17;45061:3;45055:10;45088:18;45080:6;45077:30;45074:43;;;45110:5;;;;;;45074:43;45158:6;45151:4;45146:3;45142:14;45138:27;45217:1;45199:16;45195:24;45189:4;45185:35;45180:3;45177:44;45174:57;;;45224:5;;;;;;;45174:57;45241;45289:6;45283:4;45279:17;45271:6;45267:30;45261:4;45241:57;:::i;:::-;45314:3;45307:10;;44655:668;;;;;44612:711;;:::o;45329:122::-;45402:24;45420:5;45402:24;:::i;:::-;45395:5;45392:35;45382:63;;45441:1;45438;45431:12;45382:63;45329:122;:::o;45457:116::-;45527:21;45542:5;45527:21;:::i;:::-;45520:5;45517:32;45507:60;;45563:1;45560;45553:12;45507:60;45457:116;:::o;45579:120::-;45651:23;45668:5;45651:23;:::i;:::-;45644:5;45641:34;45631:62;;45689:1;45686;45679:12;45631:62;45579:120;:::o;45705:122::-;45778:24;45796:5;45778:24;:::i;:::-;45771:5;45768:35;45758:63;;45817:1;45814;45807:12;45758:63;45705:122;:::o;45833:120::-;45905:23;45922:5;45905:23;:::i;:::-;45898:5;45895:34;45885:62;;45943:1;45940;45933:12;45885:62;45833:120;:::o

Swarm Source

ipfs://aa6dd986feaf911a6ab34dc49416c5d6eb28e9af6d8695eaebe3a1725226209d
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.