ETH Price: $3,320.33 (-8.72%)

Token

WaitaraChip (waitarachip)
 

Overview

Max Total Supply

909 waitarachip

Holders

585

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
sh4rd.eth
0x47C658B1Dd43fa98149650a25b238BD42b9D811a
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:
waitara

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-06-29
*/

// 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/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 (last updated v4.7.0) (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 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 (last updated v4.7.0) (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: address zero is not a valid owner");
        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 token 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: caller is not token 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();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

        _beforeTokenTransfer(operator, from, to, ids, amounts, 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);

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

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

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

        _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();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

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

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

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

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

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.
     *
     * 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 _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);

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

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

    /**
     * @dev Destroys `amount` tokens of token type `id` from `from`
     *
     * Emits a {TransferSingle} event.
     *
     * 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();
        uint256[] memory ids = _asSingletonArray(id);
        uint256[] memory amounts = _asSingletonArray(amount);

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

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

        _afterTokenTransfer(operator, from, address(0), ids, amounts, "");
    }

    /**
     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.
     *
     * Emits a {TransferBatch} event.
     *
     * 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);

        _afterTokenTransfer(operator, from, address(0), ids, amounts, "");
    }

    /**
     * @dev Approve `operator` to operate on all of `owner` tokens
     *
     * Emits an {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 `ids` and `amounts` 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 {}

    /**
     * @dev Hook that is called after 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 _afterTokenTransfer(
        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: waitara.sol


pragma solidity ^0.8.4;



contract waitara is ERC1155 {

  enum SaleStatus { CLOSED, PRESALE, PUBLIC }
  uint256 public premiumcost = 0.069 ether;
  uint256 public platinumcost = 0.45 ether;
  SaleStatus public saleStatus = SaleStatus.CLOSED;
  //0 & 1
  uint256[] public amountsLeft = [6900, 100];
  address private owner;
  string public name;
  string public symbol;

  mapping(address => mapping(uint256 => bool)) public mintedTier;
  mapping(uint => string) public tokenURI;
  mapping(address => bool) public presaleWallets;

  modifier onlyExternal() {
    require(msg.sender == tx.origin, "Contracts are not allowed to mint");
    _;
  }

  // IMPORTANT!: Set IPFS metadata URI
  constructor(
      string memory _name,
      string memory _symbol
  ) ERC1155("") {
    owner = msg.sender;
    name = _name;
    symbol = _symbol;
  }

  modifier onlyOwner() {
    require(msg.sender == owner, "You are not the owner of this contract");
    _;
  }

  modifier mintable(uint256 _id) {
    require(_id < 2, "Invalid token ID");
    require(amountsLeft[_id] > 0, "All tokens with this ID were already minted");
    _;
  }

  function mintPresale() external onlyExternal mintable(0) {
    require(saleStatus != SaleStatus.CLOSED, "Presale is not active");
    require(!mintedTier[msg.sender][0], "You already minted this token");
    require(presaleWallets[msg.sender]);
    mintedTier[msg.sender][0] = true;
    amountsLeft[0] -= 1;  
    _mint(msg.sender, 0, 1, "");
  }

  function mint(uint256 _id, uint256 _mintAmount) public onlyExternal mintable(_id) payable{
    require(saleStatus == SaleStatus.PUBLIC, "Sale is not active");
    if(_id==0){
        require(msg.value >= premiumcost * _mintAmount,"Not enough Gas");   
    }else{
        require(!mintedTier[msg.sender][1], "You already minted this token");
        require(msg.value >= platinumcost * _mintAmount,"Not enough Gas");
        mintedTier[msg.sender][1] = true;
    }
    amountsLeft[_id] -= _mintAmount;
    _mint(msg.sender, _id, _mintAmount, "");
  }


  // Private batch minting function, does not check for payment.
  function mintPrivate(uint256[] memory _ids, uint256[] memory _amounts) external onlyOwner {
    for (uint256 i = 0; i < _amounts.length; i++) {
      amountsLeft[i] -= _amounts[i];
    }
    _mintBatch(msg.sender, _ids, _amounts, "");
  }

    function addPresaleUser(address _user) public onlyOwner {
        presaleWallets[_user] = true;
    }
    
    function removePresaleUser(address _user) public onlyOwner {
        presaleWallets[_user] = false;
    }

    function add100PresaleUsers(address[] memory _users) public onlyOwner {
        for (uint256 i = 0; i < _users.length; i++) {
            presaleWallets[_users[i]] = true;
        }
    }
  // 0 = CLOSED; 1 = PRESALE; 2 = PUBLIC;
  function setSaleStatus(uint256 _status) external onlyOwner {
    saleStatus = SaleStatus(_status);
  }
  function setPremiumCost(uint256 _newPremiumCost) public onlyOwner {
        premiumcost = _newPremiumCost;
  }
  function setPlatinumCost(uint256 _newPlatinumCost) public onlyOwner {
        platinumcost = _newPlatinumCost;
  }

  function setURI(uint _id, string memory _uri) external onlyOwner {
    tokenURI[_id] = _uri;
    emit URI(_uri, _id);
  }

  function uri(uint _id) public override view returns (string memory) {
    return tokenURI[_id];
  }

  function getAmountsLeft() external view returns(uint256[] memory) {
    return amountsLeft;
  } 
  function withdraw() public payable onlyOwner {
        (bool success, ) = payable(msg.sender).call{
            value: address(this).balance
        }("");
        require(success);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","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":"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":"_users","type":"address[]"}],"name":"add100PresaleUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addPresaleUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"amountsLeft","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"getAmountsLeft","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":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"mintPrivate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"mintedTier","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platinumcost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"premiumcost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removePresaleUser","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":"saleStatus","outputs":[{"internalType":"enum waitara.SaleStatus","name":"","type":"uint8"}],"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":"uint256","name":"_newPlatinumCost","type":"uint256"}],"name":"setPlatinumCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPremiumCost","type":"uint256"}],"name":"setPremiumCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_status","type":"uint256"}],"name":"setSaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

608060405266f523226980800060035567063eb89da4ed00006004556000600560006101000a81548160ff0219169083600281111562000044576200004362000474565b5b02179055506040518060400160405280611af461ffff168152602001606461ffff1681525060069060026200007b92919062000168565b503480156200008957600080fd5b5060405162004dc938038062004dc98339818101604052810190620000af9190620002ee565b60405180602001604052806000815250620000d0816200014c60201b60201c565b5033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600890805190602001906200012a929190620001c0565b50806009908051906020019062000143929190620001c0565b50505062000526565b806002908051906020019062000164929190620001c0565b5050565b828054828255906000526020600020908101928215620001ad579160200282015b82811115620001ac578251829061ffff1690559160200191906001019062000189565b5b509050620001bc919062000251565b5090565b828054620001ce9062000408565b90600052602060002090601f016020900481019282620001f257600085556200023e565b82601f106200020d57805160ff19168380011785556200023e565b828001600101855582156200023e579182015b828111156200023d57825182559160200191906001019062000220565b5b5090506200024d919062000251565b5090565b5b808211156200026c57600081600090555060010162000252565b5090565b60006200028762000281846200039c565b62000373565b905082815260208101848484011115620002a657620002a562000506565b5b620002b3848285620003d2565b509392505050565b600082601f830112620002d357620002d262000501565b5b8151620002e584826020860162000270565b91505092915050565b6000806040838503121562000308576200030762000510565b5b600083015167ffffffffffffffff8111156200032957620003286200050b565b5b6200033785828601620002bb565b925050602083015167ffffffffffffffff8111156200035b576200035a6200050b565b5b6200036985828601620002bb565b9150509250929050565b60006200037f62000392565b90506200038d82826200043e565b919050565b6000604051905090565b600067ffffffffffffffff821115620003ba57620003b9620004d2565b5b620003c58262000515565b9050602081019050919050565b60005b83811015620003f2578082015181840152602081019050620003d5565b8381111562000402576000848401525b50505050565b600060028204905060018216806200042157607f821691505b60208210811415620004385762000437620004a3565b5b50919050565b620004498262000515565b810181811067ffffffffffffffff821117156200046b576200046a620004d2565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b61489380620005366000396000f3fe6080604052600436106101c15760003560e01c8063862440e2116100f7578063c87b56dd11610095578063f242432a11610064578063f242432a14610633578063f29f15af1461065c578063f9020e3314610685578063ffa902ee146106b0576101c1565b8063c87b56dd14610579578063db599698146105b6578063e985e9c5146105cd578063ed931e171461060a576101c1565b8063a22cb465116100d1578063a22cb465146104d3578063a7ffbf69146104fc578063a82107ca14610527578063b2f3e85e14610550576101c1565b8063862440e2146104565780638754c0701461047f57806395d89b41146104a8576101c1565b8063221b4a8a116101645780633ccfd60b1161013e5780633ccfd60b146103bd5780634e1273f4146103c75780635791b7c514610404578063783f28ed1461042d576101c1565b8063221b4a8a1461031a5780632eb2c2d61461035757806330b2264e14610380576101c1565b80630c907151116101a05780630c9071511461026b5780630e89341c146102965780631b2ef1ca146102d357806320250c49146102ef576101c1565b8062fdd58e146101c657806301ffc9a71461020357806306fdde0314610240575b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190613306565b6106ed565b6040516101fa9190613d36565b60405180910390f35b34801561020f57600080fd5b5061022a6004803603810190610225919061347f565b6107b6565b6040516102379190613a9e565b60405180910390f35b34801561024c57600080fd5b50610255610898565b6040516102629190613ad4565b60405180910390f35b34801561027757600080fd5b50610280610926565b60405161028d9190613d36565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906134d9565b61092c565b6040516102ca9190613ad4565b60405180910390f35b6102ed60048036038101906102e89190613562565b6109d1565b005b3480156102fb57600080fd5b50610304610d66565b6040516103119190613d36565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c91906134d9565b610d6c565b60405161034e9190613d36565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613160565b610d90565b005b34801561038c57600080fd5b506103a760048036038101906103a291906130f3565b610e31565b6040516103b49190613a9e565b60405180910390f35b6103c5610e51565b005b3480156103d357600080fd5b506103ee60048036038101906103e9919061338f565b610f5a565b6040516103fb9190613a45565b60405180910390f35b34801561041057600080fd5b5061042b600480360381019061042691906134d9565b611073565b005b34801561043957600080fd5b50610454600480360381019061044f9190613407565b61110d565b005b34801561046257600080fd5b5061047d60048036038101906104789190613506565b61122b565b005b34801561048b57600080fd5b506104a660048036038101906104a19190613346565b61131f565b005b3480156104b457600080fd5b506104bd611444565b6040516104ca9190613ad4565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f591906132c6565b6114d2565b005b34801561050857600080fd5b506105116114e8565b60405161051e9190613a45565b60405180910390f35b34801561053357600080fd5b5061054e600480360381019061054991906134d9565b611540565b005b34801561055c57600080fd5b50610577600480360381019061057291906130f3565b6115da565b005b34801561058557600080fd5b506105a0600480360381019061059b91906134d9565b6116c5565b6040516105ad9190613ad4565b60405180910390f35b3480156105c257600080fd5b506105cb611765565b005b3480156105d957600080fd5b506105f460048036038101906105ef9190613120565b611aa4565b6040516106019190613a9e565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c91906130f3565b611b38565b005b34801561063f57600080fd5b5061065a6004803603810190610655919061322f565b611c23565b005b34801561066857600080fd5b50610683600480360381019061067e91906134d9565b611cc4565b005b34801561069157600080fd5b5061069a611d93565b6040516106a79190613ab9565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613306565b611da6565b6040516106e49190613a9e565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075590613b76565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061088157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610891575061089082611dd5565b5b9050919050565b600880546108a590614094565b80601f01602080910402602001604051908101604052809291908181526020018280546108d190614094565b801561091e5780601f106108f35761010080835404028352916020019161091e565b820191906000526020600020905b81548152906001019060200180831161090157829003601f168201915b505050505081565b60045481565b6060600b6000838152602001908152602001600020805461094c90614094565b80601f016020809104026020016040519081016040528092919081815260200182805461097890614094565b80156109c55780601f1061099a576101008083540402835291602001916109c5565b820191906000526020600020905b8154815290600101906020018083116109a857829003601f168201915b50505050509050919050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690613d16565b60405180910390fd5b8160028110610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a90613c56565b60405180910390fd5b600060068281548110610a9957610a986141cd565b5b906000526020600020015411610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90613bb6565b60405180910390fd5b600280811115610af757610af661416f565b5b600560009054906101000a900460ff166002811115610b1957610b1861416f565b5b14610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5090613b96565b60405180910390fd5b6000831415610bb75781600354610b709190613f2b565b341015610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990613bf6565b60405180910390fd5b610d11565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001815260200190815260200160002060009054906101000a900460ff1615610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90613b56565b60405180910390fd5b81600454610c649190613f2b565b341015610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d90613bf6565b60405180910390fd5b6001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8160068481548110610d2657610d256141cd565b5b906000526020600020016000828254610d3f9190613f85565b92505081905550610d6133848460405180602001604052806000815250611e3f565b505050565b60035481565b60068181548110610d7c57600080fd5b906000526020600020016000915090505481565b610d98611ff0565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610dde5750610ddd85610dd8611ff0565b611aa4565b5b610e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1490613b16565b60405180910390fd5b610e2a8585858585611ff8565b5050505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613bd6565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610f079061396e565b60006040518083038185875af1925050503d8060008114610f44576040519150601f19603f3d011682016040523d82523d6000602084013e610f49565b606091505b5050905080610f5757600080fd5b50565b60608151835114610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9790613cb6565b60405180910390fd5b6000835167ffffffffffffffff811115610fbd57610fbc6141fc565b5b604051908082528060200260200182016040528015610feb5781602001602082028036833780820191505090505b50905060005b8451811015611068576110388582815181106110105761100f6141cd565b5b602002602001015185838151811061102b5761102a6141cd565b5b60200260200101516106ed565b82828151811061104b5761104a6141cd565b5b60200260200101818152505080611061906140f7565b9050610ff1565b508091505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613bd6565b60405180910390fd5b8060038190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119490613bd6565b60405180910390fd5b60005b815181101561120b578181815181106111bc576111bb6141cd565b5b6020026020010151600682815481106111d8576111d76141cd565b5b9060005260206000200160008282546111f19190613f85565b925050819055508080611203906140f7565b9150506111a0565b506112273383836040518060200160405280600081525061231a565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290613bd6565b60405180910390fd5b80600b600084815260200190815260200160002090805190602001906112e2929190612dcb565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516113139190613ad4565b60405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690613bd6565b60405180910390fd5b60005b8151811015611440576001600c60008484815181106113d4576113d36141cd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611438906140f7565b9150506113b2565b5050565b6009805461145190614094565b80601f016020809104026020016040519081016040528092919081815260200182805461147d90614094565b80156114ca5780601f1061149f576101008083540402835291602001916114ca565b820191906000526020600020905b8154815290600101906020018083116114ad57829003601f168201915b505050505081565b6114e46114dd611ff0565b8383612547565b5050565b6060600680548060200260200160405190810160405280929190818152602001828054801561153657602002820191906000526020600020905b815481526020019060010190808311611522575b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790613bd6565b60405180910390fd5b8060048190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461166a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166190613bd6565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b60205280600052604060002060009150905080546116e490614094565b80601f016020809104026020016040519081016040528092919081815260200182805461171090614094565b801561175d5780601f106117325761010080835404028352916020019161175d565b820191906000526020600020905b81548152906001019060200180831161174057829003601f168201915b505050505081565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90613d16565b60405180910390fd5b600060028110611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90613c56565b60405180910390fd5b60006006828154811061182e5761182d6141cd565b5b906000526020600020015411611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613bb6565b60405180910390fd5b6000600281111561188d5761188c61416f565b5b600560009054906101000a900460ff1660028111156118af576118ae61416f565b5b14156118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613c76565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002060009054906101000a900460ff161561198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590613b56565b60405180910390fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119e457600080fd5b6001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600081548110611a6457611a636141cd565b5b906000526020600020016000828254611a7d9190613f85565b92505081905550611aa1336000600160405180602001604052806000815250611e3f565b50565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613bd6565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c2b611ff0565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611c715750611c7085611c6b611ff0565b611aa4565b5b611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca790613b16565b60405180910390fd5b611cbd85858585856126b4565b5050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4b90613bd6565b60405180910390fd5b806002811115611d6757611d6661416f565b5b600560006101000a81548160ff02191690836002811115611d8b57611d8a61416f565b5b021790555050565b600560009054906101000a900460ff1681565b600a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690613cf6565b60405180910390fd5b6000611eb9611ff0565b90506000611ec685612950565b90506000611ed385612950565b9050611ee4836000898585896129ca565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f439190613ed5565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611fc1929190613d51565b60405180910390a4611fd8836000898585896129d2565b611fe7836000898989896129da565b50505050505050565b600033905090565b815183511461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390613cd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a390613c16565b60405180910390fd5b60006120b6611ff0565b90506120c68187878787876129ca565b60005b84518110156122775760008582815181106120e7576120e66141cd565b5b602002602001015190506000858381518110612106576121056141cd565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219e90613c36565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461225c9190613ed5565b9250508190555050505080612270906140f7565b90506120c9565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516122ee929190613a67565b60405180910390a46123048187878787876129d2565b612312818787878787612bc1565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561238a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238190613cf6565b60405180910390fd5b81518351146123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590613cd6565b60405180910390fd5b60006123d8611ff0565b90506123e9816000878787876129ca565b60005b84518110156124a257838181518110612408576124076141cd565b5b6020026020010151600080878481518110612426576124256141cd565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124889190613ed5565b92505081905550808061249a906140f7565b9150506123ec565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161251a929190613a67565b60405180910390a4612531816000878787876129d2565b61254081600087878787612bc1565b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90613c96565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126a79190613a9e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271b90613c16565b60405180910390fd5b600061272e611ff0565b9050600061273b85612950565b9050600061274885612950565b90506127588389898585896129ca565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e690613c36565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128a49190613ed5565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051612921929190613d51565b60405180910390a4612937848a8a86868a6129d2565b612945848a8a8a8a8a6129da565b505050505050505050565b60606000600167ffffffffffffffff81111561296f5761296e6141fc565b5b60405190808252806020026020018201604052801561299d5781602001602082028036833780820191505090505b50905082816000815181106129b5576129b46141cd565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b6129f98473ffffffffffffffffffffffffffffffffffffffff16612da8565b15612bb9578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612a3f9594939291906139eb565b602060405180830381600087803b158015612a5957600080fd5b505af1925050508015612a8a57506040513d601f19601f82011682018060405250810190612a8791906134ac565b60015b612b3057612a9661422b565b806308c379a01415612af35750612aab614757565b80612ab65750612af5565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aea9190613ad4565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2790613af6565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bae90613b36565b60405180910390fd5b505b505050505050565b612be08473ffffffffffffffffffffffffffffffffffffffff16612da8565b15612da0578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612c26959493929190613983565b602060405180830381600087803b158015612c4057600080fd5b505af1925050508015612c7157506040513d601f19601f82011682018060405250810190612c6e91906134ac565b60015b612d1757612c7d61422b565b806308c379a01415612cda5750612c92614757565b80612c9d5750612cdc565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd19190613ad4565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e90613af6565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9590613b36565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612dd790614094565b90600052602060002090601f016020900481019282612df95760008555612e40565b82601f10612e1257805160ff1916838001178555612e40565b82800160010185558215612e40579182015b82811115612e3f578251825591602001919060010190612e24565b5b509050612e4d9190612e51565b5090565b5b80821115612e6a576000816000905550600101612e52565b5090565b6000612e81612e7c84613d9f565b613d7a565b90508083825260208201905082856020860282011115612ea457612ea3614252565b5b60005b85811015612ed45781612eba8882612fd2565b845260208401935060208301925050600181019050612ea7565b5050509392505050565b6000612ef1612eec84613dcb565b613d7a565b90508083825260208201905082856020860282011115612f1457612f13614252565b5b60005b85811015612f445781612f2a88826130de565b845260208401935060208301925050600181019050612f17565b5050509392505050565b6000612f61612f5c84613df7565b613d7a565b905082815260208101848484011115612f7d57612f7c614257565b5b612f88848285614052565b509392505050565b6000612fa3612f9e84613e28565b613d7a565b905082815260208101848484011115612fbf57612fbe614257565b5b612fca848285614052565b509392505050565b600081359050612fe181614801565b92915050565b600082601f830112612ffc57612ffb61424d565b5b813561300c848260208601612e6e565b91505092915050565b600082601f83011261302a5761302961424d565b5b813561303a848260208601612ede565b91505092915050565b60008135905061305281614818565b92915050565b6000813590506130678161482f565b92915050565b60008151905061307c8161482f565b92915050565b600082601f8301126130975761309661424d565b5b81356130a7848260208601612f4e565b91505092915050565b600082601f8301126130c5576130c461424d565b5b81356130d5848260208601612f90565b91505092915050565b6000813590506130ed81614846565b92915050565b60006020828403121561310957613108614261565b5b600061311784828501612fd2565b91505092915050565b6000806040838503121561313757613136614261565b5b600061314585828601612fd2565b925050602061315685828601612fd2565b9150509250929050565b600080600080600060a0868803121561317c5761317b614261565b5b600061318a88828901612fd2565b955050602061319b88828901612fd2565b945050604086013567ffffffffffffffff8111156131bc576131bb61425c565b5b6131c888828901613015565b935050606086013567ffffffffffffffff8111156131e9576131e861425c565b5b6131f588828901613015565b925050608086013567ffffffffffffffff8111156132165761321561425c565b5b61322288828901613082565b9150509295509295909350565b600080600080600060a0868803121561324b5761324a614261565b5b600061325988828901612fd2565b955050602061326a88828901612fd2565b945050604061327b888289016130de565b935050606061328c888289016130de565b925050608086013567ffffffffffffffff8111156132ad576132ac61425c565b5b6132b988828901613082565b9150509295509295909350565b600080604083850312156132dd576132dc614261565b5b60006132eb85828601612fd2565b92505060206132fc85828601613043565b9150509250929050565b6000806040838503121561331d5761331c614261565b5b600061332b85828601612fd2565b925050602061333c858286016130de565b9150509250929050565b60006020828403121561335c5761335b614261565b5b600082013567ffffffffffffffff81111561337a5761337961425c565b5b61338684828501612fe7565b91505092915050565b600080604083850312156133a6576133a5614261565b5b600083013567ffffffffffffffff8111156133c4576133c361425c565b5b6133d085828601612fe7565b925050602083013567ffffffffffffffff8111156133f1576133f061425c565b5b6133fd85828601613015565b9150509250929050565b6000806040838503121561341e5761341d614261565b5b600083013567ffffffffffffffff81111561343c5761343b61425c565b5b61344885828601613015565b925050602083013567ffffffffffffffff8111156134695761346861425c565b5b61347585828601613015565b9150509250929050565b60006020828403121561349557613494614261565b5b60006134a384828501613058565b91505092915050565b6000602082840312156134c2576134c1614261565b5b60006134d08482850161306d565b91505092915050565b6000602082840312156134ef576134ee614261565b5b60006134fd848285016130de565b91505092915050565b6000806040838503121561351d5761351c614261565b5b600061352b858286016130de565b925050602083013567ffffffffffffffff81111561354c5761354b61425c565b5b613558858286016130b0565b9150509250929050565b6000806040838503121561357957613578614261565b5b6000613587858286016130de565b9250506020613598858286016130de565b9150509250929050565b60006135ae8383613950565b60208301905092915050565b6135c381613fb9565b82525050565b60006135d482613e69565b6135de8185613e97565b93506135e983613e59565b8060005b8381101561361a57815161360188826135a2565b975061360c83613e8a565b9250506001810190506135ed565b5085935050505092915050565b61363081613fcb565b82525050565b600061364182613e74565b61364b8185613ea8565b935061365b818560208601614061565b61366481614266565b840191505092915050565b61367881614040565b82525050565b600061368982613e7f565b6136938185613ec4565b93506136a3818560208601614061565b6136ac81614266565b840191505092915050565b60006136c4603483613ec4565b91506136cf82614284565b604082019050919050565b60006136e7602f83613ec4565b91506136f2826142d3565b604082019050919050565b600061370a602883613ec4565b915061371582614322565b604082019050919050565b600061372d601d83613ec4565b915061373882614371565b602082019050919050565b6000613750602a83613ec4565b915061375b8261439a565b604082019050919050565b6000613773601283613ec4565b915061377e826143e9565b602082019050919050565b6000613796602b83613ec4565b91506137a182614412565b604082019050919050565b60006137b9602683613ec4565b91506137c482614461565b604082019050919050565b60006137dc600e83613ec4565b91506137e7826144b0565b602082019050919050565b60006137ff602583613ec4565b915061380a826144d9565b604082019050919050565b6000613822602a83613ec4565b915061382d82614528565b604082019050919050565b6000613845601083613ec4565b915061385082614577565b602082019050919050565b6000613868600083613eb9565b9150613873826145a0565b600082019050919050565b600061388b601583613ec4565b9150613896826145a3565b602082019050919050565b60006138ae602983613ec4565b91506138b9826145cc565b604082019050919050565b60006138d1602983613ec4565b91506138dc8261461b565b604082019050919050565b60006138f4602883613ec4565b91506138ff8261466a565b604082019050919050565b6000613917602183613ec4565b9150613922826146b9565b604082019050919050565b600061393a602183613ec4565b915061394582614708565b604082019050919050565b61395981614036565b82525050565b61396881614036565b82525050565b60006139798261385b565b9150819050919050565b600060a08201905061399860008301886135ba565b6139a560208301876135ba565b81810360408301526139b781866135c9565b905081810360608301526139cb81856135c9565b905081810360808301526139df8184613636565b90509695505050505050565b600060a082019050613a0060008301886135ba565b613a0d60208301876135ba565b613a1a604083018661395f565b613a27606083018561395f565b8181036080830152613a398184613636565b90509695505050505050565b60006020820190508181036000830152613a5f81846135c9565b905092915050565b60006040820190508181036000830152613a8181856135c9565b90508181036020830152613a9581846135c9565b90509392505050565b6000602082019050613ab36000830184613627565b92915050565b6000602082019050613ace600083018461366f565b92915050565b60006020820190508181036000830152613aee818461367e565b905092915050565b60006020820190508181036000830152613b0f816136b7565b9050919050565b60006020820190508181036000830152613b2f816136da565b9050919050565b60006020820190508181036000830152613b4f816136fd565b9050919050565b60006020820190508181036000830152613b6f81613720565b9050919050565b60006020820190508181036000830152613b8f81613743565b9050919050565b60006020820190508181036000830152613baf81613766565b9050919050565b60006020820190508181036000830152613bcf81613789565b9050919050565b60006020820190508181036000830152613bef816137ac565b9050919050565b60006020820190508181036000830152613c0f816137cf565b9050919050565b60006020820190508181036000830152613c2f816137f2565b9050919050565b60006020820190508181036000830152613c4f81613815565b9050919050565b60006020820190508181036000830152613c6f81613838565b9050919050565b60006020820190508181036000830152613c8f8161387e565b9050919050565b60006020820190508181036000830152613caf816138a1565b9050919050565b60006020820190508181036000830152613ccf816138c4565b9050919050565b60006020820190508181036000830152613cef816138e7565b9050919050565b60006020820190508181036000830152613d0f8161390a565b9050919050565b60006020820190508181036000830152613d2f8161392d565b9050919050565b6000602082019050613d4b600083018461395f565b92915050565b6000604082019050613d66600083018561395f565b613d73602083018461395f565b9392505050565b6000613d84613d95565b9050613d9082826140c6565b919050565b6000604051905090565b600067ffffffffffffffff821115613dba57613db96141fc565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613de657613de56141fc565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613e1257613e116141fc565b5b613e1b82614266565b9050602081019050919050565b600067ffffffffffffffff821115613e4357613e426141fc565b5b613e4c82614266565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613ee082614036565b9150613eeb83614036565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f2057613f1f614140565b5b828201905092915050565b6000613f3682614036565b9150613f4183614036565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f7a57613f79614140565b5b828202905092915050565b6000613f9082614036565b9150613f9b83614036565b925082821015613fae57613fad614140565b5b828203905092915050565b6000613fc482614016565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050614011826147ed565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061404b82614003565b9050919050565b82818337600083830152505050565b60005b8381101561407f578082015181840152602081019050614064565b8381111561408e576000848401525b50505050565b600060028204905060018216806140ac57607f821691505b602082108114156140c0576140bf61419e565b5b50919050565b6140cf82614266565b810181811067ffffffffffffffff821117156140ee576140ed6141fc565b5b80604052505050565b600061410282614036565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561413557614134614140565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561424a5760046000803e614247600051614277565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206e6f7220617070726f7665640000000000000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f596f7520616c7265616479206d696e746564207468697320746f6b656e000000600082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f53616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b7f416c6c20746f6b656e7320776974682074686973204944207765726520616c7260008201527f65616479206d696e746564000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f7420746865206f776e6572206f66207468697320636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f75676820476173000000000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f496e76616c696420746f6b656e20494400000000000000000000000000000000600082015250565b50565b7f50726573616c65206973206e6f74206163746976650000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e74726163747320617265206e6f7420616c6c6f77656420746f206d696e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614767576147ea565b61476f613d95565b60043d036004823e80513d602482011167ffffffffffffffff821117156147975750506147ea565b808201805167ffffffffffffffff8111156147b557505050506147ea565b80602083010160043d0385018111156147d25750505050506147ea565b6147e1826020018501866140c6565b82955050505050505b90565b600381106147fe576147fd61416f565b5b50565b61480a81613fb9565b811461481557600080fd5b50565b61482181613fcb565b811461482c57600080fd5b50565b61483881613fd7565b811461484357600080fd5b50565b61484f81614036565b811461485a57600080fd5b5056fea2646970667358221220b330590402a757b3b49e4f42d9df514bb3e6b19b1397ae7e361f080f24c5552464736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b5761697461726143686970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b7761697461726163686970000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106101c15760003560e01c8063862440e2116100f7578063c87b56dd11610095578063f242432a11610064578063f242432a14610633578063f29f15af1461065c578063f9020e3314610685578063ffa902ee146106b0576101c1565b8063c87b56dd14610579578063db599698146105b6578063e985e9c5146105cd578063ed931e171461060a576101c1565b8063a22cb465116100d1578063a22cb465146104d3578063a7ffbf69146104fc578063a82107ca14610527578063b2f3e85e14610550576101c1565b8063862440e2146104565780638754c0701461047f57806395d89b41146104a8576101c1565b8063221b4a8a116101645780633ccfd60b1161013e5780633ccfd60b146103bd5780634e1273f4146103c75780635791b7c514610404578063783f28ed1461042d576101c1565b8063221b4a8a1461031a5780632eb2c2d61461035757806330b2264e14610380576101c1565b80630c907151116101a05780630c9071511461026b5780630e89341c146102965780631b2ef1ca146102d357806320250c49146102ef576101c1565b8062fdd58e146101c657806301ffc9a71461020357806306fdde0314610240575b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190613306565b6106ed565b6040516101fa9190613d36565b60405180910390f35b34801561020f57600080fd5b5061022a6004803603810190610225919061347f565b6107b6565b6040516102379190613a9e565b60405180910390f35b34801561024c57600080fd5b50610255610898565b6040516102629190613ad4565b60405180910390f35b34801561027757600080fd5b50610280610926565b60405161028d9190613d36565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906134d9565b61092c565b6040516102ca9190613ad4565b60405180910390f35b6102ed60048036038101906102e89190613562565b6109d1565b005b3480156102fb57600080fd5b50610304610d66565b6040516103119190613d36565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c91906134d9565b610d6c565b60405161034e9190613d36565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190613160565b610d90565b005b34801561038c57600080fd5b506103a760048036038101906103a291906130f3565b610e31565b6040516103b49190613a9e565b60405180910390f35b6103c5610e51565b005b3480156103d357600080fd5b506103ee60048036038101906103e9919061338f565b610f5a565b6040516103fb9190613a45565b60405180910390f35b34801561041057600080fd5b5061042b600480360381019061042691906134d9565b611073565b005b34801561043957600080fd5b50610454600480360381019061044f9190613407565b61110d565b005b34801561046257600080fd5b5061047d60048036038101906104789190613506565b61122b565b005b34801561048b57600080fd5b506104a660048036038101906104a19190613346565b61131f565b005b3480156104b457600080fd5b506104bd611444565b6040516104ca9190613ad4565b60405180910390f35b3480156104df57600080fd5b506104fa60048036038101906104f591906132c6565b6114d2565b005b34801561050857600080fd5b506105116114e8565b60405161051e9190613a45565b60405180910390f35b34801561053357600080fd5b5061054e600480360381019061054991906134d9565b611540565b005b34801561055c57600080fd5b50610577600480360381019061057291906130f3565b6115da565b005b34801561058557600080fd5b506105a0600480360381019061059b91906134d9565b6116c5565b6040516105ad9190613ad4565b60405180910390f35b3480156105c257600080fd5b506105cb611765565b005b3480156105d957600080fd5b506105f460048036038101906105ef9190613120565b611aa4565b6040516106019190613a9e565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c91906130f3565b611b38565b005b34801561063f57600080fd5b5061065a6004803603810190610655919061322f565b611c23565b005b34801561066857600080fd5b50610683600480360381019061067e91906134d9565b611cc4565b005b34801561069157600080fd5b5061069a611d93565b6040516106a79190613ab9565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613306565b611da6565b6040516106e49190613a9e565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561075e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075590613b76565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061088157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610891575061089082611dd5565b5b9050919050565b600880546108a590614094565b80601f01602080910402602001604051908101604052809291908181526020018280546108d190614094565b801561091e5780601f106108f35761010080835404028352916020019161091e565b820191906000526020600020905b81548152906001019060200180831161090157829003601f168201915b505050505081565b60045481565b6060600b6000838152602001908152602001600020805461094c90614094565b80601f016020809104026020016040519081016040528092919081815260200182805461097890614094565b80156109c55780601f1061099a576101008083540402835291602001916109c5565b820191906000526020600020905b8154815290600101906020018083116109a857829003601f168201915b50505050509050919050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690613d16565b60405180910390fd5b8160028110610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a90613c56565b60405180910390fd5b600060068281548110610a9957610a986141cd565b5b906000526020600020015411610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90613bb6565b60405180910390fd5b600280811115610af757610af661416f565b5b600560009054906101000a900460ff166002811115610b1957610b1861416f565b5b14610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5090613b96565b60405180910390fd5b6000831415610bb75781600354610b709190613f2b565b341015610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990613bf6565b60405180910390fd5b610d11565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001815260200190815260200160002060009054906101000a900460ff1615610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90613b56565b60405180910390fd5b81600454610c649190613f2b565b341015610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d90613bf6565b60405180910390fd5b6001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8160068481548110610d2657610d256141cd565b5b906000526020600020016000828254610d3f9190613f85565b92505081905550610d6133848460405180602001604052806000815250611e3f565b505050565b60035481565b60068181548110610d7c57600080fd5b906000526020600020016000915090505481565b610d98611ff0565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610dde5750610ddd85610dd8611ff0565b611aa4565b5b610e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1490613b16565b60405180910390fd5b610e2a8585858585611ff8565b5050505050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ee1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed890613bd6565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051610f079061396e565b60006040518083038185875af1925050503d8060008114610f44576040519150601f19603f3d011682016040523d82523d6000602084013e610f49565b606091505b5050905080610f5757600080fd5b50565b60608151835114610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9790613cb6565b60405180910390fd5b6000835167ffffffffffffffff811115610fbd57610fbc6141fc565b5b604051908082528060200260200182016040528015610feb5781602001602082028036833780820191505090505b50905060005b8451811015611068576110388582815181106110105761100f6141cd565b5b602002602001015185838151811061102b5761102a6141cd565b5b60200260200101516106ed565b82828151811061104b5761104a6141cd565b5b60200260200101818152505080611061906140f7565b9050610ff1565b508091505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613bd6565b60405180910390fd5b8060038190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119490613bd6565b60405180910390fd5b60005b815181101561120b578181815181106111bc576111bb6141cd565b5b6020026020010151600682815481106111d8576111d76141cd565b5b9060005260206000200160008282546111f19190613f85565b925050819055508080611203906140f7565b9150506111a0565b506112273383836040518060200160405280600081525061231a565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290613bd6565b60405180910390fd5b80600b600084815260200190815260200160002090805190602001906112e2929190612dcb565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516113139190613ad4565b60405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690613bd6565b60405180910390fd5b60005b8151811015611440576001600c60008484815181106113d4576113d36141cd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611438906140f7565b9150506113b2565b5050565b6009805461145190614094565b80601f016020809104026020016040519081016040528092919081815260200182805461147d90614094565b80156114ca5780601f1061149f576101008083540402835291602001916114ca565b820191906000526020600020905b8154815290600101906020018083116114ad57829003601f168201915b505050505081565b6114e46114dd611ff0565b8383612547565b5050565b6060600680548060200260200160405190810160405280929190818152602001828054801561153657602002820191906000526020600020905b815481526020019060010190808311611522575b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790613bd6565b60405180910390fd5b8060048190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461166a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166190613bd6565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b60205280600052604060002060009150905080546116e490614094565b80601f016020809104026020016040519081016040528092919081815260200182805461171090614094565b801561175d5780601f106117325761010080835404028352916020019161175d565b820191906000526020600020905b81548152906001019060200180831161174057829003601f168201915b505050505081565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ca90613d16565b60405180910390fd5b600060028110611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f90613c56565b60405180910390fd5b60006006828154811061182e5761182d6141cd565b5b906000526020600020015411611879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187090613bb6565b60405180910390fd5b6000600281111561188d5761188c61416f565b5b600560009054906101000a900460ff1660028111156118af576118ae61416f565b5b14156118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613c76565b60405180910390fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002060009054906101000a900460ff161561198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590613b56565b60405180910390fd5b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119e457600080fd5b6001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600081548110611a6457611a636141cd565b5b906000526020600020016000828254611a7d9190613f85565b92505081905550611aa1336000600160405180602001604052806000815250611e3f565b50565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613bd6565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c2b611ff0565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611c715750611c7085611c6b611ff0565b611aa4565b5b611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca790613b16565b60405180910390fd5b611cbd85858585856126b4565b5050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4b90613bd6565b60405180910390fd5b806002811115611d6757611d6661416f565b5b600560006101000a81548160ff02191690836002811115611d8b57611d8a61416f565b5b021790555050565b600560009054906101000a900460ff1681565b600a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690613cf6565b60405180910390fd5b6000611eb9611ff0565b90506000611ec685612950565b90506000611ed385612950565b9050611ee4836000898585896129ca565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f439190613ed5565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611fc1929190613d51565b60405180910390a4611fd8836000898585896129d2565b611fe7836000898989896129da565b50505050505050565b600033905090565b815183511461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390613cd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a390613c16565b60405180910390fd5b60006120b6611ff0565b90506120c68187878787876129ca565b60005b84518110156122775760008582815181106120e7576120e66141cd565b5b602002602001015190506000858381518110612106576121056141cd565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219e90613c36565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461225c9190613ed5565b9250508190555050505080612270906140f7565b90506120c9565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516122ee929190613a67565b60405180910390a46123048187878787876129d2565b612312818787878787612bc1565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561238a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238190613cf6565b60405180910390fd5b81518351146123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590613cd6565b60405180910390fd5b60006123d8611ff0565b90506123e9816000878787876129ca565b60005b84518110156124a257838181518110612408576124076141cd565b5b6020026020010151600080878481518110612426576124256141cd565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124889190613ed5565b92505081905550808061249a906140f7565b9150506123ec565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161251a929190613a67565b60405180910390a4612531816000878787876129d2565b61254081600087878787612bc1565b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90613c96565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516126a79190613a9e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271b90613c16565b60405180910390fd5b600061272e611ff0565b9050600061273b85612950565b9050600061274885612950565b90506127588389898585896129ca565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050858110156127ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e690613c36565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128a49190613ed5565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051612921929190613d51565b60405180910390a4612937848a8a86868a6129d2565b612945848a8a8a8a8a6129da565b505050505050505050565b60606000600167ffffffffffffffff81111561296f5761296e6141fc565b5b60405190808252806020026020018201604052801561299d5781602001602082028036833780820191505090505b50905082816000815181106129b5576129b46141cd565b5b60200260200101818152505080915050919050565b505050505050565b505050505050565b6129f98473ffffffffffffffffffffffffffffffffffffffff16612da8565b15612bb9578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401612a3f9594939291906139eb565b602060405180830381600087803b158015612a5957600080fd5b505af1925050508015612a8a57506040513d601f19601f82011682018060405250810190612a8791906134ac565b60015b612b3057612a9661422b565b806308c379a01415612af35750612aab614757565b80612ab65750612af5565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aea9190613ad4565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2790613af6565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bae90613b36565b60405180910390fd5b505b505050505050565b612be08473ffffffffffffffffffffffffffffffffffffffff16612da8565b15612da0578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612c26959493929190613983565b602060405180830381600087803b158015612c4057600080fd5b505af1925050508015612c7157506040513d601f19601f82011682018060405250810190612c6e91906134ac565b60015b612d1757612c7d61422b565b806308c379a01415612cda5750612c92614757565b80612c9d5750612cdc565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd19190613ad4565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0e90613af6565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9590613b36565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612dd790614094565b90600052602060002090601f016020900481019282612df95760008555612e40565b82601f10612e1257805160ff1916838001178555612e40565b82800160010185558215612e40579182015b82811115612e3f578251825591602001919060010190612e24565b5b509050612e4d9190612e51565b5090565b5b80821115612e6a576000816000905550600101612e52565b5090565b6000612e81612e7c84613d9f565b613d7a565b90508083825260208201905082856020860282011115612ea457612ea3614252565b5b60005b85811015612ed45781612eba8882612fd2565b845260208401935060208301925050600181019050612ea7565b5050509392505050565b6000612ef1612eec84613dcb565b613d7a565b90508083825260208201905082856020860282011115612f1457612f13614252565b5b60005b85811015612f445781612f2a88826130de565b845260208401935060208301925050600181019050612f17565b5050509392505050565b6000612f61612f5c84613df7565b613d7a565b905082815260208101848484011115612f7d57612f7c614257565b5b612f88848285614052565b509392505050565b6000612fa3612f9e84613e28565b613d7a565b905082815260208101848484011115612fbf57612fbe614257565b5b612fca848285614052565b509392505050565b600081359050612fe181614801565b92915050565b600082601f830112612ffc57612ffb61424d565b5b813561300c848260208601612e6e565b91505092915050565b600082601f83011261302a5761302961424d565b5b813561303a848260208601612ede565b91505092915050565b60008135905061305281614818565b92915050565b6000813590506130678161482f565b92915050565b60008151905061307c8161482f565b92915050565b600082601f8301126130975761309661424d565b5b81356130a7848260208601612f4e565b91505092915050565b600082601f8301126130c5576130c461424d565b5b81356130d5848260208601612f90565b91505092915050565b6000813590506130ed81614846565b92915050565b60006020828403121561310957613108614261565b5b600061311784828501612fd2565b91505092915050565b6000806040838503121561313757613136614261565b5b600061314585828601612fd2565b925050602061315685828601612fd2565b9150509250929050565b600080600080600060a0868803121561317c5761317b614261565b5b600061318a88828901612fd2565b955050602061319b88828901612fd2565b945050604086013567ffffffffffffffff8111156131bc576131bb61425c565b5b6131c888828901613015565b935050606086013567ffffffffffffffff8111156131e9576131e861425c565b5b6131f588828901613015565b925050608086013567ffffffffffffffff8111156132165761321561425c565b5b61322288828901613082565b9150509295509295909350565b600080600080600060a0868803121561324b5761324a614261565b5b600061325988828901612fd2565b955050602061326a88828901612fd2565b945050604061327b888289016130de565b935050606061328c888289016130de565b925050608086013567ffffffffffffffff8111156132ad576132ac61425c565b5b6132b988828901613082565b9150509295509295909350565b600080604083850312156132dd576132dc614261565b5b60006132eb85828601612fd2565b92505060206132fc85828601613043565b9150509250929050565b6000806040838503121561331d5761331c614261565b5b600061332b85828601612fd2565b925050602061333c858286016130de565b9150509250929050565b60006020828403121561335c5761335b614261565b5b600082013567ffffffffffffffff81111561337a5761337961425c565b5b61338684828501612fe7565b91505092915050565b600080604083850312156133a6576133a5614261565b5b600083013567ffffffffffffffff8111156133c4576133c361425c565b5b6133d085828601612fe7565b925050602083013567ffffffffffffffff8111156133f1576133f061425c565b5b6133fd85828601613015565b9150509250929050565b6000806040838503121561341e5761341d614261565b5b600083013567ffffffffffffffff81111561343c5761343b61425c565b5b61344885828601613015565b925050602083013567ffffffffffffffff8111156134695761346861425c565b5b61347585828601613015565b9150509250929050565b60006020828403121561349557613494614261565b5b60006134a384828501613058565b91505092915050565b6000602082840312156134c2576134c1614261565b5b60006134d08482850161306d565b91505092915050565b6000602082840312156134ef576134ee614261565b5b60006134fd848285016130de565b91505092915050565b6000806040838503121561351d5761351c614261565b5b600061352b858286016130de565b925050602083013567ffffffffffffffff81111561354c5761354b61425c565b5b613558858286016130b0565b9150509250929050565b6000806040838503121561357957613578614261565b5b6000613587858286016130de565b9250506020613598858286016130de565b9150509250929050565b60006135ae8383613950565b60208301905092915050565b6135c381613fb9565b82525050565b60006135d482613e69565b6135de8185613e97565b93506135e983613e59565b8060005b8381101561361a57815161360188826135a2565b975061360c83613e8a565b9250506001810190506135ed565b5085935050505092915050565b61363081613fcb565b82525050565b600061364182613e74565b61364b8185613ea8565b935061365b818560208601614061565b61366481614266565b840191505092915050565b61367881614040565b82525050565b600061368982613e7f565b6136938185613ec4565b93506136a3818560208601614061565b6136ac81614266565b840191505092915050565b60006136c4603483613ec4565b91506136cf82614284565b604082019050919050565b60006136e7602f83613ec4565b91506136f2826142d3565b604082019050919050565b600061370a602883613ec4565b915061371582614322565b604082019050919050565b600061372d601d83613ec4565b915061373882614371565b602082019050919050565b6000613750602a83613ec4565b915061375b8261439a565b604082019050919050565b6000613773601283613ec4565b915061377e826143e9565b602082019050919050565b6000613796602b83613ec4565b91506137a182614412565b604082019050919050565b60006137b9602683613ec4565b91506137c482614461565b604082019050919050565b60006137dc600e83613ec4565b91506137e7826144b0565b602082019050919050565b60006137ff602583613ec4565b915061380a826144d9565b604082019050919050565b6000613822602a83613ec4565b915061382d82614528565b604082019050919050565b6000613845601083613ec4565b915061385082614577565b602082019050919050565b6000613868600083613eb9565b9150613873826145a0565b600082019050919050565b600061388b601583613ec4565b9150613896826145a3565b602082019050919050565b60006138ae602983613ec4565b91506138b9826145cc565b604082019050919050565b60006138d1602983613ec4565b91506138dc8261461b565b604082019050919050565b60006138f4602883613ec4565b91506138ff8261466a565b604082019050919050565b6000613917602183613ec4565b9150613922826146b9565b604082019050919050565b600061393a602183613ec4565b915061394582614708565b604082019050919050565b61395981614036565b82525050565b61396881614036565b82525050565b60006139798261385b565b9150819050919050565b600060a08201905061399860008301886135ba565b6139a560208301876135ba565b81810360408301526139b781866135c9565b905081810360608301526139cb81856135c9565b905081810360808301526139df8184613636565b90509695505050505050565b600060a082019050613a0060008301886135ba565b613a0d60208301876135ba565b613a1a604083018661395f565b613a27606083018561395f565b8181036080830152613a398184613636565b90509695505050505050565b60006020820190508181036000830152613a5f81846135c9565b905092915050565b60006040820190508181036000830152613a8181856135c9565b90508181036020830152613a9581846135c9565b90509392505050565b6000602082019050613ab36000830184613627565b92915050565b6000602082019050613ace600083018461366f565b92915050565b60006020820190508181036000830152613aee818461367e565b905092915050565b60006020820190508181036000830152613b0f816136b7565b9050919050565b60006020820190508181036000830152613b2f816136da565b9050919050565b60006020820190508181036000830152613b4f816136fd565b9050919050565b60006020820190508181036000830152613b6f81613720565b9050919050565b60006020820190508181036000830152613b8f81613743565b9050919050565b60006020820190508181036000830152613baf81613766565b9050919050565b60006020820190508181036000830152613bcf81613789565b9050919050565b60006020820190508181036000830152613bef816137ac565b9050919050565b60006020820190508181036000830152613c0f816137cf565b9050919050565b60006020820190508181036000830152613c2f816137f2565b9050919050565b60006020820190508181036000830152613c4f81613815565b9050919050565b60006020820190508181036000830152613c6f81613838565b9050919050565b60006020820190508181036000830152613c8f8161387e565b9050919050565b60006020820190508181036000830152613caf816138a1565b9050919050565b60006020820190508181036000830152613ccf816138c4565b9050919050565b60006020820190508181036000830152613cef816138e7565b9050919050565b60006020820190508181036000830152613d0f8161390a565b9050919050565b60006020820190508181036000830152613d2f8161392d565b9050919050565b6000602082019050613d4b600083018461395f565b92915050565b6000604082019050613d66600083018561395f565b613d73602083018461395f565b9392505050565b6000613d84613d95565b9050613d9082826140c6565b919050565b6000604051905090565b600067ffffffffffffffff821115613dba57613db96141fc565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613de657613de56141fc565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613e1257613e116141fc565b5b613e1b82614266565b9050602081019050919050565b600067ffffffffffffffff821115613e4357613e426141fc565b5b613e4c82614266565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613ee082614036565b9150613eeb83614036565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613f2057613f1f614140565b5b828201905092915050565b6000613f3682614036565b9150613f4183614036565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f7a57613f79614140565b5b828202905092915050565b6000613f9082614036565b9150613f9b83614036565b925082821015613fae57613fad614140565b5b828203905092915050565b6000613fc482614016565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050614011826147ed565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061404b82614003565b9050919050565b82818337600083830152505050565b60005b8381101561407f578082015181840152602081019050614064565b8381111561408e576000848401525b50505050565b600060028204905060018216806140ac57607f821691505b602082108114156140c0576140bf61419e565b5b50919050565b6140cf82614266565b810181811067ffffffffffffffff821117156140ee576140ed6141fc565b5b80604052505050565b600061410282614036565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561413557614134614140565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d111561424a5760046000803e614247600051614277565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206e6f7220617070726f7665640000000000000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f596f7520616c7265616479206d696e746564207468697320746f6b656e000000600082015250565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b7f53616c65206973206e6f74206163746976650000000000000000000000000000600082015250565b7f416c6c20746f6b656e7320776974682074686973204944207765726520616c7260008201527f65616479206d696e746564000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f7420746865206f776e6572206f66207468697320636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f4e6f7420656e6f75676820476173000000000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f496e76616c696420746f6b656e20494400000000000000000000000000000000600082015250565b50565b7f50726573616c65206973206e6f74206163746976650000000000000000000000600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e74726163747320617265206e6f7420616c6c6f77656420746f206d696e60008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015614767576147ea565b61476f613d95565b60043d036004823e80513d602482011167ffffffffffffffff821117156147975750506147ea565b808201805167ffffffffffffffff8111156147b557505050506147ea565b80602083010160043d0385018111156147d25750505050506147ea565b6147e1826020018501866140c6565b82955050505050505b90565b600381106147fe576147fd61416f565b5b50565b61480a81613fb9565b811461481557600080fd5b50565b61482181613fcb565b811461482c57600080fd5b50565b61483881613fd7565b811461484357600080fd5b50565b61484f81614036565b811461485a57600080fd5b5056fea2646970667358221220b330590402a757b3b49e4f42d9df514bb3e6b19b1397ae7e361f080f24c5552464736f6c63430008070033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b5761697461726143686970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b7761697461726163686970000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): WaitaraChip
Arg [1] : _symbol (string): waitarachip

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [3] : 5761697461726143686970000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [5] : 7761697461726163686970000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

36458:3738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20874:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19897:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36767:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36585:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39790:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37961:560;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36540:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36694:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22818:439;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36928:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39999:192;;;:::i;:::-;;21270:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39422:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38595:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39660:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39076:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36790:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21867:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39897:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39538:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38846:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36884:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37602:353;;;;;;;;;;;;;:::i;:::-;;22094:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38961:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22334:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39314:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36630:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36817:62;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20874:230;20960:7;21007:1;20988:21;;:7;:21;;;;20980:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;21074:9;:13;21084:2;21074:13;;;;;;;;;;;:22;21088:7;21074:22;;;;;;;;;;;;;;;;21067:29;;20874:230;;;;:::o;19897:310::-;19999:4;20051:26;20036:41;;;:11;:41;;;;:110;;;;20109:37;20094:52;;;:11;:52;;;;20036:110;:163;;;;20163:36;20187:11;20163:23;:36::i;:::-;20036:163;20016:183;;19897:310;;;:::o;36767:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;36585:40::-;;;;:::o;39790:101::-;39843:13;39872:8;:13;39881:3;39872:13;;;;;;;;;;;39865:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39790:101;;;:::o;37961:560::-;37034:9;37020:23;;:10;:23;;;37012:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;38038:3:::1;37477:1;37471:3;:7;37463:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;37533:1;37514:11;37526:3;37514:16;;;;;;;;:::i;:::-;;;;;;;;;;:20;37506:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;38079:17:::2;38065:31:::0;::::2;;;;;;;:::i;:::-;;:10;;;;;;;;;;;:31;;;;;;;;:::i;:::-;;;38057:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;38134:1;38129:3;:6;38126:306;;;38182:11;38168;;:25;;;;:::i;:::-;38155:9;:38;;38147:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;38126:306;;;38246:10;:22;38257:10;38246:22;;;;;;;;;;;;;;;:25;38269:1;38246:25;;;;;;;;;;;;;;;;;;;;;38245:26;38237:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38352:11;38337:12;;:26;;;;:::i;:::-;38324:9;:39;;38316:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;38420:4;38392:10;:22;38403:10;38392:22;;;;;;;;;;;;;;;:25;38415:1;38392:25;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;38126:306;38458:11;38438;38450:3;38438:16;;;;;;;;:::i;:::-;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;38476:39;38482:10;38494:3;38499:11;38476:39;;;;;;;;;;;::::0;:5:::2;:39::i;:::-;37088:1:::1;37961:560:::0;;:::o;36540:40::-;;;;:::o;36694:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22818:439::-;23059:12;:10;:12::i;:::-;23051:20;;:4;:20;;;:60;;;;23075:36;23092:4;23098:12;:10;:12::i;:::-;23075:16;:36::i;:::-;23051:60;23029:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;23197:52;23220:4;23226:2;23230:3;23235:7;23244:4;23197:22;:52::i;:::-;22818:439;;;;;:::o;36928:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;39999:192::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;40056:12:::1;40082:10;40074:24;;40120:21;40074:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40055:101;;;40175:7;40167:16;;;::::0;::::1;;40044:147;39999:192::o:0;21270:524::-;21426:16;21487:3;:10;21468:8;:15;:29;21460:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21556:30;21603:8;:15;21589:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21556:63;;21637:9;21632:122;21656:8;:15;21652:1;:19;21632:122;;;21712:30;21722:8;21731:1;21722:11;;;;;;;;:::i;:::-;;;;;;;;21735:3;21739:1;21735:6;;;;;;;;:::i;:::-;;;;;;;;21712:9;:30::i;:::-;21693:13;21707:1;21693:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;21673:3;;;;:::i;:::-;;;21632:122;;;;21773:13;21766:20;;;21270:524;;;;:::o;39422:112::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39513:15:::1;39499:11;:29;;;;39422:112:::0;:::o;38595:243::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;38697:9:::1;38692:92;38716:8;:15;38712:1;:19;38692:92;;;38765:8;38774:1;38765:11;;;;;;;;:::i;:::-;;;;;;;;38747;38759:1;38747:14;;;;;;;;:::i;:::-;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;38733:3;;;;;:::i;:::-;;;;38692:92;;;;38790:42;38801:10;38813:4;38819:8;38790:42;;;;;;;;;;;::::0;:10:::1;:42::i;:::-;38595:243:::0;;:::o;39660:124::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39748:4:::1;39732:8;:13;39741:3;39732:13;;;;;;;;;;;:20;;;;;;;;;;;;:::i;:::-;;39774:3;39764:14;39768:4;39764:14;;;;;;:::i;:::-;;;;;;;;39660:124:::0;;:::o;39076:191::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39162:9:::1;39157:103;39181:6;:13;39177:1;:17;39157:103;;;39244:4;39216:14;:25;39231:6;39238:1;39231:9;;;;;;;;:::i;:::-;;;;;;;;39216:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;39196:3;;;;;:::i;:::-;;;;39157:103;;;;39076:191:::0;:::o;36790:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21867:155::-;21962:52;21981:12;:10;:12::i;:::-;21995:8;22005;21962:18;:52::i;:::-;21867:155;;:::o;39897:97::-;39945:16;39977:11;39970:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39897:97;:::o;39538:116::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39632:16:::1;39617:12;:31;;;;39538:116:::0;:::o;38846:103::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;38937:4:::1;38913:14;:21;38928:5;38913:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;38846:103:::0;:::o;36884:39::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;37602:353::-;37034:9;37020:23;;:10;:23;;;37012:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;37656:1:::1;37477;37471:3;:7;37463:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;37533:1;37514:11;37526:3;37514:16;;;;;;;;:::i;:::-;;;;;;;;;;:20;37506:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;37688:17:::2;37674:31;;;;;;;;:::i;:::-;;:10;;;;;;;;;;;:31;;;;;;;;:::i;:::-;;;;37666:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;37747:10;:22;37758:10;37747:22;;;;;;;;;;;;;;;:25;37770:1:::0;37747:25:::2;;;;;;;;;;;;;;;;;;;;;37746:26;37738:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37821:14;:26;37836:10;37821:26;;;;;;;;;;;;;;;;;;;;;;;;;37813:35;;;::::0;::::2;;37883:4;37855:10;:22;37866:10;37855:22;;;;;;;;;;;;;;;:25;37878:1:::0;37855:25:::2;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;37912:1;37894:11;37906:1;37894:14;;;;;;;;:::i;:::-;;;;;;;;;;:19;;;;;;;:::i;:::-;;;;;;;;37922:27;37928:10;37940:1;37943;37922:27;;;;;;;;;;;::::0;:5:::2;:27::i;:::-;37088:1:::1;37602:353::o:0;22094:168::-;22193:4;22217:18;:27;22236:7;22217:27;;;;;;;;;;;;;;;:37;22245:8;22217:37;;;;;;;;;;;;;;;;;;;;;;;;;22210:44;;22094:168;;;;:::o;38961:107::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39055:5:::1;39031:14;:21;39046:5;39031:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;38961:107:::0;:::o;22334:407::-;22550:12;:10;:12::i;:::-;22542:20;;:4;:20;;;:60;;;;22566:36;22583:4;22589:12;:10;:12::i;:::-;22566:16;:36::i;:::-;22542:60;22520:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;22688:45;22706:4;22712:2;22716;22720:6;22728:4;22688:17;:45::i;:::-;22334:407;;;;;:::o;39314:104::-;37357:5;;;;;;;;;;;37343:19;;:10;:19;;;37335:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;39404:7:::1;39393:19;;;;;;;;:::i;:::-;;39380:10;;:32;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;39314:104:::0;:::o;36630:48::-;;;;;;;;;;;;;:::o;36817:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11178:157::-;11263:4;11302:25;11287:40;;;:11;:40;;;;11280:47;;11178:157;;;:::o;27517:729::-;27684:1;27670:16;;:2;:16;;;;27662:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;27737:16;27756:12;:10;:12::i;:::-;27737:31;;27779:20;27802:21;27820:2;27802:17;:21::i;:::-;27779:44;;27834:24;27861:25;27879:6;27861:17;:25::i;:::-;27834:52;;27899:66;27920:8;27938:1;27942:2;27946:3;27951:7;27960:4;27899:20;:66::i;:::-;27999:6;27978:9;:13;27988:2;27978:13;;;;;;;;;;;:17;27992:2;27978:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;28058:2;28021:52;;28054:1;28021:52;;28036:8;28021:52;;;28062:2;28066:6;28021:52;;;;;;;:::i;:::-;;;;;;;;28086:65;28106:8;28124:1;28128:2;28132:3;28137:7;28146:4;28086:19;:65::i;:::-;28164:74;28195:8;28213:1;28217:2;28221;28225:6;28233:4;28164:30;:74::i;:::-;27651:595;;;27517:729;;;;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;25053:1146::-;25280:7;:14;25266:3;:10;:28;25258:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;25372:1;25358:16;;:2;:16;;;;25350:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25429:16;25448:12;:10;:12::i;:::-;25429:31;;25473:60;25494:8;25504:4;25510:2;25514:3;25519:7;25528:4;25473:20;:60::i;:::-;25551:9;25546:421;25570:3;:10;25566:1;:14;25546:421;;;25602:10;25615:3;25619:1;25615:6;;;;;;;;:::i;:::-;;;;;;;;25602:19;;25636:14;25653:7;25661:1;25653:10;;;;;;;;:::i;:::-;;;;;;;;25636:27;;25680:19;25702:9;:13;25712:2;25702:13;;;;;;;;;;;:19;25716:4;25702:19;;;;;;;;;;;;;;;;25680:41;;25759:6;25744:11;:21;;25736:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25892:6;25878:11;:20;25856:9;:13;25866:2;25856:13;;;;;;;;;;;:19;25870:4;25856:19;;;;;;;;;;;;;;;:42;;;;25949:6;25928:9;:13;25938:2;25928:13;;;;;;;;;;;:17;25942:2;25928:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;25587:380;;;25582:3;;;;:::i;:::-;;;25546:421;;;;26014:2;25984:47;;26008:4;25984:47;;25998:8;25984:47;;;26018:3;26023:7;25984:47;;;;;;;:::i;:::-;;;;;;;;26044:59;26064:8;26074:4;26080:2;26084:3;26089:7;26098:4;26044:19;:59::i;:::-;26116:75;26152:8;26162:4;26168:2;26172:3;26177:7;26186:4;26116:35;:75::i;:::-;25247:952;25053:1146;;;;;:::o;28649:813::-;28841:1;28827:16;;:2;:16;;;;28819:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;28914:7;:14;28900:3;:10;:28;28892:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;28986:16;29005:12;:10;:12::i;:::-;28986:31;;29030:66;29051:8;29069:1;29073:2;29077:3;29082:7;29091:4;29030:20;:66::i;:::-;29114:9;29109:103;29133:3;:10;29129:1;:14;29109:103;;;29190:7;29198:1;29190:10;;;;;;;;:::i;:::-;;;;;;;;29165:9;:17;29175:3;29179:1;29175:6;;;;;;;;:::i;:::-;;;;;;;;29165:17;;;;;;;;;;;:21;29183:2;29165:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;29145:3;;;;;:::i;:::-;;;;29109:103;;;;29265:2;29229:53;;29261:1;29229:53;;29243:8;29229:53;;;29269:3;29274:7;29229:53;;;;;;;:::i;:::-;;;;;;;;29295:65;29315:8;29333:1;29337:2;29341:3;29346:7;29355:4;29295:19;:65::i;:::-;29373:81;29409:8;29427:1;29431:2;29435:3;29440:7;29449:4;29373:35;:81::i;:::-;28808:654;28649:813;;;;:::o;31930:331::-;32085:8;32076:17;;:5;:17;;;;32068:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;32188:8;32150:18;:25;32169:5;32150:25;;;;;;;;;;;;;;;:35;32176:8;32150:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32234:8;32212:41;;32227:5;32212:41;;;32244:8;32212:41;;;;;;:::i;:::-;;;;;;;;31930:331;;;:::o;23721:974::-;23923:1;23909:16;;:2;:16;;;;23901:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23980:16;23999:12;:10;:12::i;:::-;23980:31;;24022:20;24045:21;24063:2;24045:17;:21::i;:::-;24022:44;;24077:24;24104:25;24122:6;24104:17;:25::i;:::-;24077:52;;24142:60;24163:8;24173:4;24179:2;24183:3;24188:7;24197:4;24142:20;:60::i;:::-;24215:19;24237:9;:13;24247:2;24237:13;;;;;;;;;;;:19;24251:4;24237:19;;;;;;;;;;;;;;;;24215:41;;24290:6;24275:11;:21;;24267:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24415:6;24401:11;:20;24379:9;:13;24389:2;24379:13;;;;;;;;;;;:19;24393:4;24379:19;;;;;;;;;;;;;;;:42;;;;24464:6;24443:9;:13;24453:2;24443:13;;;;;;;;;;;:17;24457:2;24443:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;24519:2;24488:46;;24513:4;24488:46;;24503:8;24488:46;;;24523:2;24527:6;24488:46;;;;;;;:::i;:::-;;;;;;;;24547:59;24567:8;24577:4;24583:2;24587:3;24592:7;24601:4;24547:19;:59::i;:::-;24619:68;24650:8;24660:4;24666:2;24670;24674:6;24682:4;24619:30;:68::i;:::-;23890:805;;;;23721:974;;;;;:::o;36196:198::-;36262:16;36291:22;36330:1;36316:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36291:41;;36354:7;36343:5;36349:1;36343:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;36381:5;36374:12;;;36196:198;;;:::o;33219:221::-;;;;;;;:::o;34395:220::-;;;;;;;:::o;34623:744::-;34838:15;:2;:13;;;:15::i;:::-;34834:526;;;34891:2;34874:38;;;34913:8;34923:4;34929:2;34933:6;34941:4;34874:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;34870:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;35222:6;35215:14;;;;;;;;;;;:::i;:::-;;;;;;;;34870:479;;;35271:62;;;;;;;;;;:::i;:::-;;;;;;;;34870:479;35008:43;;;34996:55;;;:8;:55;;;;34992:154;;35076:50;;;;;;;;;;:::i;:::-;;;;;;;;34992:154;34947:214;34834:526;34623:744;;;;;;:::o;35375:813::-;35615:15;:2;:13;;;:15::i;:::-;35611:570;;;35668:2;35651:43;;;35695:8;35705:4;35711:3;35716:7;35725:4;35651:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35647:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;36043:6;36036:14;;;;;;;;;;;:::i;:::-;;;;;;;;35647:523;;;36092:62;;;;;;;;;;:::i;:::-;;;;;;;;35647:523;35824:48;;;35812:60;;;:8;:60;;;;35808:159;;35897:50;;;;;;;;;;:::i;:::-;;;;;;;;35808:159;35731:251;35611:570;35375:813;;;;;;:::o;2126:326::-;2186:4;2443:1;2421:7;:19;;;:23;2414:30;;2126: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:329::-;4612:6;4661:2;4649:9;4640:7;4636:23;4632:32;4629:119;;;4667:79;;:::i;:::-;4629:119;4787:1;4812:53;4857:7;4848:6;4837:9;4833:22;4812:53;:::i;:::-;4802:63;;4758:117;4553:329;;;;:::o;4888:474::-;4956:6;4964;5013:2;5001:9;4992:7;4988:23;4984:32;4981:119;;;5019:79;;:::i;:::-;4981:119;5139:1;5164:53;5209:7;5200:6;5189:9;5185:22;5164:53;:::i;:::-;5154:63;;5110:117;5266:2;5292:53;5337:7;5328:6;5317:9;5313:22;5292:53;:::i;:::-;5282:63;;5237:118;4888:474;;;;;:::o;5368:1509::-;5522:6;5530;5538;5546;5554;5603:3;5591:9;5582:7;5578:23;5574:33;5571:120;;;5610:79;;:::i;:::-;5571:120;5730:1;5755:53;5800:7;5791:6;5780:9;5776:22;5755:53;:::i;:::-;5745:63;;5701:117;5857:2;5883:53;5928:7;5919:6;5908:9;5904:22;5883:53;:::i;:::-;5873:63;;5828:118;6013:2;6002:9;5998:18;5985:32;6044:18;6036:6;6033:30;6030:117;;;6066:79;;:::i;:::-;6030:117;6171:78;6241:7;6232:6;6221:9;6217:22;6171:78;:::i;:::-;6161:88;;5956:303;6326:2;6315:9;6311:18;6298:32;6357:18;6349:6;6346:30;6343:117;;;6379:79;;:::i;:::-;6343:117;6484:78;6554:7;6545:6;6534:9;6530:22;6484:78;:::i;:::-;6474:88;;6269:303;6639:3;6628:9;6624:19;6611:33;6671:18;6663:6;6660:30;6657:117;;;6693:79;;:::i;:::-;6657:117;6798:62;6852:7;6843:6;6832:9;6828:22;6798:62;:::i;:::-;6788:72;;6582:288;5368:1509;;;;;;;;:::o;6883:1089::-;6987:6;6995;7003;7011;7019;7068:3;7056:9;7047:7;7043:23;7039:33;7036:120;;;7075:79;;:::i;:::-;7036:120;7195:1;7220:53;7265:7;7256:6;7245:9;7241:22;7220:53;:::i;:::-;7210:63;;7166:117;7322:2;7348:53;7393:7;7384:6;7373:9;7369:22;7348:53;:::i;:::-;7338:63;;7293:118;7450:2;7476:53;7521:7;7512:6;7501:9;7497:22;7476:53;:::i;:::-;7466:63;;7421:118;7578:2;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7549:118;7734:3;7723:9;7719:19;7706:33;7766:18;7758:6;7755:30;7752:117;;;7788:79;;:::i;:::-;7752:117;7893:62;7947:7;7938:6;7927:9;7923:22;7893:62;:::i;:::-;7883:72;;7677:288;6883:1089;;;;;;;;:::o;7978:468::-;8043:6;8051;8100:2;8088:9;8079:7;8075:23;8071:32;8068:119;;;8106:79;;:::i;:::-;8068:119;8226:1;8251:53;8296:7;8287:6;8276:9;8272:22;8251:53;:::i;:::-;8241:63;;8197:117;8353:2;8379:50;8421:7;8412:6;8401:9;8397:22;8379:50;:::i;:::-;8369:60;;8324:115;7978:468;;;;;:::o;8452:474::-;8520:6;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:119;;;8583:79;;:::i;:::-;8545:119;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8452:474;;;;;:::o;8932:539::-;9016:6;9065:2;9053:9;9044:7;9040:23;9036:32;9033:119;;;9071:79;;:::i;:::-;9033:119;9219:1;9208:9;9204:17;9191:31;9249:18;9241:6;9238:30;9235:117;;;9271:79;;:::i;:::-;9235:117;9376:78;9446:7;9437:6;9426:9;9422:22;9376:78;:::i;:::-;9366:88;;9162:302;8932:539;;;;:::o;9477:894::-;9595:6;9603;9652:2;9640:9;9631:7;9627:23;9623:32;9620:119;;;9658:79;;:::i;:::-;9620:119;9806:1;9795:9;9791:17;9778:31;9836:18;9828:6;9825:30;9822:117;;;9858:79;;:::i;:::-;9822:117;9963:78;10033:7;10024:6;10013:9;10009:22;9963:78;:::i;:::-;9953:88;;9749:302;10118:2;10107:9;10103:18;10090:32;10149:18;10141:6;10138:30;10135:117;;;10171:79;;:::i;:::-;10135:117;10276:78;10346:7;10337:6;10326:9;10322:22;10276:78;:::i;:::-;10266:88;;10061:303;9477:894;;;;;:::o;10377:::-;10495:6;10503;10552:2;10540:9;10531:7;10527:23;10523:32;10520:119;;;10558:79;;:::i;:::-;10520:119;10706:1;10695:9;10691:17;10678:31;10736:18;10728:6;10725:30;10722:117;;;10758:79;;:::i;:::-;10722:117;10863:78;10933:7;10924:6;10913:9;10909:22;10863:78;:::i;:::-;10853:88;;10649:302;11018:2;11007:9;11003:18;10990:32;11049:18;11041:6;11038:30;11035:117;;;11071:79;;:::i;:::-;11035:117;11176:78;11246:7;11237:6;11226:9;11222:22;11176:78;:::i;:::-;11166:88;;10961:303;10377:894;;;;;:::o;11277:327::-;11335:6;11384:2;11372:9;11363:7;11359:23;11355:32;11352:119;;;11390:79;;:::i;:::-;11352:119;11510:1;11535:52;11579:7;11570:6;11559:9;11555:22;11535:52;:::i;:::-;11525:62;;11481:116;11277:327;;;;:::o;11610:349::-;11679:6;11728:2;11716:9;11707:7;11703:23;11699:32;11696:119;;;11734:79;;:::i;:::-;11696:119;11854:1;11879:63;11934:7;11925:6;11914:9;11910:22;11879:63;:::i;:::-;11869:73;;11825:127;11610:349;;;;:::o;11965:329::-;12024:6;12073:2;12061:9;12052:7;12048:23;12044:32;12041:119;;;12079:79;;:::i;:::-;12041:119;12199:1;12224:53;12269:7;12260:6;12249:9;12245:22;12224:53;:::i;:::-;12214:63;;12170:117;11965:329;;;;:::o;12300:654::-;12378:6;12386;12435:2;12423:9;12414:7;12410:23;12406:32;12403:119;;;12441:79;;:::i;:::-;12403:119;12561:1;12586:53;12631:7;12622:6;12611:9;12607:22;12586:53;:::i;:::-;12576:63;;12532:117;12716:2;12705:9;12701:18;12688:32;12747:18;12739:6;12736:30;12733:117;;;12769:79;;:::i;:::-;12733:117;12874:63;12929:7;12920:6;12909:9;12905:22;12874:63;:::i;:::-;12864:73;;12659:288;12300:654;;;;;:::o;12960:474::-;13028:6;13036;13085:2;13073:9;13064:7;13060:23;13056:32;13053:119;;;13091:79;;:::i;:::-;13053:119;13211:1;13236:53;13281:7;13272:6;13261:9;13257:22;13236:53;:::i;:::-;13226:63;;13182:117;13338:2;13364:53;13409:7;13400:6;13389:9;13385:22;13364:53;:::i;:::-;13354:63;;13309:118;12960:474;;;;;:::o;13440:179::-;13509:10;13530:46;13572:3;13564:6;13530:46;:::i;:::-;13608:4;13603:3;13599:14;13585:28;;13440:179;;;;:::o;13625:118::-;13712:24;13730:5;13712:24;:::i;:::-;13707:3;13700:37;13625:118;;:::o;13779:732::-;13898:3;13927:54;13975:5;13927:54;:::i;:::-;13997:86;14076:6;14071:3;13997:86;:::i;:::-;13990:93;;14107:56;14157:5;14107:56;:::i;:::-;14186:7;14217:1;14202:284;14227:6;14224:1;14221:13;14202:284;;;14303:6;14297:13;14330:63;14389:3;14374:13;14330:63;:::i;:::-;14323:70;;14416:60;14469:6;14416:60;:::i;:::-;14406:70;;14262:224;14249:1;14246;14242:9;14237:14;;14202:284;;;14206:14;14502:3;14495:10;;13903:608;;;13779:732;;;;:::o;14517:109::-;14598:21;14613:5;14598:21;:::i;:::-;14593:3;14586:34;14517:109;;:::o;14632:360::-;14718:3;14746:38;14778:5;14746:38;:::i;:::-;14800:70;14863:6;14858:3;14800:70;:::i;:::-;14793:77;;14879:52;14924:6;14919:3;14912:4;14905:5;14901:16;14879:52;:::i;:::-;14956:29;14978:6;14956:29;:::i;:::-;14951:3;14947:39;14940:46;;14722:270;14632:360;;;;:::o;14998:157::-;15098:50;15142:5;15098:50;:::i;:::-;15093:3;15086:63;14998:157;;:::o;15161:364::-;15249:3;15277:39;15310:5;15277:39;:::i;:::-;15332:71;15396:6;15391:3;15332:71;:::i;:::-;15325:78;;15412:52;15457:6;15452:3;15445:4;15438:5;15434:16;15412:52;:::i;:::-;15489:29;15511:6;15489:29;:::i;:::-;15484:3;15480:39;15473:46;;15253:272;15161:364;;;;:::o;15531:366::-;15673:3;15694:67;15758:2;15753:3;15694:67;:::i;:::-;15687:74;;15770:93;15859:3;15770:93;:::i;:::-;15888:2;15883:3;15879:12;15872:19;;15531:366;;;:::o;15903:::-;16045:3;16066:67;16130:2;16125:3;16066:67;:::i;:::-;16059:74;;16142:93;16231:3;16142:93;:::i;:::-;16260:2;16255:3;16251:12;16244:19;;15903:366;;;:::o;16275:::-;16417:3;16438:67;16502:2;16497:3;16438:67;:::i;:::-;16431:74;;16514:93;16603:3;16514:93;:::i;:::-;16632:2;16627:3;16623:12;16616:19;;16275:366;;;:::o;16647:::-;16789:3;16810:67;16874:2;16869:3;16810:67;:::i;:::-;16803:74;;16886:93;16975:3;16886:93;:::i;:::-;17004:2;16999:3;16995:12;16988:19;;16647:366;;;:::o;17019:::-;17161:3;17182:67;17246:2;17241:3;17182:67;:::i;:::-;17175:74;;17258:93;17347:3;17258:93;:::i;:::-;17376:2;17371:3;17367:12;17360:19;;17019:366;;;:::o;17391:::-;17533:3;17554:67;17618:2;17613:3;17554:67;:::i;:::-;17547:74;;17630:93;17719:3;17630:93;:::i;:::-;17748:2;17743:3;17739:12;17732:19;;17391:366;;;:::o;17763:::-;17905:3;17926:67;17990:2;17985:3;17926:67;:::i;:::-;17919:74;;18002:93;18091:3;18002:93;:::i;:::-;18120:2;18115:3;18111:12;18104:19;;17763:366;;;:::o;18135:::-;18277:3;18298:67;18362:2;18357:3;18298:67;:::i;:::-;18291:74;;18374:93;18463:3;18374:93;:::i;:::-;18492:2;18487:3;18483:12;18476:19;;18135:366;;;:::o;18507:::-;18649:3;18670:67;18734:2;18729:3;18670:67;:::i;:::-;18663:74;;18746:93;18835:3;18746:93;:::i;:::-;18864:2;18859:3;18855:12;18848:19;;18507:366;;;:::o;18879:::-;19021:3;19042:67;19106:2;19101:3;19042:67;:::i;:::-;19035:74;;19118:93;19207:3;19118:93;:::i;:::-;19236:2;19231:3;19227:12;19220:19;;18879:366;;;:::o;19251:::-;19393:3;19414:67;19478:2;19473:3;19414:67;:::i;:::-;19407:74;;19490:93;19579:3;19490:93;:::i;:::-;19608:2;19603:3;19599:12;19592:19;;19251:366;;;:::o;19623:::-;19765:3;19786:67;19850:2;19845:3;19786:67;:::i;:::-;19779:74;;19862:93;19951:3;19862:93;:::i;:::-;19980:2;19975:3;19971:12;19964:19;;19623:366;;;:::o;19995:398::-;20154:3;20175:83;20256:1;20251:3;20175:83;:::i;:::-;20168:90;;20267:93;20356:3;20267:93;:::i;:::-;20385:1;20380:3;20376:11;20369:18;;19995:398;;;:::o;20399:366::-;20541:3;20562:67;20626:2;20621:3;20562:67;:::i;:::-;20555:74;;20638:93;20727:3;20638:93;:::i;:::-;20756:2;20751:3;20747:12;20740:19;;20399:366;;;:::o;20771:::-;20913:3;20934:67;20998:2;20993:3;20934:67;:::i;:::-;20927:74;;21010:93;21099:3;21010:93;:::i;:::-;21128:2;21123:3;21119:12;21112:19;;20771:366;;;:::o;21143:::-;21285:3;21306:67;21370:2;21365:3;21306:67;:::i;:::-;21299:74;;21382:93;21471:3;21382:93;:::i;:::-;21500:2;21495:3;21491:12;21484:19;;21143:366;;;:::o;21515:::-;21657:3;21678:67;21742:2;21737:3;21678:67;:::i;:::-;21671:74;;21754:93;21843:3;21754:93;:::i;:::-;21872:2;21867:3;21863:12;21856:19;;21515:366;;;:::o;21887:::-;22029:3;22050:67;22114:2;22109:3;22050:67;:::i;:::-;22043:74;;22126:93;22215:3;22126:93;:::i;:::-;22244:2;22239:3;22235:12;22228:19;;21887:366;;;:::o;22259:::-;22401:3;22422:67;22486:2;22481:3;22422:67;:::i;:::-;22415:74;;22498:93;22587:3;22498:93;:::i;:::-;22616:2;22611:3;22607:12;22600:19;;22259:366;;;:::o;22631:108::-;22708:24;22726:5;22708:24;:::i;:::-;22703:3;22696:37;22631:108;;:::o;22745:118::-;22832:24;22850:5;22832:24;:::i;:::-;22827:3;22820:37;22745:118;;:::o;22869:379::-;23053:3;23075:147;23218:3;23075:147;:::i;:::-;23068:154;;23239:3;23232:10;;22869:379;;;:::o;23254:1053::-;23577:4;23615:3;23604:9;23600:19;23592:27;;23629:71;23697:1;23686:9;23682:17;23673:6;23629:71;:::i;:::-;23710:72;23778:2;23767:9;23763:18;23754:6;23710:72;:::i;:::-;23829:9;23823:4;23819:20;23814:2;23803:9;23799:18;23792:48;23857:108;23960:4;23951:6;23857:108;:::i;:::-;23849:116;;24012:9;24006:4;24002:20;23997:2;23986:9;23982:18;23975:48;24040:108;24143:4;24134:6;24040:108;:::i;:::-;24032:116;;24196:9;24190:4;24186:20;24180:3;24169:9;24165:19;24158:49;24224:76;24295:4;24286:6;24224:76;:::i;:::-;24216:84;;23254:1053;;;;;;;;:::o;24313:751::-;24536:4;24574:3;24563:9;24559:19;24551:27;;24588:71;24656:1;24645:9;24641:17;24632:6;24588:71;:::i;:::-;24669:72;24737:2;24726:9;24722:18;24713:6;24669:72;:::i;:::-;24751;24819:2;24808:9;24804:18;24795:6;24751:72;:::i;:::-;24833;24901:2;24890:9;24886:18;24877:6;24833:72;:::i;:::-;24953:9;24947:4;24943:20;24937:3;24926:9;24922:19;24915:49;24981:76;25052:4;25043:6;24981:76;:::i;:::-;24973:84;;24313:751;;;;;;;;:::o;25070:373::-;25213:4;25251:2;25240:9;25236:18;25228:26;;25300:9;25294:4;25290:20;25286:1;25275:9;25271:17;25264:47;25328:108;25431:4;25422:6;25328:108;:::i;:::-;25320:116;;25070:373;;;;:::o;25449:634::-;25670:4;25708:2;25697:9;25693:18;25685:26;;25757:9;25751:4;25747:20;25743:1;25732:9;25728:17;25721:47;25785:108;25888:4;25879:6;25785:108;:::i;:::-;25777:116;;25940:9;25934:4;25930:20;25925:2;25914:9;25910:18;25903:48;25968:108;26071:4;26062:6;25968:108;:::i;:::-;25960:116;;25449:634;;;;;:::o;26089:210::-;26176:4;26214:2;26203:9;26199:18;26191:26;;26227:65;26289:1;26278:9;26274:17;26265:6;26227:65;:::i;:::-;26089:210;;;;:::o;26305:248::-;26411:4;26449:2;26438:9;26434:18;26426:26;;26462:84;26543:1;26532:9;26528:17;26519:6;26462:84;:::i;:::-;26305:248;;;;:::o;26559:313::-;26672:4;26710:2;26699:9;26695:18;26687:26;;26759:9;26753:4;26749:20;26745:1;26734:9;26730:17;26723:47;26787:78;26860:4;26851:6;26787:78;:::i;:::-;26779:86;;26559:313;;;;:::o;26878:419::-;27044:4;27082:2;27071:9;27067:18;27059:26;;27131:9;27125:4;27121:20;27117:1;27106:9;27102:17;27095:47;27159:131;27285:4;27159:131;:::i;:::-;27151:139;;26878:419;;;:::o;27303:::-;27469:4;27507:2;27496:9;27492:18;27484:26;;27556:9;27550:4;27546:20;27542:1;27531:9;27527:17;27520:47;27584:131;27710:4;27584:131;:::i;:::-;27576:139;;27303:419;;;:::o;27728:::-;27894:4;27932:2;27921:9;27917:18;27909:26;;27981:9;27975:4;27971:20;27967:1;27956:9;27952:17;27945:47;28009:131;28135:4;28009:131;:::i;:::-;28001:139;;27728:419;;;:::o;28153:::-;28319:4;28357:2;28346:9;28342:18;28334:26;;28406:9;28400:4;28396:20;28392:1;28381:9;28377:17;28370:47;28434:131;28560:4;28434:131;:::i;:::-;28426:139;;28153:419;;;:::o;28578:::-;28744:4;28782:2;28771:9;28767:18;28759:26;;28831:9;28825:4;28821:20;28817:1;28806:9;28802:17;28795:47;28859:131;28985:4;28859:131;:::i;:::-;28851:139;;28578:419;;;:::o;29003:::-;29169:4;29207:2;29196:9;29192:18;29184:26;;29256:9;29250:4;29246:20;29242:1;29231:9;29227:17;29220:47;29284:131;29410:4;29284:131;:::i;:::-;29276:139;;29003:419;;;:::o;29428:::-;29594:4;29632:2;29621:9;29617:18;29609:26;;29681:9;29675:4;29671:20;29667:1;29656:9;29652:17;29645:47;29709:131;29835:4;29709:131;:::i;:::-;29701:139;;29428:419;;;:::o;29853:::-;30019:4;30057:2;30046:9;30042:18;30034:26;;30106:9;30100:4;30096:20;30092:1;30081:9;30077:17;30070:47;30134:131;30260:4;30134:131;:::i;:::-;30126:139;;29853:419;;;:::o;30278:::-;30444:4;30482:2;30471:9;30467:18;30459:26;;30531:9;30525:4;30521:20;30517:1;30506:9;30502:17;30495:47;30559:131;30685:4;30559:131;:::i;:::-;30551:139;;30278:419;;;:::o;30703:::-;30869:4;30907:2;30896:9;30892:18;30884:26;;30956:9;30950:4;30946:20;30942:1;30931:9;30927:17;30920:47;30984:131;31110:4;30984:131;:::i;:::-;30976:139;;30703:419;;;:::o;31128:::-;31294:4;31332:2;31321:9;31317:18;31309:26;;31381:9;31375:4;31371:20;31367:1;31356:9;31352:17;31345:47;31409:131;31535:4;31409:131;:::i;:::-;31401:139;;31128:419;;;:::o;31553:::-;31719:4;31757:2;31746:9;31742:18;31734:26;;31806:9;31800:4;31796:20;31792:1;31781:9;31777:17;31770:47;31834:131;31960:4;31834:131;:::i;:::-;31826:139;;31553:419;;;:::o;31978:::-;32144:4;32182:2;32171:9;32167:18;32159:26;;32231:9;32225:4;32221:20;32217:1;32206:9;32202:17;32195:47;32259:131;32385:4;32259:131;:::i;:::-;32251:139;;31978:419;;;:::o;32403:::-;32569:4;32607:2;32596:9;32592:18;32584:26;;32656:9;32650:4;32646:20;32642:1;32631:9;32627:17;32620:47;32684:131;32810:4;32684:131;:::i;:::-;32676:139;;32403:419;;;:::o;32828:::-;32994:4;33032:2;33021:9;33017:18;33009:26;;33081:9;33075:4;33071:20;33067:1;33056:9;33052:17;33045:47;33109:131;33235:4;33109:131;:::i;:::-;33101:139;;32828:419;;;:::o;33253:::-;33419:4;33457:2;33446:9;33442:18;33434:26;;33506:9;33500:4;33496:20;33492:1;33481:9;33477:17;33470:47;33534:131;33660:4;33534:131;:::i;:::-;33526:139;;33253:419;;;:::o;33678:::-;33844:4;33882:2;33871:9;33867:18;33859:26;;33931:9;33925:4;33921:20;33917:1;33906:9;33902:17;33895:47;33959:131;34085:4;33959:131;:::i;:::-;33951:139;;33678:419;;;:::o;34103:::-;34269:4;34307:2;34296:9;34292:18;34284:26;;34356:9;34350:4;34346:20;34342:1;34331:9;34327:17;34320:47;34384:131;34510:4;34384:131;:::i;:::-;34376:139;;34103:419;;;:::o;34528:222::-;34621:4;34659:2;34648:9;34644:18;34636:26;;34672:71;34740:1;34729:9;34725:17;34716:6;34672:71;:::i;:::-;34528:222;;;;:::o;34756:332::-;34877:4;34915:2;34904:9;34900:18;34892:26;;34928:71;34996:1;34985:9;34981:17;34972:6;34928:71;:::i;:::-;35009:72;35077:2;35066:9;35062:18;35053:6;35009:72;:::i;:::-;34756:332;;;;;:::o;35094:129::-;35128:6;35155:20;;:::i;:::-;35145:30;;35184:33;35212:4;35204:6;35184:33;:::i;:::-;35094:129;;;:::o;35229:75::-;35262:6;35295:2;35289:9;35279:19;;35229:75;:::o;35310:311::-;35387:4;35477:18;35469:6;35466:30;35463:56;;;35499:18;;:::i;:::-;35463:56;35549:4;35541:6;35537:17;35529:25;;35609:4;35603;35599:15;35591:23;;35310:311;;;:::o;35627:::-;35704:4;35794:18;35786:6;35783:30;35780:56;;;35816:18;;:::i;:::-;35780:56;35866:4;35858:6;35854:17;35846:25;;35926:4;35920;35916:15;35908:23;;35627:311;;;:::o;35944:307::-;36005:4;36095:18;36087:6;36084:30;36081:56;;;36117:18;;:::i;:::-;36081:56;36155:29;36177:6;36155:29;:::i;:::-;36147:37;;36239:4;36233;36229:15;36221:23;;35944:307;;;:::o;36257:308::-;36319:4;36409:18;36401:6;36398:30;36395:56;;;36431:18;;:::i;:::-;36395:56;36469:29;36491:6;36469:29;:::i;:::-;36461:37;;36553:4;36547;36543:15;36535:23;;36257:308;;;:::o;36571:132::-;36638:4;36661:3;36653:11;;36691:4;36686:3;36682:14;36674:22;;36571:132;;;:::o;36709:114::-;36776:6;36810:5;36804:12;36794:22;;36709:114;;;:::o;36829:98::-;36880:6;36914:5;36908:12;36898:22;;36829:98;;;:::o;36933:99::-;36985:6;37019:5;37013:12;37003:22;;36933:99;;;:::o;37038:113::-;37108:4;37140;37135:3;37131:14;37123:22;;37038:113;;;:::o;37157:184::-;37256:11;37290:6;37285:3;37278:19;37330:4;37325:3;37321:14;37306:29;;37157:184;;;;:::o;37347:168::-;37430:11;37464:6;37459:3;37452:19;37504:4;37499:3;37495:14;37480:29;;37347:168;;;;:::o;37521:147::-;37622:11;37659:3;37644:18;;37521:147;;;;:::o;37674:169::-;37758:11;37792:6;37787:3;37780:19;37832:4;37827:3;37823:14;37808:29;;37674:169;;;;:::o;37849:305::-;37889:3;37908:20;37926:1;37908:20;:::i;:::-;37903:25;;37942:20;37960:1;37942:20;:::i;:::-;37937:25;;38096:1;38028:66;38024:74;38021:1;38018:81;38015:107;;;38102:18;;:::i;:::-;38015:107;38146:1;38143;38139:9;38132:16;;37849:305;;;;:::o;38160:348::-;38200:7;38223:20;38241:1;38223:20;:::i;:::-;38218:25;;38257:20;38275:1;38257:20;:::i;:::-;38252:25;;38445:1;38377:66;38373:74;38370:1;38367:81;38362:1;38355:9;38348:17;38344:105;38341:131;;;38452:18;;:::i;:::-;38341:131;38500:1;38497;38493:9;38482:20;;38160:348;;;;:::o;38514:191::-;38554:4;38574:20;38592:1;38574:20;:::i;:::-;38569:25;;38608:20;38626:1;38608:20;:::i;:::-;38603:25;;38647:1;38644;38641:8;38638:34;;;38652:18;;:::i;:::-;38638:34;38697:1;38694;38690:9;38682:17;;38514:191;;;;:::o;38711:96::-;38748:7;38777:24;38795:5;38777:24;:::i;:::-;38766:35;;38711:96;;;:::o;38813:90::-;38847:7;38890:5;38883:13;38876:21;38865:32;;38813:90;;;:::o;38909:149::-;38945:7;38985:66;38978:5;38974:78;38963:89;;38909:149;;;:::o;39064:141::-;39116:7;39145:5;39134:16;;39151:48;39193:5;39151:48;:::i;:::-;39064:141;;;:::o;39211:126::-;39248:7;39288:42;39281:5;39277:54;39266:65;;39211:126;;;:::o;39343:77::-;39380:7;39409:5;39398:16;;39343:77;;;:::o;39426:141::-;39489:9;39522:39;39555:5;39522:39;:::i;:::-;39509:52;;39426:141;;;:::o;39573:154::-;39657:6;39652:3;39647;39634:30;39719:1;39710:6;39705:3;39701:16;39694:27;39573:154;;;:::o;39733:307::-;39801:1;39811:113;39825:6;39822:1;39819:13;39811:113;;;39910:1;39905:3;39901:11;39895:18;39891:1;39886:3;39882:11;39875:39;39847:2;39844:1;39840:10;39835:15;;39811:113;;;39942:6;39939:1;39936:13;39933:101;;;40022:1;40013:6;40008:3;40004:16;39997:27;39933:101;39782:258;39733:307;;;:::o;40046:320::-;40090:6;40127:1;40121:4;40117:12;40107:22;;40174:1;40168:4;40164:12;40195:18;40185:81;;40251:4;40243:6;40239:17;40229:27;;40185:81;40313:2;40305:6;40302:14;40282:18;40279:38;40276:84;;;40332:18;;:::i;:::-;40276:84;40097:269;40046:320;;;:::o;40372:281::-;40455:27;40477:4;40455:27;:::i;:::-;40447:6;40443:40;40585:6;40573:10;40570:22;40549:18;40537:10;40534:34;40531:62;40528:88;;;40596:18;;:::i;:::-;40528:88;40636:10;40632:2;40625:22;40415:238;40372:281;;:::o;40659:233::-;40698:3;40721:24;40739:5;40721:24;:::i;:::-;40712:33;;40767:66;40760:5;40757:77;40754:103;;;40837:18;;:::i;:::-;40754:103;40884:1;40877:5;40873:13;40866:20;;40659:233;;;:::o;40898:180::-;40946:77;40943:1;40936:88;41043:4;41040:1;41033:15;41067:4;41064:1;41057:15;41084:180;41132:77;41129:1;41122:88;41229:4;41226:1;41219:15;41253:4;41250:1;41243:15;41270:180;41318:77;41315:1;41308:88;41415:4;41412:1;41405:15;41439:4;41436:1;41429:15;41456:180;41504:77;41501:1;41494:88;41601:4;41598:1;41591:15;41625:4;41622:1;41615:15;41642:180;41690:77;41687:1;41680:88;41787:4;41784:1;41777:15;41811:4;41808:1;41801:15;41828:183;41863:3;41901:1;41883:16;41880:23;41877:128;;;41939:1;41936;41933;41918:23;41961:34;41992:1;41986:8;41961:34;:::i;:::-;41954:41;;41877:128;41828:183;:::o;42017:117::-;42126:1;42123;42116:12;42140:117;42249:1;42246;42239:12;42263:117;42372:1;42369;42362:12;42386:117;42495:1;42492;42485:12;42509:117;42618:1;42615;42608:12;42632:102;42673:6;42724:2;42720:7;42715:2;42708:5;42704:14;42700:28;42690:38;;42632:102;;;:::o;42740:106::-;42784:8;42833:5;42828:3;42824:15;42803:36;;42740:106;;;:::o;42852:239::-;42992:34;42988:1;42980:6;42976:14;42969:58;43061:22;43056:2;43048:6;43044:15;43037:47;42852:239;:::o;43097:234::-;43237:34;43233:1;43225:6;43221:14;43214:58;43306:17;43301:2;43293:6;43289:15;43282:42;43097:234;:::o;43337:227::-;43477:34;43473:1;43465:6;43461:14;43454:58;43546:10;43541:2;43533:6;43529:15;43522:35;43337:227;:::o;43570:179::-;43710:31;43706:1;43698:6;43694:14;43687:55;43570:179;:::o;43755:229::-;43895:34;43891:1;43883:6;43879:14;43872:58;43964:12;43959:2;43951:6;43947:15;43940:37;43755:229;:::o;43990:168::-;44130:20;44126:1;44118:6;44114:14;44107:44;43990:168;:::o;44164:230::-;44304:34;44300:1;44292:6;44288:14;44281:58;44373:13;44368:2;44360:6;44356:15;44349:38;44164:230;:::o;44400:225::-;44540:34;44536:1;44528:6;44524:14;44517:58;44609:8;44604:2;44596:6;44592:15;44585:33;44400:225;:::o;44631:164::-;44771:16;44767:1;44759:6;44755:14;44748:40;44631:164;:::o;44801:224::-;44941:34;44937:1;44929:6;44925:14;44918:58;45010:7;45005:2;44997:6;44993:15;44986:32;44801:224;:::o;45031:229::-;45171:34;45167:1;45159:6;45155:14;45148:58;45240:12;45235:2;45227:6;45223:15;45216:37;45031:229;:::o;45266:166::-;45406:18;45402:1;45394:6;45390:14;45383:42;45266:166;:::o;45438:114::-;;:::o;45558:171::-;45698:23;45694:1;45686:6;45682:14;45675:47;45558:171;:::o;45735:228::-;45875:34;45871:1;45863:6;45859:14;45852:58;45944:11;45939:2;45931:6;45927:15;45920:36;45735:228;:::o;45969:::-;46109:34;46105:1;46097:6;46093:14;46086:58;46178:11;46173:2;46165:6;46161:15;46154:36;45969:228;:::o;46203:227::-;46343:34;46339:1;46331:6;46327:14;46320:58;46412:10;46407:2;46399:6;46395:15;46388:35;46203:227;:::o;46436:220::-;46576:34;46572:1;46564:6;46560:14;46553:58;46645:3;46640:2;46632:6;46628:15;46621:28;46436:220;:::o;46662:::-;46802:34;46798:1;46790:6;46786:14;46779:58;46871:3;46866:2;46858:6;46854:15;46847:28;46662:220;:::o;46888:711::-;46927:3;46965:4;46947:16;46944:26;46941:39;;;46973:5;;46941:39;47002:20;;:::i;:::-;47077:1;47059:16;47055:24;47052:1;47046:4;47031:49;47110:4;47104:11;47209:16;47202:4;47194:6;47190:17;47187:39;47154:18;47146:6;47143:30;47127:113;47124:146;;;47255:5;;;;47124:146;47301:6;47295:4;47291:17;47337:3;47331:10;47364:18;47356:6;47353:30;47350:43;;;47386:5;;;;;;47350:43;47434:6;47427:4;47422:3;47418:14;47414:27;47493:1;47475:16;47471:24;47465:4;47461:35;47456:3;47453:44;47450:57;;;47500:5;;;;;;;47450:57;47517;47565:6;47559:4;47555:17;47547:6;47543:30;47537:4;47517:57;:::i;:::-;47590:3;47583:10;;46931:668;;;;;46888:711;;:::o;47605:120::-;47693:1;47686:5;47683:12;47673:46;;47699:18;;:::i;:::-;47673:46;47605:120;:::o;47731:122::-;47804:24;47822:5;47804:24;:::i;:::-;47797:5;47794:35;47784:63;;47843:1;47840;47833:12;47784:63;47731:122;:::o;47859:116::-;47929:21;47944:5;47929:21;:::i;:::-;47922:5;47919:32;47909:60;;47965:1;47962;47955:12;47909:60;47859:116;:::o;47981:120::-;48053:23;48070:5;48053:23;:::i;:::-;48046:5;48043:34;48033:62;;48091:1;48088;48081:12;48033:62;47981:120;:::o;48107:122::-;48180:24;48198:5;48180:24;:::i;:::-;48173:5;48170:35;48160:63;;48219:1;48216;48209:12;48160:63;48107:122;:::o

Swarm Source

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