ETH Price: $3,462.66 (+0.32%)

Token

FASHIONCRYPTO_Genesis (FCG)
 

Overview

Max Total Supply

9,999 FCG

Holders

91

Total Transfers

-

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

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:
FashionCrypto

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT OR Apache-2.0
//Albert Banez
// File: @openzeppelin/contracts/utils/Counters.sol


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

pragma solidity ^0.8.0;

/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids.
 *
 * Include with `using Counters for Counters.Counter;`
 */
library Counters {
    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        unchecked {
            counter._value += 1;
        }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
        unchecked {
            counter._value = value - 1;
        }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

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


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

pragma solidity ^0.8.0;

/**
 * @dev String operations.
 */
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

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


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

pragma solidity ^0.8.0;

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

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

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


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

pragma solidity ^0.8.0;


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

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

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

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

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

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

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

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

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


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

pragma solidity ^0.8.1;

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

        return account.code.length > 0;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)

pragma solidity ^0.8.0;

/**
 * @title ERC721 token receiver interface
 * @dev Interface for any contract that wants to support safeTransfers
 * from ERC721 asset contracts.
 */
interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

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


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

pragma solidity ^0.8.0;

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

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


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

pragma solidity ^0.8.0;


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

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;


/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the token collection symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

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


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/ERC721.sol)

pragma solidity ^0.8.0;








/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata extension, but not including the Enumerable extension, which is available separately as
 * {ERC721Enumerable}.
 */
contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

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

    /**
     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    /**
     * @dev See {IERC721Metadata-name}.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev See {IERC721Metadata-symbol}.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        string memory baseURI = _baseURI();
        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : "";
    }

    /**
     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each
     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty
     * by default, can be overridden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        _setApprovalForAll(_msgSender(), operator, approved);
    }

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

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * `_data` is additional data, it has no specified format and it is sent in call to `to`.
     *
     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.
     * implement alternative mechanisms to perform token transfer, such as signature-based.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    /**
     * @dev Returns whether `tokenId` exists.
     *
     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.
     *
     * Tokens start existing when they are minted (`_mint`),
     * and stop existing when they are burned (`_burn`).
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    /**
     * @dev Returns whether `spender` is allowed to manage `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);
    }

    /**
     * @dev Safely mints `tokenId` and transfers it to `to`.
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    /**
     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is
     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.
     */
    function _safeMint(
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _mint(to, tokenId);
        require(
            _checkOnERC721Received(address(0), to, tokenId, _data),
            "ERC721: transfer to non ERC721Receiver implementer"
        );
    }

    /**
     * @dev Mints `tokenId` and transfers it to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible
     *
     * Requirements:
     *
     * - `tokenId` must not exist.
     * - `to` cannot be the zero address.
     *
     * Emits a {Transfer} event.
     */
    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);

        _afterTokenTransfer(address(0), to, tokenId);
    }

    /**
     * @dev Destroys `tokenId`.
     * The approval is cleared when the token is burned.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     *
     * Emits a {Transfer} event.
     */
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];

        emit Transfer(owner, address(0), tokenId);

        _afterTokenTransfer(owner, address(0), tokenId);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     *
     * Emits a {Transfer} event.
     */
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        emit Transfer(from, to, tokenId);

        _afterTokenTransfer(from, to, tokenId);
    }

    /**
     * @dev Approve `to` to operate on `tokenId`
     *
     * Emits a {Approval} event.
     */
    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

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

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {}
}

// File: contracts/FashionCrypto.sol


pragma solidity ^0.8.4;




abstract contract WithLimitedSupply {
    using Counters for Counters.Counter;
    /// @dev Emitted when the supply of this collection changes
    event SupplyChanged(uint256 indexed supply);

    // Keeps track of how many we have minted
    Counters.Counter private _tokenCount;

    /// @dev The maximum count of tokens this token tracker will hold.
    uint256 private _totalSupply;

    /// Instanciate the contract
    /// @param totalSupply_ how many tokens this collection should hold
    constructor (uint256 totalSupply_) {
        _totalSupply = totalSupply_;
    }

    /// @dev Get the max Supply
    /// @return the maximum token count
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /// @dev Get the current token count
    /// @return the created token count
    function tokenCount() public view returns (uint256) {
        return _tokenCount.current();
    }

    /// @dev Check whether tokens are still available
    /// @return the available token count
    function availableTokenCount() public view returns (uint256) {
        return totalSupply() - tokenCount();
    }

    /// @dev Increment the token count and fetch the latest count
    /// @return the next token id
    function nextToken() internal virtual returns (uint256) {
        uint256 token = _tokenCount.current();

        _tokenCount.increment();

        return token;
    }

    /// @dev Check whether another token is still available
    modifier ensureAvailability() {
        require(availableTokenCount() > 0, "No more tokens available");
        _;
    }

    /// @param amount Check whether number of tokens are still available
    /// @dev Check whether tokens are still available
    modifier ensureAvailabilityFor(uint256 amount) {
        require(availableTokenCount() >= amount, "Requested number of tokens not available");
        _;
    }

    /// Update the supply for the collection
    /// @param _supply the new token supply.
    /// @dev create additional token supply for this collection.
    function _setSupply(uint256 _supply) internal virtual {
        require(_supply > tokenCount(), "Can't set the supply to less than the current token count");
        _totalSupply = _supply;

        emit SupplyChanged(totalSupply());
    }
}


abstract contract RandomlyAssigned is WithLimitedSupply {
    // Used for random index assignment
    mapping(uint256 => uint256) private tokenMatrix;

    // The initial token ID
    uint256 private startFrom;

    //uint256 public preSaleStartTime = 1653390000; //May 24, 8PM
    //uint256 public preSaleEndTime = 1653940800; //May 30, 8PM

    //Changing the startIndex
    event startIndexChange(uint oldValue, uint256 newValue);

    /// Instanciate the contract
    /// @param _totalSupply how many tokens this collection should hold
    /// @param _startFrom the tokenID with which to start counting
    constructor (uint256 _totalSupply, uint256 _startFrom)
        WithLimitedSupply(_totalSupply)
    {
        startFrom = _startFrom;
    }

    /// Get the next token ID
    /// @dev Randomly gets a new token ID and keeps track of the ones that are still available.
    /// @return the next token ID
    function nextToken() internal override ensureAvailability returns (uint256) {
        uint256 maxIndex = totalSupply() - tokenCount();
        uint256 random = uint256(keccak256(
            abi.encodePacked(
                msg.sender,
                block.coinbase,
                block.difficulty,
                block.gaslimit,
                block.timestamp
            )
        )) % maxIndex;

        uint256 value = 0;
        if (tokenMatrix[random] == 0) {
            // If this matrix position is empty, set the value to the generated random number.
            value = random;
        } else {
            // Otherwise, use the previously stored number from the matrix.
            value = tokenMatrix[random];
        }

        // If the last available tokenID is still unused...
        if (tokenMatrix[maxIndex - 1] == 0) {
            // ...store that ID in the current matrix position.
            tokenMatrix[random] = maxIndex - 1;
        } else {
            // ...otherwise copy over the stored number to the current matrix position.
            tokenMatrix[random] = tokenMatrix[maxIndex - 1];
        }

        // Increment counts
        super.nextToken();

        return value + startFrom;
    }

    function _setStartFrom(uint256 index) internal virtual {
        uint256 prevStarFrom =startFrom;
        startFrom = index;
        emit startIndexChange(prevStarFrom, index);
    }
}

contract FashionCrypto is ERC721, Ownable, WithLimitedSupply  {
    using Strings for uint256;
    string public baseURI= "https://fashioncrypto.io/data/fashion/json/";
    string baseExtension = ".json";

    uint256 public cost = 0.05 ether;
    address public ownerAddress = 0xcff635D73F4Cd7C4005cFC3FE7cc01bb60F42FDd;
    bool public blnSale = true;
    bool public blnWhitelisted = true;
    uint256 public startIndex = 50;
    uint256 public endIndex = 250;
    uint256[] private usedTokenId;
    uint8 public batchMintMaxAmount = 5;    
    uint8 public whiteOneMax = 10;    
    uint8 public whiteTwoMax = 1;    

address[] private whitelistedAddressesOne =[0xcff635D73F4Cd7C4005cFC3FE7cc01bb60F42FDd, 0xe03895910e1190d846AeD3BEB317A84E1Ff892d2,
0x4e48783F618ecB06ddFB07D36c49119C2b82F0F4,
0xc20873d40e6F75BF6C39F3BB48bFC1847f335dE2,
0xaA3FcbF8ac0B093C20978EE025e25D95943B7a27,
0x5b2e7eCB43E61B30a7d0B3B698C430b204C22dBD,
0xBA8B0Ea93F9c7cf473e7f99E3bD52AFD37fa55eF,
0xBb209d8F0497e7b64813a7F91960a88d182331E9,
0x7B56dEB150df9dD428C1770fFDf334468f92a444,
0xbaDF8a6bA6EbF14E7690cb95782f5e492Cc47d75,
0x2224BC00EAD1d90365d860ed0C6A21363dA40784,
0x8872485d20694495aEccb098692270C3Ee419935,
0x0fF745e8Df3BCef82D59A8b8fB9cE8c542534136,
0x62017eb3cBc67F977A4bf962cF2Dc49C537f6cCa,
0xF133Ee684d71aA470D7B3ef2868cafaBa53E473e,
0xdf2cd7b522aaeF6dC418CF83cc1e815C1E2Bf8B0,
0x2e2489628CD9f1B98DfB83BB57DA2d0C10109019,
0x9119cc7143250C43b82A02f63BaCF7bDea930669,
0xbA87461c49666f72AFC1D2D805aF6dEB2E193A70,
0x575848A2a2fBf466d31a42820c90F7a71950192D,
0x2a1D69a0830f6094ec318d93A8779dB877871736,
0x500A9D4b9463dA8ef6885b13A66c32916a68af7a,
0x04606154dA2844fa6147F54e3A035651CEB2b197,
0xb6c5feC131aC371456B92B406C25948A83AcaBC1,
0x1cfe6cFD5DbEFD1a5B09524c949e4c4A606972Da,
0x2E8b6a975F7B0edCfe78A2E377329B6c575DC50F,
0x875B1A1Dd84Edf1012fa0d7A0c997425Fda12eFf,
0x138B5C84ba91ea4b95739A527e340489FeF2FE28,
0x3E0034B5D25bdB668EEc68e2643A2DFcFE786766,
0x5DE51b7944c766b1CAdce299463059bdEc38C1BF,
0x23EbD54Fd65825e06a6e5AACc1A0b523BFeb748e,
0xc30d117D16f6eB743BB0019e7863671919368cD1,
0x1557299331AAe614896e4fDC82D882C62Fb62302,
0x108C04d9145c93fE9E3B07Ad27698EDFd5e6e498,
0x4f355A9C74Bd22A90fa32DE4cD129da1999520aA,
0x6cB9C2c61908658e3C9875C864B5e2CAb2f21a4c,
0xE8b7a54AC34D1bA55Fd0E92a79136E7A225C2451,
0xf81Ef872db0ff70bDD3D7b729Ff0440E72b33b18,
0x2eFe4fA1D55880879800638021632F6b9c6F088C,
0xC88f6A403D1F2Ff76c6aB4a71ece88aA6321A40E,
0xd45D61a7762Ed1236b275caDA5f1171D74E008ab,
0x1da10F21F60920d940506939148Cac505315a707,
0xf4a33929872B87BB67dDCAC38548c808DD38F2ae,
0x545FF76F9Ee769B144cb79146c1069cfa0ef2A9f,
0xda4486A591B4543562713cE1413f34b44D3af45A,
0xBD3b7cCd7F58C40DD1150d3487f854f468357D4c,
0x869A83C3D912318fb8FcAC6ADadDaA50c2F373f6,
0xfef634E9Adc613871DE7FE764c38101d8fE85d68,
0x04f7244581360ae45eE6d136dd9ec64926c9386C,
0x012Bf606c1f1AB362A62dBC3e3d3e937027e198D,
0xB18cCecd1FbEBC7C3E30Cc70983720D9d672e8ca,
0x2834e08F4EeCd7b63A6FEFb8eBAadB3fDD277602,
0xE944b8ebBDE99A4D29Ba3faC1931435352d07956,
0xA0DbD3771a4fB21B517BbEa198bC335A44601A4E,
0x2CCc19E242e2f4C2541DAD341be3792Ac0eEd010,
0x16a20ac1719E1F68d663de5504fe58fE9b1ed758,
0xa1ce1e761695fCdB0288d94d3bc08e825064C0a3,
0x67DC869ef404607977833B7810310bA1466324B4,
0x73EB4c1DADb5cee393DA1e80b9a7098fa5afd437,
0x0955C6965Df31558C5D2a7A0F66631c16Dd42980,
0xBE19aa80959bc7c85970AEe306Ecef2cC03844E2,
0x87d7C97B5a69c26C5CBC99b1B27937eDf5ccA10d,
0x5ad430F7eeB9af006001fd21F9Ab27E1b994b506,
0x513db322a397701BF624B517B00291F82B665884,
0x520F3AFd4d156e71Fc26F330AcA6f89E083ff524,
0xF24c2c1A7d479F6B50D6c2065Da97366Ec9Fe39F,
0xe11394F5F5BD7244e73A253B2081Ba5BAA7d2432,
0xf5a9B8Ea9fb71aB2dA81A866d6877b4dd717f9d1,
0x0a1D634e51809b93ae943c9faf6027F117315d7E,
0xeaF63e1917F0B67b8dB58513115764b96Bf90320,
0xD6Fe2aC29E9A8ba1ed61B7689BFA864b31E8f3E6,
0xe2338c6f7148b792CE76a56F6Ff22aFaEbb9c4EA,
0xEF64c2Ac694185DBe61bC74E1505f28C86AB3AC0,
0x669f900DeA5cA376d9a7B6ceDB7D1ec744A24102,
0x0458f111cA216AdA7bB69bD673fF18c2816AeA27,
0xC5D55B32F0D317882c0aAa3b0A963d8CBe094C7c,
0xabe3E2EBd4784Dba6a80Fe341713Fc0532C219fb,
0x9C1c8a2F2AcCc64DAd1C6bd26F0B36aa65Fce219,
0x0A621d9bFf0E8d7978aD40282CBD28944Fef94df,
0xaBc8c7DD623eA76780f9aaA11f429B9602A6ae15,
0x0996Bb48A27E684414B151FfA0e902fB19543021,
0x4AA5C3269420f3D82a96B515a6C470d3fb7db3Fd,
0x31d226B0B94c3d13Cb067960f74e7f1e8aFd2EFD,
0x919aED549781C36882952751AD2A6c33527C0260,
0x4dBE58c21566Ebe2E48E009D4754461b606D990c,
0x3A7546280C77611191e06637adCD0250A2C719Aa,
0xC992BA0cE9aFdADfed23F1C3c654022e9E180686,
0xb49E763A51236602402b3E858Ee76c319F7c27dD,
0x83057f7bFb2d97eA7A9463F683db758aDCA71e8B,
0x251417D5F3315134ffC2295f80D7BfddDB698c14,
0xfB42cDc1EBa64d062Bf50644044aB5fE0E1282E8,
0x4Ab3190Dee3D3191df678A9e324f5D243E0a8B54,
0xd9344A213EAb0A9e8F15Dd3BBb2fDBdba35be368,
0x65d51D3554c6908A75712F1312C971281C8Dd79A,
0xB14Fa6697A7250f237291b56882331567cEFa3d4,
0x29d25f171EDfD17B5bB0b66628fB5286b7D29aea,
0xa3e371b5A01D8ce593A03f7248f42045d84A69F7,
0x13A6FCF17523451716E768fBCf23C150E81d3A24,
0x4eD3A923bD2DeEfaB72cd10E1152C2B5bbeF8506,
0xB4384bbEdDe91d50e257A364f8341B4E73Cb4231,
0xC907C13B7761575C403a6A79f04f9B3fAC6A6D03,
0x5ed20622a0037972644aF6B04E73e80A30C984d2,
0xf9BbD6b7a6224684f40A322232F7A011B96b873D,
0x03E6c622e80b728e93e721AfB51480cbcbc18A60,
0x2d1F22eAaeE458F7aFa58e29d71C746e2C326C27,
0x32E62E30F4c2e93B2D458c99d01e6A129B0da931,
0x87B6E64e98579fd7FB00bb9cEb76170faa8BACf7,
0x8A1182A263A55B4eB07dEEDC301815076739Bd53,
0x9bF8C690917b1a1D87a415a53636D3b0B9DFEBeA,
0xdF5f4DCA715d7F0CA82502E3DA3f3100d0A5fec0,
0x660e3533d3B089e48dEdc8b93A276a88258976a7,
0x5A01887De253D6142ee7db6530F6F749dfE83b76,
0x9f944958481BA262628957688DE6F4c3aAd9D805,
0x34cE42EeB1548d521cE52D4d3Fafe7ccD8629E68,
0xfc9b689b07776E3dcE406b8CDCFa4872AE3c9939,
0xBB0DF31b908053Ee001053E667EEf5b79d1a7E55,
0x1C0fbf1E1fD170010eca7016E6A9431Ca7c41D81,
0xDAc33C13D2631a89B966E259b4Dfce38E21F05b9
];
    address[] private whitelistedAddressesTwo =[0xB5F442aAA72d1a56A5431C459d94cC228de3b7eD,
0xA2EeC290592930350CC553Ef3a22Fa77CF9Bb058,
0x75950A08c633C9cfC14dF1F3E04058bB0DDacF85,
0xBa2e3b65A5E005cA8C8d3f36f4ba7Db9fE9F5948,
0xA94D609db541E1E21FD1179a63Ac41A651584EDb,
0xa8A5c10c39b6e0e42E09f288C1d122151550A722,
0x5Bf7f1552a8e2E02ab42969a267A30F927eFAd60,
0xc0c4ae2be965f660E109002d176D624B21c1CF13,
0x22d0a06717E2bA3A232c371C50CD55DbB7879CC7,
0x9044D452dC7A3506f363E6e8299c201ae344eA4A,
0x3DF9b94f7717ADC8F331E25cC967038a1e58ad53,
0xf5b529386e563cc25990E59afB5800f16d8F1189,
0xC14031baa3fC1E4eC64E12A4279126Be2157D76d,
0x051311C1D26443D6D87eb6A13A55ece32C97a7Ab,
0x1a2dE0E9dEdb22376626d5dda00f238C56cA4835,
0x3ac1C033c6ED5a4fb02014Cb984Aa3A055649E03,
0xFB06C94A6Da258E787AA9260E38832278080319c,
0x7a83B7EDB98956e7bC1aa107677354ea91608A38,
0xF1DD9a61234Bb81e28c42A8F76CC3D2f02F8FaB7,
0x61cC678Ac7AE5FD6A807480A7F229c1614fc6788,
0xd64539430357Bb87066e8e0AF5EbBF962CD9588b,
0xCB9DCD60980a74F27f381f93241A8b0Bf4B4A024,
0x72aa1F778dA7D960f6eA60D3c6Dcb9a0F76D0408,
0x8D5B11d815A6f35054b1B73e283FEA61b60737Be,
0xc1d423aE49fba66AA713610811d13e0BECf213c6,
0xA0a4A879B767EA2d6B23f7120F86f455c4E0A0cB,
0x35d6Cd57f4B6D561ad52f8aB5E9E10E6c159aa5C,
0x60f4Fbe6F706A67Bc560b4b7EecBb8f74193c658,
0x38BBe79305f908DD87a4417347ffE5C4A0Ea0Ec9,
0x2c120a611029B6E0d7d3827855592d3491191475,
0xAeE79B5D2a67A18Ca2Fe9a4E614D633f9dD7969E,
0x282C247EFC6408814A57ee1c2a0974042A54530e,
0xd8C84502264E9E0505e34AFe480bC3eCa62Fdd1b,
0x1851f43e431B74D1875FA966E26CB6a637790010,
0xd5965bA259aFf23080eacEECEf99dd80afc51B70,
0x123718c9F9B9c48048DA9A1134f9fCEa8E86a0D5,
0x8dD6ACDA4459de971a385B00DF177Cf41006a027,
0xe44659d918Ef53440C249bB5fA19ADbFfc057F82,
0xDD1132316Ac5cD0c1f358CbC06d930b8A674270B,
0xb4C006781B17a28fb68EB3B0D08c443E64A92cC1,
0x7134bdcDE26EC21021579175Cb9C60a4C93e97E6,
0x76F511623a40F35462Fda74847140bE5F1b23cE6,
0xfCBA7891121114F6FcF9cd2549bE4Ee7208454f4,
0x1fD6f1274AFBe571b66d19A8e8E1917a5e370E6e,
0xCd1fe3f3361E1A49b3CC415e7B2D0BF0C83d35ad,
0xFf2b935C5635A5aF779F8f040c4EEE6A1Fc772f2,
0xDdEF9F37Db1012D93E027A59752a1Eb084652498,
0x27dA21ab92aF4427f749F7aE282Cd3b9f29190Dd,
0x88684818e4Db145B3E4D8DF61192F96A0ca12F2F,
0x7C062b42720C5A16F67825476dEe09b3a2Dc13B1,
0x0C85E48e616fdd33720c00baE14668e833C82DEC,
0x119cE2117315b238c233c46a57Cd44d3F06B2fa9,
0x5f80f73d93895B89BDA6d47ab374a33ef0F62380,
0x2ae1f63142D9D81A65D882261A903ca4D06B5Bbe,
0x3C407D6c0Bca77456EC7AfeEbdaad81E8b23aB31,
0xC575cFaccbcC497C05936e70fCfC1a42D69F4CC0,
0x3b609939B50d10Cf822274C62Daa9c6053ce0F74,
0x6fC264D1AdacA3557d67d7A72a737F89dba13552,
0x6327191Ea83a372eC049633665FB679a233835dA,
0x6e04B6ac4bB1bd33E0490d126bCAd3c8e3C4f78D,
0x6A501447C443b9aA58E91eF4505B24FF25940fE1,
0x0445E3d6742F3Fd10a3781093e4f90bEFFaED31a,
0x8bA7f68C6d89b7D232ffcf5f58719996799Bb8a2,
0x657D736e04ccD506541f5A12044480eC93D2a308,
0x9A00f5f51EF96d1e8414D620c077Ead407c28AE2,
0x5ee9595c4912085B5A10CC884ee3D155920C35De,
0xF19d298D79Da876F93893b9df830F94865E28662,
0xa15Fab718b0cB25F82d61F58c014bD88a87EEED2,
0xF72fa7Cdf36b3F58Eae1da8929B1F67972504aF8,
0xB3Ec4C6C6B6aCa3DCe1ac400A9De37B8757e4B4C,
0x9452297493f5c9d65BEca47f1e6d5Aac13dED2f7,
0x6758608Ffc82E3c9F3520B94a0c77e8Ae2F6Bf7A,
0x581d40199937e70C5f5757547f230d790B00EB85,
0x02B3BF262Df4A97CE27383654C8858E73413F590,
0x6C6A9F4C1B227e9507B1f7680e7B5734a0529802,
0x82Ab0c87270Cc177B73b0d3e5cFD48a8f8FFD10d,
0x4Dc68B875279eFb0D0c1c3292d79848AF402c0FA,
0xf3F2F4c0c22F97A295091A4BE7f18a9F797E30Ae,
0x764394B7cde04489f436Ac6E1F272Aae62fA65a1,
0x251Fb2Fd729707dF6aF0C709681EFD25371cE8A9,
0x04D2CB63c907421E5FC215d4064A31f41156f4B9,
0x6c07aE8e5213115996867427B5DB8eDfc722900C,
0xC641b1ff7aD7fAd7D37ff9B2854DcBCd167212E7,
0x69512b193a2Fe70073b4c59cB9E27199B921DAc6,
0x78C2493597D3e767279e03F0d3Fea8E126329dE0,
0xcc811e52f35e758A24e0FEaA2b7439Bc21Ee4d21,
0x31C9BcE1020Ac0880E285C36CE8a89693a9F13A4,
0x4Ae2C32f298Db0dA192Cb225863bB797BbD9d1fb,
0xFb2F62d691CA8c9dD07cd859aa0Ac2930d558F66,
0xD6474B0b45834646FB3BD7e5F9c7096d97b66676,
0xC5cE03F7A4de6c44198C5b84549c45F4F1af8d87,
0x42D358F92Bd5d96D96c810625A5a13A483D149D7,
0x17C30c09Ab306e10a2e9999e89BB1883C9835E5a,
0x761225B1800af40fa73Ca615bb588cF63dD85BC7,
0x47443460C613C9323b1bF54D42B2903fAFc11664,
0x7179B654D852a93169db56dcDfBCea19Be1406Ca,
0xccc105058D1528D3E3bC3490713da97c37377976,
0x9bEDC4CE02dAdd1Eaac86362Dae44B909bFb24C4,
0xe6a9b136C17745573D43569c22aBBde34f1512a9,
0xe7552c4D4B655a100048689a32C41E92019217E9,
0x519114e1f68Dd9aa14AE60a14519F4698cC5Ef4e,
0x6F814B38fE1b1E3B6d7b323b66B500b97513CBb0,
0x1c24732509eFd844B5F398C4a3c6e255744FDE0f,
0x24e8cBCEce8eC14120Ae18d168Ceea059c6a4d3a,
0xfaC8EE3E18a18d9AE90831B1F60d513A6839D7EB,
0x271010FeEaC18Bc0C1f9082533A96EaCa2e30201,
0x0A8A034C161d9Cda052f40Eff0b24D6A6a05fdC9,
0xB1dc395a592856F7B5A9ae53B98aF8a64BDf6c85,
0x5fFFf27BCCD898a8B88D5FA431600bb6c7b94117,
0x92D3B546902f7ab1d7A595Dc3CF9F4C834C02fD4,
0x28012C04EC61d20Bcf6612F9313b4cC7089716Dc,
0x37a7679B309f62aE78C41092A60a0E7c994d7400,
0x22443d3ec9aF561C49d8389B9CB06069b7b3d304,
0x80ea006315A1c8278419BED1951c4fC047581641,
0xE30363483d911f59176B83c976637b5A8FBdC9cD,
0x834792b23B13035b8c38d8F37c9486099d5c2971,
0x561eE7C9fCb2EFEEa5B7Bf3C55deA36B15C07Bdf,
0x200404D036525Ce6F2056ce4c4cF8E25CC50B6d6,
0xD3De7FD8BF1667D97Bb9aaE7bA738EfDf34641dC,
0xDE7BC955c03aD2fc66955De7E4E84528260923bC,
0xC622b5FB8046950A4E56E98FE2b2a0E97340B82C,
0xBC5353f7a98412dC4583a8DBEFF5da3267aA264F,
0x6D3b5F1191Da580f88D40B911D471991199836FE,
0xA46666810794069Cc6eE3CEDb1AA62904dB24553,
0x1D08f4F40cC8Ae7eA0B37115B2b48620a43Bf403,
0xf18977B29C1F87F9871B8a7a5aF1e4059e39b9FE,
0x86170f6B17B8bC41C0C06c8aa0C2d7754A3605C1,
0x5a18a5a696c7f1b1D2c097D05d5e479D8f3eaEb6,
0x1203D4615D87E159Df82401C7acC89b59b5C64F6,
0xd1fEC8Da7edcfd651fBcBdE789aA27b38055F102,
0x4C843a3D077C353533b81aD2435268C8611fDF16,
0xDB8bc40369dACb601C21B2dc978F4988F51101cb,
0xA75747f401d938593b8124e6eb08e910c16B20Da,
0x37e0ec7fD9568a45dE59200aE69F01F8A69D59dF,
0xB5457E56C5154536A6ABEe2654Cfa32efCAF5956,
0x8661A1D4199A7b5372A488F6FaF590F179F98Dca,
0x9896021a2D4E9124BE5827a2792d02189f26D798,
0x0ab865AF5ab3c0854AfF619907c72A04E9c70DD7,
0x16CDE6ef425fdF7997525E38C31b2FC2Ad0b44bb,
0xCd33cfb6337032de97b74E1CBBFad835a9a4B9ce,
0xe18Ba83765406fcAE655f57dE36c40B64C6d2c2e,
0x845C9f3E5F63B739b27E92f50cAf55E695AFc902,
0xc12cf671656eb6E835B31A907A33a4a00AF00165,
0x93C3228B964b37947a4c7dA3E9FFf513dED3fF49,
0x133B2f8476af944c434454695313082215d5c4b3,
0x32474092852f1DA9f95A96fAF0FF3D254dfb1F91,
0x3612397C7bED3d2E9337d46827e869A7B13eC3eb,
0x760228f299677B1023b02Cbb1B9cf7147e077174,
0x9b57E1B617343F29b6386c00d14e5189e38EdA71,
0x0825Cf6a4115b770b4fd65373ff10ed51680E5Ee,
0xa6bC0614Ae72d8189f53700e5B9b62D23bF115bC,
0x8C41F8BB5b83De10AC8fbcd3CfC6ead69f84aD87,
0xA21f6bC5BC20f221f16f85FfCA8eDF0Ec6637ecE,
0x81A20A1c885a574a01d77b9847AA4f1D99EcDd3a,
0xd17Ab43D8f8E55eaB25725A5988Cea80d172102A,
0xF7789a8815FF679576943c8b57FA136C9dfF0754,
0x69Dfe997A1185f22B0B0a786247afcf36b670817,
0xE285834728BD7259791c6E6f63Ed0bAbA36Fa151,
0xF728e65fF04a2185ac5508dC83a6f3634Af2ad4B,
0xA84AefA8CF9377Fd80D9d0ccCC89A13fc308E206,
0xA57394Fb12D0aB830E80dCC55B45114629F78b30,
0xB00c93AB586Deed458864f262B0493194B02Ba84,
0xebe8f27c2DE46c1DF567990c9720Dc169AA86300,
0x981a1E7A9C337600c414889163117b1CF2De48Aa,
0xbD7E7FDF65633c54f13e751b5cb0fdf561237B70,
0x2fb975cd9Bd2Af43F2f7b7C03B63d29d9C83FB37,
0x34509b079D54A602998A289A1FF3a27601a46A4A,
0x7C043d5C962cfaf39A84367731dCd804eb03bA08,
0x6678eB423E5F954A8d7ab47Fa3373F9F743C1686,
0x44dA0Db572bD33d689e4D8Fab8b5D93192794016,
0x5a3d6C4642E7F575030a6e9B41Bcc60719AF2A18
];

    constructor() ERC721("FASHIONCRYPTO_Genesis", "FCG")  
     WithLimitedSupply(9999)
    {
    }

    function mint(uint256[] memory tokenId) ensureAvailability public payable     {
        require(blnSale == true, "Not Sales Period.");
        require(tokenId.length <= batchMintMaxAmount, "Maximum of tokens to buy at once exceeded.");
        require(msg.value == cost * tokenId.length, "Price must be equal to listing price.");
        
        if(blnWhitelisted == true){
            bool isWhiteListedOne =isAddressWhitelistedOne(msg.sender);
            bool isWhiteListedTwo =isAddressWhitelistedTwo(msg.sender);
            require(isWhiteListedOne || isWhiteListedTwo, "Not on the whitelist! Cannot buy during PreSales Period.");

            if(isWhiteListedOne){
                require(balanceOf(msg.sender) + tokenId.length <= whiteOneMax, "Max mint per address exceeded!");
            }else if(isWhiteListedTwo){
                require(balanceOf(msg.sender) + tokenId.length <= whiteTwoMax, "Max mint per address exceeded!");
            }

            for(uint256 i=0; i <= tokenId.length-1; i++){
                if (tokenId[i] >= startIndex && tokenId[i] <= endIndex){
                    _safeMint(msg.sender, tokenId[i]);
                    usedTokenId.push(tokenId[i]);
                    super.nextToken();
                }
            }
        }else{
            for(uint256 i=0; i <= tokenId.length-1; i++){
                if (tokenId[i] >= startIndex && tokenId[i] <= endIndex){
                    _safeMint(msg.sender, tokenId[i]);
                    usedTokenId.push(tokenId[i]);
                    super.nextToken();
                }
            }
        }
    }

    function mintOwner(uint256[] memory tokenId) ensureAvailability public  {
        require(msg.sender == ownerAddress, "Only Owner can use this method.");

        for(uint256 i=0; i <= tokenId.length-1; i++){
            _safeMint(msg.sender, tokenId[i]);
            usedTokenId.push(tokenId[i]);
            super.nextToken();
        }
    }

    function isAddressWhitelistedOne(address _user) private view returns (bool) {
        uint i = 0;
        while (i < whitelistedAddressesOne.length) {
            if(whitelistedAddressesOne[i] == _user) {
                return true;
            }
        i++;
        }
        return false;
    }

    function isAddressWhitelistedTwo(address _user) private view returns (bool) {
        uint i = 0;
        while (i < whitelistedAddressesTwo.length) {
            if(whitelistedAddressesTwo[i] == _user) {
                return true;
            }
        i++;
        }
        return false;
    }


    //internal
    function _baseURI() internal view virtual override returns (string memory) {
        return baseURI;
    }

    function withdraw() public payable onlyOwner {
        require(payable(msg.sender).send(address(this).balance));
    }

    function updateCost(uint256 costParam) public onlyOwner {
        cost = costParam;
    }

    function updatebaseURI(string memory baseURIParam) public onlyOwner {
        baseURI = baseURIParam;
    }

    function updateSale(bool saleParam) public onlyOwner {
        blnSale = saleParam;
    }

    function updateWhitelisted(bool whitelistedParam) public onlyOwner {
        blnWhitelisted = whitelistedParam;
    }

    function updateStartindex(uint256 startIndexParam) public onlyOwner {
        startIndex = startIndexParam;
    }

    function updateEndindex(uint256 endIndexParam) public onlyOwner {
        endIndex = endIndexParam;
    }

    function updateBatchMintMaxAmount(uint8 maxParam) public onlyOwner {
        batchMintMaxAmount = maxParam;
    }

    function updateWhiteOneMax(uint8 whiteOneParam) public onlyOwner {
        whiteOneMax = whiteOneParam;
    }

    function updateWhiteTwoMax(uint8 whiteTwoParam) public onlyOwner {
        whiteTwoMax = whiteTwoParam;
    }

    //function updatepreSaleStartTime(uint256 preSaleStartTimeParam) public onlyOwner {
    //    preSaleStartTime = preSaleStartTimeParam;
    //}

    //function updatepreSaleEndTime(uint256 preSaleEndTimeParam) public onlyOwner {
    //    preSaleEndTime = preSaleEndTimeParam;
    //}
	
    function updatewhitelistedAddressesOne(address addressParam) public onlyOwner {
        whitelistedAddressesOne.push(addressParam);
    }

    function updatewhitelistedAddressesTwo(address addressParam) public onlyOwner {
        whitelistedAddressesTwo.push(addressParam);
    }

    function updateownerAddress(address addressParam) public onlyOwner {
        ownerAddress = addressParam;
    }
	
    function fetchwhitelistedAddressesOne() public view returns (address[] memory) {
        return whitelistedAddressesOne;
    }

    function fetchwhitelistedAddressesTwo() public view returns (address[] memory) {
        return whitelistedAddressesTwo;
    }

    function fetchUsedTokenId() public view returns (uint256[] memory) {
        return usedTokenId;
    }

    function tokenURI(uint256 tokenId) public view virtual override
        returns (string memory){
            require(_exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
            );
        string memory currentBaseURI = _baseURI();
        return bytes(currentBaseURI).length >0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), baseExtension)) : "";
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"SupplyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"availableTokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"batchMintMaxAmount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blnSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blnWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fetchUsedTokenId","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fetchwhitelistedAddressesOne","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fetchwhitelistedAddressesTwo","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"mintOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxParam","type":"uint8"}],"name":"updateBatchMintMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"costParam","type":"uint256"}],"name":"updateCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"endIndexParam","type":"uint256"}],"name":"updateEndindex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"saleParam","type":"bool"}],"name":"updateSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startIndexParam","type":"uint256"}],"name":"updateStartindex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"whiteOneParam","type":"uint8"}],"name":"updateWhiteOneMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"whiteTwoParam","type":"uint8"}],"name":"updateWhiteTwoMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"whitelistedParam","type":"bool"}],"name":"updateWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURIParam","type":"string"}],"name":"updatebaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressParam","type":"address"}],"name":"updateownerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressParam","type":"address"}],"name":"updatewhitelistedAddressesOne","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressParam","type":"address"}],"name":"updatewhitelistedAddressesTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whiteOneMax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whiteTwoMax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

60806040526040518060600160405280602b81526020016200a3c5602b9139600990805190602001906200003592919062005265565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a90805190602001906200008392919062005265565b5066b1a2bc2ec50000600b5573cff635d73f4cd7c4005cfc3fe7cc01bb60f42fdd600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60146101000a81548160ff0219169083151502179055506001600c60156101000a81548160ff0219169083151502179055506032600d5560fa600e556005601060006101000a81548160ff021916908360ff160217905550600a601060016101000a81548160ff021916908360ff1602179055506001601060026101000a81548160ff021916908360ff16021790555060405180610ec0016040528073cff635d73f4cd7c4005cfc3fe7cc01bb60f42fdd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e03895910e1190d846aed3beb317a84e1ff892d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734e48783f618ecb06ddfb07d36c49119c2b82f0f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c20873d40e6f75bf6c39f3bb48bfc1847f335de273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173aa3fcbf8ac0b093c20978ee025e25d95943b7a2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735b2e7ecb43e61b30a7d0b3b698c430b204c22dbd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ba8b0ea93f9c7cf473e7f99e3bd52afd37fa55ef73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173bb209d8f0497e7b64813a7f91960a88d182331e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001737b56deb150df9dd428c1770ffdf334468f92a44473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173badf8a6ba6ebf14e7690cb95782f5e492cc47d7573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732224bc00ead1d90365d860ed0c6a21363da4078473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738872485d20694495aeccb098692270c3ee41993573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730ff745e8df3bcef82d59a8b8fb9ce8c54253413673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017362017eb3cbc67f977a4bf962cf2dc49c537f6cca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f133ee684d71aa470d7b3ef2868cafaba53e473e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173df2cd7b522aaef6dc418cf83cc1e815c1e2bf8b073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732e2489628cd9f1b98dfb83bb57da2d0c1010901973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739119cc7143250c43b82a02f63bacf7bdea93066973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ba87461c49666f72afc1d2d805af6deb2e193a7073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173575848a2a2fbf466d31a42820c90f7a71950192d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732a1d69a0830f6094ec318d93a8779db87787173673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173500a9d4b9463da8ef6885b13a66c32916a68af7a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017304606154da2844fa6147f54e3a035651ceb2b19773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b6c5fec131ac371456b92b406c25948a83acabc173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731cfe6cfd5dbefd1a5b09524c949e4c4a606972da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732e8b6a975f7b0edcfe78a2e377329b6c575dc50f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173875b1a1dd84edf1012fa0d7a0c997425fda12eff73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173138b5c84ba91ea4b95739a527e340489fef2fe2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001733e0034b5d25bdb668eec68e2643a2dfcfe78676673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735de51b7944c766b1cadce299463059bdec38c1bf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017323ebd54fd65825e06a6e5aacc1a0b523bfeb748e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c30d117d16f6eb743bb0019e7863671919368cd173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731557299331aae614896e4fdc82d882c62fb6230273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173108c04d9145c93fe9e3b07ad27698edfd5e6e49873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734f355a9c74bd22a90fa32de4cd129da1999520aa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736cb9c2c61908658e3c9875c864b5e2cab2f21a4c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e8b7a54ac34d1ba55fd0e92a79136e7a225c245173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f81ef872db0ff70bdd3d7b729ff0440e72b33b1873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732efe4fa1d55880879800638021632f6b9c6f088c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c88f6a403d1f2ff76c6ab4a71ece88aa6321a40e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d45d61a7762ed1236b275cada5f1171d74e008ab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731da10f21f60920d940506939148cac505315a70773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f4a33929872b87bb67ddcac38548c808dd38f2ae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173545ff76f9ee769b144cb79146c1069cfa0ef2a9f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173da4486a591b4543562713ce1413f34b44d3af45a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173bd3b7ccd7f58c40dd1150d3487f854f468357d4c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173869a83c3d912318fb8fcac6adaddaa50c2f373f673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fef634e9adc613871de7fe764c38101d8fe85d6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017304f7244581360ae45ee6d136dd9ec64926c9386c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173012bf606c1f1ab362a62dbc3e3d3e937027e198d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b18ccecd1fbebc7c3e30cc70983720d9d672e8ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732834e08f4eecd7b63a6fefb8ebaadb3fdd27760273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e944b8ebbde99a4d29ba3fac1931435352d0795673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a0dbd3771a4fb21b517bbea198bc335a44601a4e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732ccc19e242e2f4c2541dad341be3792ac0eed01073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017316a20ac1719e1f68d663de5504fe58fe9b1ed75873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a1ce1e761695fcdb0288d94d3bc08e825064c0a373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017367dc869ef404607977833b7810310ba1466324b473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017373eb4c1dadb5cee393da1e80b9a7098fa5afd43773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730955c6965df31558c5d2a7a0f66631c16dd4298073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173be19aa80959bc7c85970aee306ecef2cc03844e273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017387d7c97b5a69c26c5cbc99b1b27937edf5cca10d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735ad430f7eeb9af006001fd21f9ab27e1b994b50673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173513db322a397701bf624b517b00291f82b66588473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173520f3afd4d156e71fc26f330aca6f89e083ff52473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f24c2c1a7d479f6b50d6c2065da97366ec9fe39f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e11394f5f5bd7244e73a253b2081ba5baa7d243273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f5a9b8ea9fb71ab2da81a866d6877b4dd717f9d173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730a1d634e51809b93ae943c9faf6027f117315d7e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173eaf63e1917f0b67b8db58513115764b96bf9032073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d6fe2ac29e9a8ba1ed61b7689bfa864b31e8f3e673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e2338c6f7148b792ce76a56f6ff22afaebb9c4ea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ef64c2ac694185dbe61bc74e1505f28c86ab3ac073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173669f900dea5ca376d9a7b6cedb7d1ec744a2410273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730458f111ca216ada7bb69bd673ff18c2816aea2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c5d55b32f0d317882c0aaa3b0a963d8cbe094c7c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173abe3e2ebd4784dba6a80fe341713fc0532c219fb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739c1c8a2f2accc64dad1c6bd26f0b36aa65fce21973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730a621d9bff0e8d7978ad40282cbd28944fef94df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173abc8c7dd623ea76780f9aaa11f429b9602a6ae1573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730996bb48a27e684414b151ffa0e902fb1954302173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734aa5c3269420f3d82a96b515a6c470d3fb7db3fd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017331d226b0b94c3d13cb067960f74e7f1e8afd2efd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173919aed549781c36882952751ad2a6c33527c026073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734dbe58c21566ebe2e48e009d4754461b606d990c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001733a7546280c77611191e06637adcd0250a2c719aa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c992ba0ce9afdadfed23f1c3c654022e9e18068673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b49e763a51236602402b3e858ee76c319f7c27dd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017383057f7bfb2d97ea7a9463f683db758adca71e8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173251417d5f3315134ffc2295f80d7bfdddb698c1473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fb42cdc1eba64d062bf50644044ab5fe0e1282e873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734ab3190dee3d3191df678a9e324f5d243e0a8b5473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d9344a213eab0a9e8f15dd3bbb2fdbdba35be36873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017365d51d3554c6908a75712f1312c971281c8dd79a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b14fa6697a7250f237291b56882331567cefa3d473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017329d25f171edfd17b5bb0b66628fb5286b7d29aea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a3e371b5a01d8ce593a03f7248f42045d84a69f773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017313a6fcf17523451716e768fbcf23c150e81d3a2473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734ed3a923bd2deefab72cd10e1152c2b5bbef850673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b4384bbedde91d50e257a364f8341b4e73cb423173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c907c13b7761575c403a6a79f04f9b3fac6a6d0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735ed20622a0037972644af6b04e73e80a30c984d273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f9bbd6b7a6224684f40a322232f7a011b96b873d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017303e6c622e80b728e93e721afb51480cbcbc18a6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732d1f22eaaee458f7afa58e29d71c746e2c326c2773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017332e62e30f4c2e93b2d458c99d01e6a129b0da93173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017387b6e64e98579fd7fb00bb9ceb76170faa8bacf773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738a1182a263a55b4eb07deedc301815076739bd5373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739bf8c690917b1a1d87a415a53636d3b0b9dfebea73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173df5f4dca715d7f0ca82502e3da3f3100d0a5fec073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173660e3533d3b089e48dedc8b93a276a88258976a773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735a01887de253d6142ee7db6530f6f749dfe83b7673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739f944958481ba262628957688de6f4c3aad9d80573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017334ce42eeb1548d521ce52d4d3fafe7ccd8629e6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fc9b689b07776e3dce406b8cdcfa4872ae3c993973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173bb0df31b908053ee001053e667eef5b79d1a7e5573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731c0fbf1e1fd170010eca7016e6a9431ca7c41d8173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173dac33c13d2631a89b966e259b4dfce38e21f05b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506011906076620021d8929190620052f6565b5060405180611560016040528073b5f442aaa72d1a56a5431c459d94cc228de3b7ed73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a2eec290592930350cc553ef3a22fa77cf9bb05873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017375950a08c633c9cfc14df1f3e04058bb0ddacf8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ba2e3b65a5e005ca8c8d3f36f4ba7db9fe9f594873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a94d609db541e1e21fd1179a63ac41a651584edb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a8a5c10c39b6e0e42e09f288c1d122151550a72273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735bf7f1552a8e2e02ab42969a267a30f927efad6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c0c4ae2be965f660e109002d176d624b21c1cf1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017322d0a06717e2ba3a232c371c50cd55dbb7879cc773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739044d452dc7a3506f363e6e8299c201ae344ea4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001733df9b94f7717adc8f331e25cc967038a1e58ad5373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f5b529386e563cc25990e59afb5800f16d8f118973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c14031baa3fc1e4ec64e12a4279126be2157d76d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173051311c1d26443d6d87eb6a13a55ece32c97a7ab73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731a2de0e9dedb22376626d5dda00f238c56ca483573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001733ac1c033c6ed5a4fb02014cb984aa3a055649e0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fb06c94a6da258e787aa9260e38832278080319c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001737a83b7edb98956e7bc1aa107677354ea91608a3873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f1dd9a61234bb81e28c42a8f76cc3d2f02f8fab773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017361cc678ac7ae5fd6a807480a7f229c1614fc678873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d64539430357bb87066e8e0af5ebbf962cd9588b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173cb9dcd60980a74f27f381f93241a8b0bf4b4a02473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017372aa1f778da7d960f6ea60d3c6dcb9a0f76d040873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738d5b11d815a6f35054b1b73e283fea61b60737be73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c1d423ae49fba66aa713610811d13e0becf213c673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a0a4a879b767ea2d6b23f7120f86f455c4e0a0cb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017335d6cd57f4b6d561ad52f8ab5e9e10e6c159aa5c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017360f4fbe6f706a67bc560b4b7eecbb8f74193c65873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017338bbe79305f908dd87a4417347ffe5c4a0ea0ec973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732c120a611029b6e0d7d3827855592d349119147573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173aee79b5d2a67a18ca2fe9a4e614d633f9dd7969e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173282c247efc6408814a57ee1c2a0974042a54530e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d8c84502264e9e0505e34afe480bc3eca62fdd1b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731851f43e431b74d1875fa966e26cb6a63779001073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d5965ba259aff23080eaceecef99dd80afc51b7073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173123718c9f9b9c48048da9a1134f9fcea8e86a0d573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738dd6acda4459de971a385b00df177cf41006a02773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e44659d918ef53440c249bb5fa19adbffc057f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173dd1132316ac5cd0c1f358cbc06d930b8a674270b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b4c006781b17a28fb68eb3b0d08c443e64a92cc173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001737134bdcde26ec21021579175cb9c60a4c93e97e673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017376f511623a40f35462fda74847140be5f1b23ce673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fcba7891121114f6fcf9cd2549be4ee7208454f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731fd6f1274afbe571b66d19a8e8e1917a5e370e6e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173cd1fe3f3361e1a49b3cc415e7b2d0bf0c83d35ad73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ff2b935c5635a5af779f8f040c4eee6a1fc772f273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ddef9f37db1012d93e027a59752a1eb08465249873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017327da21ab92af4427f749f7ae282cd3b9f29190dd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017388684818e4db145b3e4d8df61192f96a0ca12f2f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001737c062b42720c5a16f67825476dee09b3a2dc13b173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730c85e48e616fdd33720c00bae14668e833c82dec73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173119ce2117315b238c233c46a57cd44d3f06b2fa973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735f80f73d93895b89bda6d47ab374a33ef0f6238073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732ae1f63142d9d81a65d882261a903ca4d06b5bbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001733c407d6c0bca77456ec7afeebdaad81e8b23ab3173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c575cfaccbcc497c05936e70fcfc1a42d69f4cc073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001733b609939b50d10cf822274c62daa9c6053ce0f7473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736fc264d1adaca3557d67d7a72a737f89dba1355273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736327191ea83a372ec049633665fb679a233835da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736e04b6ac4bb1bd33e0490d126bcad3c8e3c4f78d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736a501447c443b9aa58e91ef4505b24ff25940fe173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730445e3d6742f3fd10a3781093e4f90beffaed31a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738ba7f68c6d89b7d232ffcf5f58719996799bb8a273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173657d736e04ccd506541f5a12044480ec93d2a30873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739a00f5f51ef96d1e8414d620c077ead407c28ae273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735ee9595c4912085b5a10cc884ee3d155920c35de73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f19d298d79da876f93893b9df830f94865e2866273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a15fab718b0cb25f82d61f58c014bd88a87eeed273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f72fa7cdf36b3f58eae1da8929b1f67972504af873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b3ec4c6c6b6aca3dce1ac400a9de37b8757e4b4c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739452297493f5c9d65beca47f1e6d5aac13ded2f773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736758608ffc82e3c9f3520b94a0c77e8ae2f6bf7a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173581d40199937e70c5f5757547f230d790b00eb8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017302b3bf262df4a97ce27383654c8858e73413f59073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736c6a9f4c1b227e9507b1f7680e7b5734a052980273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017382ab0c87270cc177b73b0d3e5cfd48a8f8ffd10d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734dc68b875279efb0d0c1c3292d79848af402c0fa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f3f2f4c0c22f97a295091a4be7f18a9f797e30ae73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173764394b7cde04489f436ac6e1f272aae62fa65a173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173251fb2fd729707df6af0c709681efd25371ce8a973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017304d2cb63c907421e5fc215d4064a31f41156f4b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736c07ae8e5213115996867427b5db8edfc722900c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c641b1ff7ad7fad7d37ff9b2854dcbcd167212e773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017369512b193a2fe70073b4c59cb9e27199b921dac673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017378c2493597d3e767279e03f0d3fea8e126329de073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173cc811e52f35e758a24e0feaa2b7439bc21ee4d2173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017331c9bce1020ac0880e285c36ce8a89693a9f13a473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734ae2c32f298db0da192cb225863bb797bbd9d1fb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fb2f62d691ca8c9dd07cd859aa0ac2930d558f6673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d6474b0b45834646fb3bd7e5f9c7096d97b6667673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c5ce03f7a4de6c44198c5b84549c45f4f1af8d8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017342d358f92bd5d96d96c810625a5a13a483d149d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017317c30c09ab306e10a2e9999e89bb1883c9835e5a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173761225b1800af40fa73ca615bb588cf63dd85bc773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017347443460c613c9323b1bf54d42b2903fafc1166473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001737179b654d852a93169db56dcdfbcea19be1406ca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ccc105058d1528d3e3bc3490713da97c3737797673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739bedc4ce02dadd1eaac86362dae44b909bfb24c473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e6a9b136c17745573d43569c22abbde34f1512a973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e7552c4d4b655a100048689a32c41e92019217e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173519114e1f68dd9aa14ae60a14519f4698cc5ef4e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736f814b38fe1b1e3b6d7b323b66b500b97513cbb073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731c24732509efd844b5f398c4a3c6e255744fde0f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017324e8cbcece8ec14120ae18d168ceea059c6a4d3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173fac8ee3e18a18d9ae90831b1f60d513a6839d7eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173271010feeac18bc0c1f9082533a96eaca2e3020173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730a8a034c161d9cda052f40eff0b24d6a6a05fdc973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b1dc395a592856f7b5a9ae53b98af8a64bdf6c8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735ffff27bccd898a8b88d5fa431600bb6c7b9411773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017392d3b546902f7ab1d7a595dc3cf9f4c834c02fd473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017328012c04ec61d20bcf6612f9313b4cc7089716dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017337a7679b309f62ae78c41092a60a0e7c994d740073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017322443d3ec9af561c49d8389b9cb06069b7b3d30473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017380ea006315a1c8278419bed1951c4fc04758164173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e30363483d911f59176b83c976637b5a8fbdc9cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173834792b23b13035b8c38d8f37c9486099d5c297173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173561ee7c9fcb2efeea5b7bf3c55dea36b15c07bdf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173200404d036525ce6f2056ce4c4cf8e25cc50b6d673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d3de7fd8bf1667d97bb9aae7ba738efdf34641dc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173de7bc955c03ad2fc66955de7e4e84528260923bc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c622b5fb8046950a4e56e98fe2b2a0e97340b82c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173bc5353f7a98412dc4583a8dbeff5da3267aa264f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736d3b5f1191da580f88d40b911d471991199836fe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a46666810794069cc6ee3cedb1aa62904db2455373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731d08f4f40cc8ae7ea0b37115b2b48620a43bf40373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f18977b29c1f87f9871b8a7a5af1e4059e39b9fe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017386170f6b17b8bc41c0c06c8aa0c2d7754a3605c173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735a18a5a696c7f1b1d2c097d05d5e479d8f3eaeb673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001731203d4615d87e159df82401c7acc89b59b5c64f673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d1fec8da7edcfd651fbcbde789aa27b38055f10273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001734c843a3d077c353533b81ad2435268c8611fdf1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173db8bc40369dacb601c21b2dc978f4988f51101cb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a75747f401d938593b8124e6eb08e910c16b20da73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017337e0ec7fd9568a45de59200ae69f01f8a69d59df73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b5457e56c5154536a6abee2654cfa32efcaf595673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738661a1d4199a7b5372a488f6faf590f179f98dca73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739896021a2d4e9124be5827a2792d02189f26d79873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730ab865af5ab3c0854aff619907c72a04e9c70dd773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017316cde6ef425fdf7997525e38c31b2fc2ad0b44bb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173cd33cfb6337032de97b74e1cbbfad835a9a4b9ce73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e18ba83765406fcae655f57de36c40b64c6d2c2e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173845c9f3e5f63b739b27e92f50caf55e695afc90273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173c12cf671656eb6e835b31a907a33a4a00af0016573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017393c3228b964b37947a4c7da3e9fff513ded3ff4973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173133b2f8476af944c434454695313082215d5c4b373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017332474092852f1da9f95a96faf0ff3d254dfb1f9173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001733612397c7bed3d2e9337d46827e869a7b13ec3eb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173760228f299677b1023b02cbb1b9cf7147e07717473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001739b57e1b617343f29b6386c00d14e5189e38eda7173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001730825cf6a4115b770b4fd65373ff10ed51680e5ee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a6bc0614ae72d8189f53700e5b9b62d23bf115bc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001738c41f8bb5b83de10ac8fbcd3cfc6ead69f84ad8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a21f6bc5bc20f221f16f85ffca8edf0ec6637ece73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017381a20a1c885a574a01d77b9847aa4f1d99ecdd3a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173d17ab43d8f8e55eab25725a5988cea80d172102a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f7789a8815ff679576943c8b57fa136c9dff075473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017369dfe997a1185f22b0b0a786247afcf36b67081773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173e285834728bd7259791c6e6f63ed0baba36fa15173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173f728e65ff04a2185ac5508dc83a6f3634af2ad4b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a84aefa8cf9377fd80d9d0cccc89a13fc308e20673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173a57394fb12d0ab830e80dcc55b45114629f78b3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173b00c93ab586deed458864f262b0493194b02ba8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173ebe8f27c2de46c1df567990c9720dc169aa8630073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173981a1e7a9c337600c414889163117b1cf2de48aa73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200173bd7e7fdf65633c54f13e751b5cb0fdf561237b7073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001732fb975cd9bd2af43f2f7b7c03b63d29d9c83fb3773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017334509b079d54a602998a289a1ff3a27601a46a4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001737c043d5c962cfaf39a84367731dcd804eb03ba0873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736678eb423e5f954a8d7ab47fa3373f9f743c168673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017344da0db572bd33d689e4d8fab8b5d9319279401673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001735a3d6c4642e7f575030a6e9b41bcc60719af2a1873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525060129060ab620050b792919062005385565b50348015620050c557600080fd5b5061270f6040518060400160405280601581526020017f46415348494f4e43525950544f5f47656e6573697300000000000000000000008152506040518060400160405280600381526020017f464347000000000000000000000000000000000000000000000000000000000081525081600090805190602001906200514d92919062005265565b5080600190805190602001906200516692919062005265565b505050620051896200517d6200519760201b60201c565b6200519f60201b60201c565b806008819055505062005498565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620052739062005433565b90600052602060002090601f016020900481019282620052975760008555620052e3565b82601f10620052b257805160ff1916838001178555620052e3565b82800160010185558215620052e3579182015b82811115620052e2578251825591602001919060010190620052c5565b5b509050620052f2919062005414565b5090565b82805482825590600052602060002090810192821562005372579160200282015b82811115620053715782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062005317565b5b50905062005381919062005414565b5090565b82805482825590600052602060002090810192821562005401579160200282015b82811115620054005782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620053a6565b5b50905062005410919062005414565b5090565b5b808211156200542f57600081600090555060010162005415565b5090565b600060028204905060018216806200544c57607f821691505b6020821081141562005463576200546262005469565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614f1d80620054a86000396000f3fe6080604052600436106102885760003560e01c806370a082311161015a578063a22cb465116100c1578063e14ca3531161007a578063e14ca35314610975578063e985e9c5146109a0578063f0194842146109dd578063f2fde38b14610a06578063f41d896e14610a2f578063f8e93ef914610a5857610288565b8063a22cb46514610869578063a34784d914610892578063ab7f0e2c146108bb578063abbd034b146108e6578063b88d4fde1461090f578063c87b56dd1461093857610288565b80637a90e9e8116101135780637a90e9e8146107695780637ada5c8c146107925780638da5cb5b146107bd5780638f84aa09146107e857806395d89b41146108135780639f181b5e1461083e57610288565b806370a082311461066b578063715018a6146106a857806372557c9a146106bf57806379ead3d0146106e85780637a279227146107135780637a431c8f1461073e57610288565b80633ccfd60b116101fe5780635ac293c9116101b75780635ac293c91461055d578063601dd7d91461058857806362fa8d42146105b15780636352211e146105da5780636c0360eb146106175780636e5672111461064257610288565b80633ccfd60b146104805780633d885ad21461048a5780633e0e828b146104b557806342842e0e146104e057806352b30184146105095780635806c8511461053257610288565b806313faede61161025057806313faede61461038657806318160ddd146103b157806323b872dd146103dc57806323c5a0881461040557806323efeb711461042e5780632be384101461045757610288565b806301cf82f41461028d57806301ffc9a7146102b857806306fdde03146102f5578063081812fc14610320578063095ea7b31461035d575b600080fd5b34801561029957600080fd5b506102a2610a74565b6040516102af9190613fad565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da919061388b565b610b02565b6040516102ec9190613ff1565b60405180910390f35b34801561030157600080fd5b5061030a610be4565b604051610317919061400c565b60405180910390f35b34801561032c57600080fd5b506103476004803603810190610342919061392e565b610c76565b6040516103549190613f46565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f91906137d5565b610cfb565b005b34801561039257600080fd5b5061039b610e13565b6040516103a8919061430e565b60405180910390f35b3480156103bd57600080fd5b506103c6610e19565b6040516103d3919061430e565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe91906136bf565b610e23565b005b34801561041157600080fd5b5061042c6004803603810190610427919061392e565b610e83565b005b34801561043a57600080fd5b5061045560048036038101906104509190613652565b610f09565b005b34801561046357600080fd5b5061047e600480360381019061047991906138e5565b610feb565b005b610488611081565b005b34801561049657600080fd5b5061049f61113d565b6040516104ac9190614329565b60405180910390f35b3480156104c157600080fd5b506104ca611150565b6040516104d7919061430e565b60405180910390f35b3480156104ec57600080fd5b50610507600480360381019061050291906136bf565b611156565b005b34801561051557600080fd5b50610530600480360381019061052b919061385e565b611176565b005b34801561053e57600080fd5b5061054761120f565b6040516105549190613ff1565b60405180910390f35b34801561056957600080fd5b50610572611222565b60405161057f919061430e565b60405180910390f35b34801561059457600080fd5b506105af60048036038101906105aa919061385e565b611228565b005b3480156105bd57600080fd5b506105d860048036038101906105d3919061392e565b6112c1565b005b3480156105e657600080fd5b5061060160048036038101906105fc919061392e565b611347565b60405161060e9190613f46565b60405180910390f35b34801561062357600080fd5b5061062c6113f9565b604051610639919061400c565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190613652565b611487565b005b34801561067757600080fd5b50610692600480360381019061068d9190613652565b611547565b60405161069f919061430e565b60405180910390f35b3480156106b457600080fd5b506106bd6115ff565b005b3480156106cb57600080fd5b506106e660048036038101906106e19190613652565b611687565b005b3480156106f457600080fd5b506106fd611769565b60405161070a9190613fad565b60405180910390f35b34801561071f57600080fd5b506107286117f7565b6040516107359190614329565b60405180910390f35b34801561074a57600080fd5b5061075361180a565b6040516107609190614329565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b919061395b565b61181d565b005b34801561079e57600080fd5b506107a76118b7565b6040516107b49190613ff1565b60405180910390f35b3480156107c957600080fd5b506107d26118ca565b6040516107df9190613f46565b60405180910390f35b3480156107f457600080fd5b506107fd6118f4565b60405161080a9190613f46565b60405180910390f35b34801561081f57600080fd5b5061082861191a565b604051610835919061400c565b60405180910390f35b34801561084a57600080fd5b506108536119ac565b604051610860919061430e565b60405180910390f35b34801561087557600080fd5b50610890600480360381019061088b9190613795565b6119bd565b005b34801561089e57600080fd5b506108b960048036038101906108b4919061395b565b6119d3565b005b3480156108c757600080fd5b506108d0611a6d565b6040516108dd9190613fcf565b60405180910390f35b3480156108f257600080fd5b5061090d60048036038101906109089190613815565b611ac5565b005b34801561091b57600080fd5b5061093660048036038101906109319190613712565b611c3d565b005b34801561094457600080fd5b5061095f600480360381019061095a919061392e565b611c9f565b60405161096c919061400c565b60405180910390f35b34801561098157600080fd5b5061098a611d49565b604051610997919061430e565b60405180910390f35b3480156109ac57600080fd5b506109c760048036038101906109c2919061367f565b611d6a565b6040516109d49190613ff1565b60405180910390f35b3480156109e957600080fd5b50610a0460048036038101906109ff919061395b565b611dfe565b005b348015610a1257600080fd5b50610a2d6004803603810190610a289190613652565b611e98565b005b348015610a3b57600080fd5b50610a566004803603810190610a51919061392e565b611f90565b005b610a726004803603810190610a6d9190613815565b612016565b005b60606012805480602002602001604051908101604052809291908181526020018280548015610af857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610aae575b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bcd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bdd5750610bdc8261249c565b5b9050919050565b606060008054610bf390614699565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1f90614699565b8015610c6c5780601f10610c4157610100808354040283529160200191610c6c565b820191906000526020600020905b815481529060010190602001808311610c4f57829003601f168201915b5050505050905090565b6000610c8182612506565b610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb7906141ee565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d0682611347565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e9061426e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d96612572565b73ffffffffffffffffffffffffffffffffffffffff161480610dc55750610dc481610dbf612572565b611d6a565b5b610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061414e565b60405180910390fd5b610e0e838361257a565b505050565b600b5481565b6000600854905090565b610e34610e2e612572565b82612633565b610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a9061428e565b60405180910390fd5b610e7e838383612711565b505050565b610e8b612572565b73ffffffffffffffffffffffffffffffffffffffff16610ea96118ca565b73ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef69061420e565b60405180910390fd5b80600b8190555050565b610f11612572565b73ffffffffffffffffffffffffffffffffffffffff16610f2f6118ca565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c9061420e565b60405180910390fd5b6012819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ff3612572565b73ffffffffffffffffffffffffffffffffffffffff166110116118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105e9061420e565b60405180910390fd5b806009908051906020019061107d9291906133b3565b5050565b611089612572565b73ffffffffffffffffffffffffffffffffffffffff166110a76118ca565b73ffffffffffffffffffffffffffffffffffffffff16146110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f49061420e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505061113b57600080fd5b565b601060009054906101000a900460ff1681565b600d5481565b61117183838360405180602001604052806000815250611c3d565b505050565b61117e612572565b73ffffffffffffffffffffffffffffffffffffffff1661119c6118ca565b73ffffffffffffffffffffffffffffffffffffffff16146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e99061420e565b60405180910390fd5b80600c60156101000a81548160ff02191690831515021790555050565b600c60149054906101000a900460ff1681565b600e5481565b611230612572565b73ffffffffffffffffffffffffffffffffffffffff1661124e6118ca565b73ffffffffffffffffffffffffffffffffffffffff16146112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b9061420e565b60405180910390fd5b80600c60146101000a81548160ff02191690831515021790555050565b6112c9612572565b73ffffffffffffffffffffffffffffffffffffffff166112e76118ca565b73ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113349061420e565b60405180910390fd5b80600e8190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061418e565b60405180910390fd5b80915050919050565b6009805461140690614699565b80601f016020809104026020016040519081016040528092919081815260200182805461143290614699565b801561147f5780601f106114545761010080835404028352916020019161147f565b820191906000526020600020905b81548152906001019060200180831161146257829003601f168201915b505050505081565b61148f612572565b73ffffffffffffffffffffffffffffffffffffffff166114ad6118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa9061420e565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af9061416e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611607612572565b73ffffffffffffffffffffffffffffffffffffffff166116256118ca565b73ffffffffffffffffffffffffffffffffffffffff161461167b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116729061420e565b60405180910390fd5b6116856000612978565b565b61168f612572565b73ffffffffffffffffffffffffffffffffffffffff166116ad6118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa9061420e565b60405180910390fd5b6011819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060118054806020026020016040519081016040528092919081815260200182805480156117ed57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116117a3575b5050505050905090565b601060029054906101000a900460ff1681565b601060019054906101000a900460ff1681565b611825612572565b73ffffffffffffffffffffffffffffffffffffffff166118436118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061420e565b60405180910390fd5b80601060006101000a81548160ff021916908360ff16021790555050565b600c60159054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606001805461192990614699565b80601f016020809104026020016040519081016040528092919081815260200182805461195590614699565b80156119a25780601f10611977576101008083540402835291602001916119a2565b820191906000526020600020905b81548152906001019060200180831161198557829003601f168201915b5050505050905090565b60006119b86007612a3e565b905090565b6119cf6119c8612572565b8383612a4c565b5050565b6119db612572565b73ffffffffffffffffffffffffffffffffffffffff166119f96118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a469061420e565b60405180910390fd5b80601060026101000a81548160ff021916908360ff16021790555050565b6060600f805480602002602001604051908101604052809291908181526020018280548015611abb57602002820191906000526020600020905b815481526020019060010190808311611aa7575b5050505050905090565b6000611acf611d49565b11611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b069061410e565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b96906142ee565b60405180910390fd5b60005b60018251611bb091906145a2565b8111611c3957611bda33838381518110611bcd57611bcc614803565b5b6020026020010151612bb9565b600f828281518110611bef57611bee614803565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190915055611c25612bd7565b508080611c31906146fc565b915050611ba2565b5050565b611c4e611c48612572565b83612633565b611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061428e565b60405180910390fd5b611c9984848484612bf7565b50505050565b6060611caa82612506565b611ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce09061424e565b60405180910390fd5b6000611cf3612c53565b90506000815111611d135760405180602001604052806000815250611d41565b80611d1d84612ce5565b600a604051602001611d3193929190613f15565b6040516020818303038152906040525b915050919050565b6000611d536119ac565b611d5b610e19565b611d6591906145a2565b905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e06612572565b73ffffffffffffffffffffffffffffffffffffffff16611e246118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e719061420e565b60405180910390fd5b80601060016101000a81548160ff021916908360ff16021790555050565b611ea0612572565b73ffffffffffffffffffffffffffffffffffffffff16611ebe6118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b9061420e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b9061406e565b60405180910390fd5b611f8d81612978565b50565b611f98612572565b73ffffffffffffffffffffffffffffffffffffffff16611fb66118ca565b73ffffffffffffffffffffffffffffffffffffffff161461200c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120039061420e565b60405180910390fd5b80600d8190555050565b6000612020611d49565b11612060576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120579061410e565b60405180910390fd5b60011515600c60149054906101000a900460ff161515146120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad9061422e565b60405180910390fd5b601060009054906101000a900460ff1660ff168151111561210c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121039061404e565b60405180910390fd5b8051600b5461211b9190614548565b341461215c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612153906142ce565b60405180910390fd5b60011515600c60159054906101000a900460ff16151514156123af57600061218333612e46565b9050600061219033612ef5565b9050818061219b5750805b6121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d1906142ae565b60405180910390fd5b811561224e57601060019054906101000a900460ff1660ff1683516121fe33611547565b61220891906144c1565b1115612249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612240906141ce565b60405180910390fd5b6122bf565b80156122be57601060029054906101000a900460ff1660ff16835161227233611547565b61227c91906144c1565b11156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b4906141ce565b60405180910390fd5b5b5b60005b600184516122d091906145a2565b81116123a757600d548482815181106122ec576122eb614803565b5b60200260200101511015801561231e5750600e5484828151811061231357612312614803565b5b602002602001015111155b15612394576123473385838151811061233a57612339614803565b5b6020026020010151612bb9565b600f84828151811061235c5761235b614803565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190915055612392612bd7565b505b808061239f906146fc565b9150506122c2565b505050612499565b60005b600182516123c091906145a2565b811161249757600d548282815181106123dc576123db614803565b5b60200260200101511015801561240e5750600e5482828151811061240357612402614803565b5b602002602001015111155b15612484576124373383838151811061242a57612429614803565b5b6020026020010151612bb9565b600f82828151811061244c5761244b614803565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190915055612482612bd7565b505b808061248f906146fc565b9150506123b2565b505b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166125ed83611347565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061263e82612506565b61267d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126749061412e565b60405180910390fd5b600061268883611347565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806126ca57506126c98185611d6a565b5b8061270857508373ffffffffffffffffffffffffffffffffffffffff166126f084610c76565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661273182611347565b73ffffffffffffffffffffffffffffffffffffffff1614612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e9061408e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee906140ce565b60405180910390fd5b612802838383612fa4565b61280d60008261257a565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461285d91906145a2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128b491906144c1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612973838383612fa9565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab2906140ee565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612bac9190613ff1565b60405180910390a3505050565b612bd3828260405180602001604052806000815250612fae565b5050565b600080612be46007612a3e565b9050612bf06007613009565b8091505090565b612c02848484612711565b612c0e8484848461301f565b612c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c449061402e565b60405180910390fd5b50505050565b606060098054612c6290614699565b80601f0160208091040260200160405190810160405280929190818152602001828054612c8e90614699565b8015612cdb5780601f10612cb057610100808354040283529160200191612cdb565b820191906000526020600020905b815481529060010190602001808311612cbe57829003601f168201915b5050505050905090565b60606000821415612d2d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e41565b600082905060005b60008214612d5f578080612d48906146fc565b915050600a82612d589190614517565b9150612d35565b60008167ffffffffffffffff811115612d7b57612d7a614832565b5b6040519080825280601f01601f191660200182016040528015612dad5781602001600182028036833780820191505090505b5090505b60008514612e3a57600182612dc691906145a2565b9150600a85612dd59190614745565b6030612de191906144c1565b60f81b818381518110612df757612df6614803565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e339190614517565b9450612db1565b8093505050505b919050565b600080600090505b601180549050811015612eea578273ffffffffffffffffffffffffffffffffffffffff1660118281548110612e8657612e85614803565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ed7576001915050612ef0565b8080612ee2906146fc565b915050612e4e565b60009150505b919050565b600080600090505b601280549050811015612f99578273ffffffffffffffffffffffffffffffffffffffff1660128281548110612f3557612f34614803565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612f86576001915050612f9f565b8080612f91906146fc565b915050612efd565b60009150505b919050565b505050565b505050565b612fb883836131b6565b612fc5600084848461301f565b613004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffb9061402e565b60405180910390fd5b505050565b6001816000016000828254019250508190555050565b60006130408473ffffffffffffffffffffffffffffffffffffffff16613390565b156131a9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613069612572565b8786866040518563ffffffff1660e01b815260040161308b9493929190613f61565b602060405180830381600087803b1580156130a557600080fd5b505af19250505080156130d657506040513d601f19601f820116820180604052508101906130d391906138b8565b60015b613159573d8060008114613106576040519150601f19603f3d011682016040523d82523d6000602084013e61310b565b606091505b50600081511415613151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131489061402e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506131ae565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321d906141ae565b60405180910390fd5b61322f81612506565b1561326f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613266906140ae565b60405180910390fd5b61327b60008383612fa4565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132cb91906144c1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461338c60008383612fa9565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546133bf90614699565b90600052602060002090601f0160209004810192826133e15760008555613428565b82601f106133fa57805160ff1916838001178555613428565b82800160010185558215613428579182015b8281111561342757825182559160200191906001019061340c565b5b5090506134359190613439565b5090565b5b8082111561345257600081600090555060010161343a565b5090565b600061346961346484614369565b614344565b9050808382526020820190508285602086028201111561348c5761348b614866565b5b60005b858110156134bc57816134a28882613628565b84526020840193506020830192505060018101905061348f565b5050509392505050565b60006134d96134d484614395565b614344565b9050828152602081018484840111156134f5576134f461486b565b5b613500848285614657565b509392505050565b600061351b613516846143c6565b614344565b9050828152602081018484840111156135375761353661486b565b5b613542848285614657565b509392505050565b60008135905061355981614e74565b92915050565b600082601f83011261357457613573614861565b5b8135613584848260208601613456565b91505092915050565b60008135905061359c81614e8b565b92915050565b6000813590506135b181614ea2565b92915050565b6000815190506135c681614ea2565b92915050565b600082601f8301126135e1576135e0614861565b5b81356135f18482602086016134c6565b91505092915050565b600082601f83011261360f5761360e614861565b5b813561361f848260208601613508565b91505092915050565b60008135905061363781614eb9565b92915050565b60008135905061364c81614ed0565b92915050565b60006020828403121561366857613667614875565b5b60006136768482850161354a565b91505092915050565b6000806040838503121561369657613695614875565b5b60006136a48582860161354a565b92505060206136b58582860161354a565b9150509250929050565b6000806000606084860312156136d8576136d7614875565b5b60006136e68682870161354a565b93505060206136f78682870161354a565b925050604061370886828701613628565b9150509250925092565b6000806000806080858703121561372c5761372b614875565b5b600061373a8782880161354a565b945050602061374b8782880161354a565b935050604061375c87828801613628565b925050606085013567ffffffffffffffff81111561377d5761377c614870565b5b613789878288016135cc565b91505092959194509250565b600080604083850312156137ac576137ab614875565b5b60006137ba8582860161354a565b92505060206137cb8582860161358d565b9150509250929050565b600080604083850312156137ec576137eb614875565b5b60006137fa8582860161354a565b925050602061380b85828601613628565b9150509250929050565b60006020828403121561382b5761382a614875565b5b600082013567ffffffffffffffff81111561384957613848614870565b5b6138558482850161355f565b91505092915050565b60006020828403121561387457613873614875565b5b60006138828482850161358d565b91505092915050565b6000602082840312156138a1576138a0614875565b5b60006138af848285016135a2565b91505092915050565b6000602082840312156138ce576138cd614875565b5b60006138dc848285016135b7565b91505092915050565b6000602082840312156138fb576138fa614875565b5b600082013567ffffffffffffffff81111561391957613918614870565b5b613925848285016135fa565b91505092915050565b60006020828403121561394457613943614875565b5b600061395284828501613628565b91505092915050565b60006020828403121561397157613970614875565b5b600061397f8482850161363d565b91505092915050565b600061399483836139b8565b60208301905092915050565b60006139ac8383613ee8565b60208301905092915050565b6139c1816145d6565b82525050565b6139d0816145d6565b82525050565b60006139e18261442c565b6139eb8185614472565b93506139f6836143f7565b8060005b83811015613a27578151613a0e8882613988565b9750613a1983614458565b9250506001810190506139fa565b5085935050505092915050565b6000613a3f82614437565b613a498185614483565b9350613a5483614407565b8060005b83811015613a85578151613a6c88826139a0565b9750613a7783614465565b925050600181019050613a58565b5085935050505092915050565b613a9b816145e8565b82525050565b6000613aac82614442565b613ab68185614494565b9350613ac6818560208601614666565b613acf8161487a565b840191505092915050565b6000613ae58261444d565b613aef81856144a5565b9350613aff818560208601614666565b613b088161487a565b840191505092915050565b6000613b1e8261444d565b613b2881856144b6565b9350613b38818560208601614666565b80840191505092915050565b60008154613b5181614699565b613b5b81866144b6565b94506001821660008114613b765760018114613b8757613bba565b60ff19831686528186019350613bba565b613b9085614417565b60005b83811015613bb257815481890152600182019150602081019050613b93565b838801955050505b50505092915050565b6000613bd06032836144a5565b9150613bdb8261488b565b604082019050919050565b6000613bf3602a836144a5565b9150613bfe826148da565b604082019050919050565b6000613c166026836144a5565b9150613c2182614929565b604082019050919050565b6000613c396025836144a5565b9150613c4482614978565b604082019050919050565b6000613c5c601c836144a5565b9150613c67826149c7565b602082019050919050565b6000613c7f6024836144a5565b9150613c8a826149f0565b604082019050919050565b6000613ca26019836144a5565b9150613cad82614a3f565b602082019050919050565b6000613cc56018836144a5565b9150613cd082614a68565b602082019050919050565b6000613ce8602c836144a5565b9150613cf382614a91565b604082019050919050565b6000613d0b6038836144a5565b9150613d1682614ae0565b604082019050919050565b6000613d2e602a836144a5565b9150613d3982614b2f565b604082019050919050565b6000613d516029836144a5565b9150613d5c82614b7e565b604082019050919050565b6000613d746020836144a5565b9150613d7f82614bcd565b602082019050919050565b6000613d97601e836144a5565b9150613da282614bf6565b602082019050919050565b6000613dba602c836144a5565b9150613dc582614c1f565b604082019050919050565b6000613ddd6020836144a5565b9150613de882614c6e565b602082019050919050565b6000613e006011836144a5565b9150613e0b82614c97565b602082019050919050565b6000613e23602f836144a5565b9150613e2e82614cc0565b604082019050919050565b6000613e466021836144a5565b9150613e5182614d0f565b604082019050919050565b6000613e696031836144a5565b9150613e7482614d5e565b604082019050919050565b6000613e8c6038836144a5565b9150613e9782614dad565b604082019050919050565b6000613eaf6025836144a5565b9150613eba82614dfc565b604082019050919050565b6000613ed2601f836144a5565b9150613edd82614e4b565b602082019050919050565b613ef181614640565b82525050565b613f0081614640565b82525050565b613f0f8161464a565b82525050565b6000613f218286613b13565b9150613f2d8285613b13565b9150613f398284613b44565b9150819050949350505050565b6000602082019050613f5b60008301846139c7565b92915050565b6000608082019050613f7660008301876139c7565b613f8360208301866139c7565b613f906040830185613ef7565b8181036060830152613fa28184613aa1565b905095945050505050565b60006020820190508181036000830152613fc781846139d6565b905092915050565b60006020820190508181036000830152613fe98184613a34565b905092915050565b60006020820190506140066000830184613a92565b92915050565b600060208201905081810360008301526140268184613ada565b905092915050565b6000602082019050818103600083015261404781613bc3565b9050919050565b6000602082019050818103600083015261406781613be6565b9050919050565b6000602082019050818103600083015261408781613c09565b9050919050565b600060208201905081810360008301526140a781613c2c565b9050919050565b600060208201905081810360008301526140c781613c4f565b9050919050565b600060208201905081810360008301526140e781613c72565b9050919050565b6000602082019050818103600083015261410781613c95565b9050919050565b6000602082019050818103600083015261412781613cb8565b9050919050565b6000602082019050818103600083015261414781613cdb565b9050919050565b6000602082019050818103600083015261416781613cfe565b9050919050565b6000602082019050818103600083015261418781613d21565b9050919050565b600060208201905081810360008301526141a781613d44565b9050919050565b600060208201905081810360008301526141c781613d67565b9050919050565b600060208201905081810360008301526141e781613d8a565b9050919050565b6000602082019050818103600083015261420781613dad565b9050919050565b6000602082019050818103600083015261422781613dd0565b9050919050565b6000602082019050818103600083015261424781613df3565b9050919050565b6000602082019050818103600083015261426781613e16565b9050919050565b6000602082019050818103600083015261428781613e39565b9050919050565b600060208201905081810360008301526142a781613e5c565b9050919050565b600060208201905081810360008301526142c781613e7f565b9050919050565b600060208201905081810360008301526142e781613ea2565b9050919050565b6000602082019050818103600083015261430781613ec5565b9050919050565b60006020820190506143236000830184613ef7565b92915050565b600060208201905061433e6000830184613f06565b92915050565b600061434e61435f565b905061435a82826146cb565b919050565b6000604051905090565b600067ffffffffffffffff82111561438457614383614832565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156143b0576143af614832565b5b6143b98261487a565b9050602081019050919050565b600067ffffffffffffffff8211156143e1576143e0614832565b5b6143ea8261487a565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006144cc82614640565b91506144d783614640565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561450c5761450b614776565b5b828201905092915050565b600061452282614640565b915061452d83614640565b92508261453d5761453c6147a5565b5b828204905092915050565b600061455382614640565b915061455e83614640565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459757614596614776565b5b828202905092915050565b60006145ad82614640565b91506145b883614640565b9250828210156145cb576145ca614776565b5b828203905092915050565b60006145e182614620565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614684578082015181840152602081019050614669565b83811115614693576000848401525b50505050565b600060028204905060018216806146b157607f821691505b602082108114156146c5576146c46147d4565b5b50919050565b6146d48261487a565b810181811067ffffffffffffffff821117156146f3576146f2614832565b5b80604052505050565b600061470782614640565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561473a57614739614776565b5b600182019050919050565b600061475082614640565b915061475b83614640565b92508261476b5761476a6147a5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4d6178696d756d206f6620746f6b656e7320746f20627579206174206f6e636560008201527f2065786365656465642e00000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4e6f206d6f726520746f6b656e7320617661696c61626c650000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4d6178206d696e74207065722061646472657373206578636565646564210000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f742053616c657320506572696f642e000000000000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4e6f74206f6e207468652077686974656c697374212043616e6e6f742062757960008201527f20647572696e672050726553616c657320506572696f642e0000000000000000602082015250565b7f5072696365206d75737420626520657175616c20746f206c697374696e67207060008201527f726963652e000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79204f776e65722063616e207573652074686973206d6574686f642e00600082015250565b614e7d816145d6565b8114614e8857600080fd5b50565b614e94816145e8565b8114614e9f57600080fd5b50565b614eab816145f4565b8114614eb657600080fd5b50565b614ec281614640565b8114614ecd57600080fd5b50565b614ed98161464a565b8114614ee457600080fd5b5056fea26469706673582212201f0b6c47cc6d241af6edc094df48c3e59598a121cbf3b95e125014e0ae5da22d64736f6c6343000807003368747470733a2f2f66617368696f6e63727970746f2e696f2f646174612f66617368696f6e2f6a736f6e2f

Deployed Bytecode

0x6080604052600436106102885760003560e01c806370a082311161015a578063a22cb465116100c1578063e14ca3531161007a578063e14ca35314610975578063e985e9c5146109a0578063f0194842146109dd578063f2fde38b14610a06578063f41d896e14610a2f578063f8e93ef914610a5857610288565b8063a22cb46514610869578063a34784d914610892578063ab7f0e2c146108bb578063abbd034b146108e6578063b88d4fde1461090f578063c87b56dd1461093857610288565b80637a90e9e8116101135780637a90e9e8146107695780637ada5c8c146107925780638da5cb5b146107bd5780638f84aa09146107e857806395d89b41146108135780639f181b5e1461083e57610288565b806370a082311461066b578063715018a6146106a857806372557c9a146106bf57806379ead3d0146106e85780637a279227146107135780637a431c8f1461073e57610288565b80633ccfd60b116101fe5780635ac293c9116101b75780635ac293c91461055d578063601dd7d91461058857806362fa8d42146105b15780636352211e146105da5780636c0360eb146106175780636e5672111461064257610288565b80633ccfd60b146104805780633d885ad21461048a5780633e0e828b146104b557806342842e0e146104e057806352b30184146105095780635806c8511461053257610288565b806313faede61161025057806313faede61461038657806318160ddd146103b157806323b872dd146103dc57806323c5a0881461040557806323efeb711461042e5780632be384101461045757610288565b806301cf82f41461028d57806301ffc9a7146102b857806306fdde03146102f5578063081812fc14610320578063095ea7b31461035d575b600080fd5b34801561029957600080fd5b506102a2610a74565b6040516102af9190613fad565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da919061388b565b610b02565b6040516102ec9190613ff1565b60405180910390f35b34801561030157600080fd5b5061030a610be4565b604051610317919061400c565b60405180910390f35b34801561032c57600080fd5b506103476004803603810190610342919061392e565b610c76565b6040516103549190613f46565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f91906137d5565b610cfb565b005b34801561039257600080fd5b5061039b610e13565b6040516103a8919061430e565b60405180910390f35b3480156103bd57600080fd5b506103c6610e19565b6040516103d3919061430e565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe91906136bf565b610e23565b005b34801561041157600080fd5b5061042c6004803603810190610427919061392e565b610e83565b005b34801561043a57600080fd5b5061045560048036038101906104509190613652565b610f09565b005b34801561046357600080fd5b5061047e600480360381019061047991906138e5565b610feb565b005b610488611081565b005b34801561049657600080fd5b5061049f61113d565b6040516104ac9190614329565b60405180910390f35b3480156104c157600080fd5b506104ca611150565b6040516104d7919061430e565b60405180910390f35b3480156104ec57600080fd5b50610507600480360381019061050291906136bf565b611156565b005b34801561051557600080fd5b50610530600480360381019061052b919061385e565b611176565b005b34801561053e57600080fd5b5061054761120f565b6040516105549190613ff1565b60405180910390f35b34801561056957600080fd5b50610572611222565b60405161057f919061430e565b60405180910390f35b34801561059457600080fd5b506105af60048036038101906105aa919061385e565b611228565b005b3480156105bd57600080fd5b506105d860048036038101906105d3919061392e565b6112c1565b005b3480156105e657600080fd5b5061060160048036038101906105fc919061392e565b611347565b60405161060e9190613f46565b60405180910390f35b34801561062357600080fd5b5061062c6113f9565b604051610639919061400c565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190613652565b611487565b005b34801561067757600080fd5b50610692600480360381019061068d9190613652565b611547565b60405161069f919061430e565b60405180910390f35b3480156106b457600080fd5b506106bd6115ff565b005b3480156106cb57600080fd5b506106e660048036038101906106e19190613652565b611687565b005b3480156106f457600080fd5b506106fd611769565b60405161070a9190613fad565b60405180910390f35b34801561071f57600080fd5b506107286117f7565b6040516107359190614329565b60405180910390f35b34801561074a57600080fd5b5061075361180a565b6040516107609190614329565b60405180910390f35b34801561077557600080fd5b50610790600480360381019061078b919061395b565b61181d565b005b34801561079e57600080fd5b506107a76118b7565b6040516107b49190613ff1565b60405180910390f35b3480156107c957600080fd5b506107d26118ca565b6040516107df9190613f46565b60405180910390f35b3480156107f457600080fd5b506107fd6118f4565b60405161080a9190613f46565b60405180910390f35b34801561081f57600080fd5b5061082861191a565b604051610835919061400c565b60405180910390f35b34801561084a57600080fd5b506108536119ac565b604051610860919061430e565b60405180910390f35b34801561087557600080fd5b50610890600480360381019061088b9190613795565b6119bd565b005b34801561089e57600080fd5b506108b960048036038101906108b4919061395b565b6119d3565b005b3480156108c757600080fd5b506108d0611a6d565b6040516108dd9190613fcf565b60405180910390f35b3480156108f257600080fd5b5061090d60048036038101906109089190613815565b611ac5565b005b34801561091b57600080fd5b5061093660048036038101906109319190613712565b611c3d565b005b34801561094457600080fd5b5061095f600480360381019061095a919061392e565b611c9f565b60405161096c919061400c565b60405180910390f35b34801561098157600080fd5b5061098a611d49565b604051610997919061430e565b60405180910390f35b3480156109ac57600080fd5b506109c760048036038101906109c2919061367f565b611d6a565b6040516109d49190613ff1565b60405180910390f35b3480156109e957600080fd5b50610a0460048036038101906109ff919061395b565b611dfe565b005b348015610a1257600080fd5b50610a2d6004803603810190610a289190613652565b611e98565b005b348015610a3b57600080fd5b50610a566004803603810190610a51919061392e565b611f90565b005b610a726004803603810190610a6d9190613815565b612016565b005b60606012805480602002602001604051908101604052809291908181526020018280548015610af857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610aae575b5050505050905090565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bcd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610bdd5750610bdc8261249c565b5b9050919050565b606060008054610bf390614699565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1f90614699565b8015610c6c5780601f10610c4157610100808354040283529160200191610c6c565b820191906000526020600020905b815481529060010190602001808311610c4f57829003601f168201915b5050505050905090565b6000610c8182612506565b610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb7906141ee565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610d0682611347565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e9061426e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d96612572565b73ffffffffffffffffffffffffffffffffffffffff161480610dc55750610dc481610dbf612572565b611d6a565b5b610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061414e565b60405180910390fd5b610e0e838361257a565b505050565b600b5481565b6000600854905090565b610e34610e2e612572565b82612633565b610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a9061428e565b60405180910390fd5b610e7e838383612711565b505050565b610e8b612572565b73ffffffffffffffffffffffffffffffffffffffff16610ea96118ca565b73ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef69061420e565b60405180910390fd5b80600b8190555050565b610f11612572565b73ffffffffffffffffffffffffffffffffffffffff16610f2f6118ca565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c9061420e565b60405180910390fd5b6012819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ff3612572565b73ffffffffffffffffffffffffffffffffffffffff166110116118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105e9061420e565b60405180910390fd5b806009908051906020019061107d9291906133b3565b5050565b611089612572565b73ffffffffffffffffffffffffffffffffffffffff166110a76118ca565b73ffffffffffffffffffffffffffffffffffffffff16146110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f49061420e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505061113b57600080fd5b565b601060009054906101000a900460ff1681565b600d5481565b61117183838360405180602001604052806000815250611c3d565b505050565b61117e612572565b73ffffffffffffffffffffffffffffffffffffffff1661119c6118ca565b73ffffffffffffffffffffffffffffffffffffffff16146111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e99061420e565b60405180910390fd5b80600c60156101000a81548160ff02191690831515021790555050565b600c60149054906101000a900460ff1681565b600e5481565b611230612572565b73ffffffffffffffffffffffffffffffffffffffff1661124e6118ca565b73ffffffffffffffffffffffffffffffffffffffff16146112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b9061420e565b60405180910390fd5b80600c60146101000a81548160ff02191690831515021790555050565b6112c9612572565b73ffffffffffffffffffffffffffffffffffffffff166112e76118ca565b73ffffffffffffffffffffffffffffffffffffffff161461133d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113349061420e565b60405180910390fd5b80600e8190555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061418e565b60405180910390fd5b80915050919050565b6009805461140690614699565b80601f016020809104026020016040519081016040528092919081815260200182805461143290614699565b801561147f5780601f106114545761010080835404028352916020019161147f565b820191906000526020600020905b81548152906001019060200180831161146257829003601f168201915b505050505081565b61148f612572565b73ffffffffffffffffffffffffffffffffffffffff166114ad6118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa9061420e565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af9061416e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611607612572565b73ffffffffffffffffffffffffffffffffffffffff166116256118ca565b73ffffffffffffffffffffffffffffffffffffffff161461167b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116729061420e565b60405180910390fd5b6116856000612978565b565b61168f612572565b73ffffffffffffffffffffffffffffffffffffffff166116ad6118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa9061420e565b60405180910390fd5b6011819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060118054806020026020016040519081016040528092919081815260200182805480156117ed57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116117a3575b5050505050905090565b601060029054906101000a900460ff1681565b601060019054906101000a900460ff1681565b611825612572565b73ffffffffffffffffffffffffffffffffffffffff166118436118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118909061420e565b60405180910390fd5b80601060006101000a81548160ff021916908360ff16021790555050565b600c60159054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606001805461192990614699565b80601f016020809104026020016040519081016040528092919081815260200182805461195590614699565b80156119a25780601f10611977576101008083540402835291602001916119a2565b820191906000526020600020905b81548152906001019060200180831161198557829003601f168201915b5050505050905090565b60006119b86007612a3e565b905090565b6119cf6119c8612572565b8383612a4c565b5050565b6119db612572565b73ffffffffffffffffffffffffffffffffffffffff166119f96118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a469061420e565b60405180910390fd5b80601060026101000a81548160ff021916908360ff16021790555050565b6060600f805480602002602001604051908101604052809291908181526020018280548015611abb57602002820191906000526020600020905b815481526020019060010190808311611aa7575b5050505050905090565b6000611acf611d49565b11611b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b069061410e565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b96906142ee565b60405180910390fd5b60005b60018251611bb091906145a2565b8111611c3957611bda33838381518110611bcd57611bcc614803565b5b6020026020010151612bb9565b600f828281518110611bef57611bee614803565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190915055611c25612bd7565b508080611c31906146fc565b915050611ba2565b5050565b611c4e611c48612572565b83612633565b611c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c849061428e565b60405180910390fd5b611c9984848484612bf7565b50505050565b6060611caa82612506565b611ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce09061424e565b60405180910390fd5b6000611cf3612c53565b90506000815111611d135760405180602001604052806000815250611d41565b80611d1d84612ce5565b600a604051602001611d3193929190613f15565b6040516020818303038152906040525b915050919050565b6000611d536119ac565b611d5b610e19565b611d6591906145a2565b905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e06612572565b73ffffffffffffffffffffffffffffffffffffffff16611e246118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e719061420e565b60405180910390fd5b80601060016101000a81548160ff021916908360ff16021790555050565b611ea0612572565b73ffffffffffffffffffffffffffffffffffffffff16611ebe6118ca565b73ffffffffffffffffffffffffffffffffffffffff1614611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b9061420e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7b9061406e565b60405180910390fd5b611f8d81612978565b50565b611f98612572565b73ffffffffffffffffffffffffffffffffffffffff16611fb66118ca565b73ffffffffffffffffffffffffffffffffffffffff161461200c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120039061420e565b60405180910390fd5b80600d8190555050565b6000612020611d49565b11612060576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120579061410e565b60405180910390fd5b60011515600c60149054906101000a900460ff161515146120b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ad9061422e565b60405180910390fd5b601060009054906101000a900460ff1660ff168151111561210c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121039061404e565b60405180910390fd5b8051600b5461211b9190614548565b341461215c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612153906142ce565b60405180910390fd5b60011515600c60159054906101000a900460ff16151514156123af57600061218333612e46565b9050600061219033612ef5565b9050818061219b5750805b6121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d1906142ae565b60405180910390fd5b811561224e57601060019054906101000a900460ff1660ff1683516121fe33611547565b61220891906144c1565b1115612249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612240906141ce565b60405180910390fd5b6122bf565b80156122be57601060029054906101000a900460ff1660ff16835161227233611547565b61227c91906144c1565b11156122bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b4906141ce565b60405180910390fd5b5b5b60005b600184516122d091906145a2565b81116123a757600d548482815181106122ec576122eb614803565b5b60200260200101511015801561231e5750600e5484828151811061231357612312614803565b5b602002602001015111155b15612394576123473385838151811061233a57612339614803565b5b6020026020010151612bb9565b600f84828151811061235c5761235b614803565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190915055612392612bd7565b505b808061239f906146fc565b9150506122c2565b505050612499565b60005b600182516123c091906145a2565b811161249757600d548282815181106123dc576123db614803565b5b60200260200101511015801561240e5750600e5482828151811061240357612402614803565b5b602002602001015111155b15612484576124373383838151811061242a57612429614803565b5b6020026020010151612bb9565b600f82828151811061244c5761244b614803565b5b60200260200101519080600181540180825580915050600190039060005260206000200160009091909190915055612482612bd7565b505b808061248f906146fc565b9150506123b2565b505b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166125ed83611347565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061263e82612506565b61267d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126749061412e565b60405180910390fd5b600061268883611347565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806126ca57506126c98185611d6a565b5b8061270857508373ffffffffffffffffffffffffffffffffffffffff166126f084610c76565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661273182611347565b73ffffffffffffffffffffffffffffffffffffffff1614612787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277e9061408e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ee906140ce565b60405180910390fd5b612802838383612fa4565b61280d60008261257a565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461285d91906145a2565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546128b491906144c1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612973838383612fa9565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081600001549050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab2906140ee565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612bac9190613ff1565b60405180910390a3505050565b612bd3828260405180602001604052806000815250612fae565b5050565b600080612be46007612a3e565b9050612bf06007613009565b8091505090565b612c02848484612711565b612c0e8484848461301f565b612c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c449061402e565b60405180910390fd5b50505050565b606060098054612c6290614699565b80601f0160208091040260200160405190810160405280929190818152602001828054612c8e90614699565b8015612cdb5780601f10612cb057610100808354040283529160200191612cdb565b820191906000526020600020905b815481529060010190602001808311612cbe57829003601f168201915b5050505050905090565b60606000821415612d2d576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612e41565b600082905060005b60008214612d5f578080612d48906146fc565b915050600a82612d589190614517565b9150612d35565b60008167ffffffffffffffff811115612d7b57612d7a614832565b5b6040519080825280601f01601f191660200182016040528015612dad5781602001600182028036833780820191505090505b5090505b60008514612e3a57600182612dc691906145a2565b9150600a85612dd59190614745565b6030612de191906144c1565b60f81b818381518110612df757612df6614803565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612e339190614517565b9450612db1565b8093505050505b919050565b600080600090505b601180549050811015612eea578273ffffffffffffffffffffffffffffffffffffffff1660118281548110612e8657612e85614803565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ed7576001915050612ef0565b8080612ee2906146fc565b915050612e4e565b60009150505b919050565b600080600090505b601280549050811015612f99578273ffffffffffffffffffffffffffffffffffffffff1660128281548110612f3557612f34614803565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612f86576001915050612f9f565b8080612f91906146fc565b915050612efd565b60009150505b919050565b505050565b505050565b612fb883836131b6565b612fc5600084848461301f565b613004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffb9061402e565b60405180910390fd5b505050565b6001816000016000828254019250508190555050565b60006130408473ffffffffffffffffffffffffffffffffffffffff16613390565b156131a9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613069612572565b8786866040518563ffffffff1660e01b815260040161308b9493929190613f61565b602060405180830381600087803b1580156130a557600080fd5b505af19250505080156130d657506040513d601f19601f820116820180604052508101906130d391906138b8565b60015b613159573d8060008114613106576040519150601f19603f3d011682016040523d82523d6000602084013e61310b565b606091505b50600081511415613151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131489061402e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506131ae565b600190505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321d906141ae565b60405180910390fd5b61322f81612506565b1561326f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613266906140ae565b60405180910390fd5b61327b60008383612fa4565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132cb91906144c1565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461338c60008383612fa9565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b8280546133bf90614699565b90600052602060002090601f0160209004810192826133e15760008555613428565b82601f106133fa57805160ff1916838001178555613428565b82800160010185558215613428579182015b8281111561342757825182559160200191906001019061340c565b5b5090506134359190613439565b5090565b5b8082111561345257600081600090555060010161343a565b5090565b600061346961346484614369565b614344565b9050808382526020820190508285602086028201111561348c5761348b614866565b5b60005b858110156134bc57816134a28882613628565b84526020840193506020830192505060018101905061348f565b5050509392505050565b60006134d96134d484614395565b614344565b9050828152602081018484840111156134f5576134f461486b565b5b613500848285614657565b509392505050565b600061351b613516846143c6565b614344565b9050828152602081018484840111156135375761353661486b565b5b613542848285614657565b509392505050565b60008135905061355981614e74565b92915050565b600082601f83011261357457613573614861565b5b8135613584848260208601613456565b91505092915050565b60008135905061359c81614e8b565b92915050565b6000813590506135b181614ea2565b92915050565b6000815190506135c681614ea2565b92915050565b600082601f8301126135e1576135e0614861565b5b81356135f18482602086016134c6565b91505092915050565b600082601f83011261360f5761360e614861565b5b813561361f848260208601613508565b91505092915050565b60008135905061363781614eb9565b92915050565b60008135905061364c81614ed0565b92915050565b60006020828403121561366857613667614875565b5b60006136768482850161354a565b91505092915050565b6000806040838503121561369657613695614875565b5b60006136a48582860161354a565b92505060206136b58582860161354a565b9150509250929050565b6000806000606084860312156136d8576136d7614875565b5b60006136e68682870161354a565b93505060206136f78682870161354a565b925050604061370886828701613628565b9150509250925092565b6000806000806080858703121561372c5761372b614875565b5b600061373a8782880161354a565b945050602061374b8782880161354a565b935050604061375c87828801613628565b925050606085013567ffffffffffffffff81111561377d5761377c614870565b5b613789878288016135cc565b91505092959194509250565b600080604083850312156137ac576137ab614875565b5b60006137ba8582860161354a565b92505060206137cb8582860161358d565b9150509250929050565b600080604083850312156137ec576137eb614875565b5b60006137fa8582860161354a565b925050602061380b85828601613628565b9150509250929050565b60006020828403121561382b5761382a614875565b5b600082013567ffffffffffffffff81111561384957613848614870565b5b6138558482850161355f565b91505092915050565b60006020828403121561387457613873614875565b5b60006138828482850161358d565b91505092915050565b6000602082840312156138a1576138a0614875565b5b60006138af848285016135a2565b91505092915050565b6000602082840312156138ce576138cd614875565b5b60006138dc848285016135b7565b91505092915050565b6000602082840312156138fb576138fa614875565b5b600082013567ffffffffffffffff81111561391957613918614870565b5b613925848285016135fa565b91505092915050565b60006020828403121561394457613943614875565b5b600061395284828501613628565b91505092915050565b60006020828403121561397157613970614875565b5b600061397f8482850161363d565b91505092915050565b600061399483836139b8565b60208301905092915050565b60006139ac8383613ee8565b60208301905092915050565b6139c1816145d6565b82525050565b6139d0816145d6565b82525050565b60006139e18261442c565b6139eb8185614472565b93506139f6836143f7565b8060005b83811015613a27578151613a0e8882613988565b9750613a1983614458565b9250506001810190506139fa565b5085935050505092915050565b6000613a3f82614437565b613a498185614483565b9350613a5483614407565b8060005b83811015613a85578151613a6c88826139a0565b9750613a7783614465565b925050600181019050613a58565b5085935050505092915050565b613a9b816145e8565b82525050565b6000613aac82614442565b613ab68185614494565b9350613ac6818560208601614666565b613acf8161487a565b840191505092915050565b6000613ae58261444d565b613aef81856144a5565b9350613aff818560208601614666565b613b088161487a565b840191505092915050565b6000613b1e8261444d565b613b2881856144b6565b9350613b38818560208601614666565b80840191505092915050565b60008154613b5181614699565b613b5b81866144b6565b94506001821660008114613b765760018114613b8757613bba565b60ff19831686528186019350613bba565b613b9085614417565b60005b83811015613bb257815481890152600182019150602081019050613b93565b838801955050505b50505092915050565b6000613bd06032836144a5565b9150613bdb8261488b565b604082019050919050565b6000613bf3602a836144a5565b9150613bfe826148da565b604082019050919050565b6000613c166026836144a5565b9150613c2182614929565b604082019050919050565b6000613c396025836144a5565b9150613c4482614978565b604082019050919050565b6000613c5c601c836144a5565b9150613c67826149c7565b602082019050919050565b6000613c7f6024836144a5565b9150613c8a826149f0565b604082019050919050565b6000613ca26019836144a5565b9150613cad82614a3f565b602082019050919050565b6000613cc56018836144a5565b9150613cd082614a68565b602082019050919050565b6000613ce8602c836144a5565b9150613cf382614a91565b604082019050919050565b6000613d0b6038836144a5565b9150613d1682614ae0565b604082019050919050565b6000613d2e602a836144a5565b9150613d3982614b2f565b604082019050919050565b6000613d516029836144a5565b9150613d5c82614b7e565b604082019050919050565b6000613d746020836144a5565b9150613d7f82614bcd565b602082019050919050565b6000613d97601e836144a5565b9150613da282614bf6565b602082019050919050565b6000613dba602c836144a5565b9150613dc582614c1f565b604082019050919050565b6000613ddd6020836144a5565b9150613de882614c6e565b602082019050919050565b6000613e006011836144a5565b9150613e0b82614c97565b602082019050919050565b6000613e23602f836144a5565b9150613e2e82614cc0565b604082019050919050565b6000613e466021836144a5565b9150613e5182614d0f565b604082019050919050565b6000613e696031836144a5565b9150613e7482614d5e565b604082019050919050565b6000613e8c6038836144a5565b9150613e9782614dad565b604082019050919050565b6000613eaf6025836144a5565b9150613eba82614dfc565b604082019050919050565b6000613ed2601f836144a5565b9150613edd82614e4b565b602082019050919050565b613ef181614640565b82525050565b613f0081614640565b82525050565b613f0f8161464a565b82525050565b6000613f218286613b13565b9150613f2d8285613b13565b9150613f398284613b44565b9150819050949350505050565b6000602082019050613f5b60008301846139c7565b92915050565b6000608082019050613f7660008301876139c7565b613f8360208301866139c7565b613f906040830185613ef7565b8181036060830152613fa28184613aa1565b905095945050505050565b60006020820190508181036000830152613fc781846139d6565b905092915050565b60006020820190508181036000830152613fe98184613a34565b905092915050565b60006020820190506140066000830184613a92565b92915050565b600060208201905081810360008301526140268184613ada565b905092915050565b6000602082019050818103600083015261404781613bc3565b9050919050565b6000602082019050818103600083015261406781613be6565b9050919050565b6000602082019050818103600083015261408781613c09565b9050919050565b600060208201905081810360008301526140a781613c2c565b9050919050565b600060208201905081810360008301526140c781613c4f565b9050919050565b600060208201905081810360008301526140e781613c72565b9050919050565b6000602082019050818103600083015261410781613c95565b9050919050565b6000602082019050818103600083015261412781613cb8565b9050919050565b6000602082019050818103600083015261414781613cdb565b9050919050565b6000602082019050818103600083015261416781613cfe565b9050919050565b6000602082019050818103600083015261418781613d21565b9050919050565b600060208201905081810360008301526141a781613d44565b9050919050565b600060208201905081810360008301526141c781613d67565b9050919050565b600060208201905081810360008301526141e781613d8a565b9050919050565b6000602082019050818103600083015261420781613dad565b9050919050565b6000602082019050818103600083015261422781613dd0565b9050919050565b6000602082019050818103600083015261424781613df3565b9050919050565b6000602082019050818103600083015261426781613e16565b9050919050565b6000602082019050818103600083015261428781613e39565b9050919050565b600060208201905081810360008301526142a781613e5c565b9050919050565b600060208201905081810360008301526142c781613e7f565b9050919050565b600060208201905081810360008301526142e781613ea2565b9050919050565b6000602082019050818103600083015261430781613ec5565b9050919050565b60006020820190506143236000830184613ef7565b92915050565b600060208201905061433e6000830184613f06565b92915050565b600061434e61435f565b905061435a82826146cb565b919050565b6000604051905090565b600067ffffffffffffffff82111561438457614383614832565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156143b0576143af614832565b5b6143b98261487a565b9050602081019050919050565b600067ffffffffffffffff8211156143e1576143e0614832565b5b6143ea8261487a565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006144cc82614640565b91506144d783614640565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561450c5761450b614776565b5b828201905092915050565b600061452282614640565b915061452d83614640565b92508261453d5761453c6147a5565b5b828204905092915050565b600061455382614640565b915061455e83614640565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561459757614596614776565b5b828202905092915050565b60006145ad82614640565b91506145b883614640565b9250828210156145cb576145ca614776565b5b828203905092915050565b60006145e182614620565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015614684578082015181840152602081019050614669565b83811115614693576000848401525b50505050565b600060028204905060018216806146b157607f821691505b602082108114156146c5576146c46147d4565b5b50919050565b6146d48261487a565b810181811067ffffffffffffffff821117156146f3576146f2614832565b5b80604052505050565b600061470782614640565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561473a57614739614776565b5b600182019050919050565b600061475082614640565b915061475b83614640565b92508261476b5761476a6147a5565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4d6178696d756d206f6620746f6b656e7320746f20627579206174206f6e636560008201527f2065786365656465642e00000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4e6f206d6f726520746f6b656e7320617661696c61626c650000000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4d6178206d696e74207065722061646472657373206578636565646564210000600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f742053616c657320506572696f642e000000000000000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f4e6f74206f6e207468652077686974656c697374212043616e6e6f742062757960008201527f20647572696e672050726553616c657320506572696f642e0000000000000000602082015250565b7f5072696365206d75737420626520657175616c20746f206c697374696e67207060008201527f726963652e000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79204f776e65722063616e207573652074686973206d6574686f642e00600082015250565b614e7d816145d6565b8114614e8857600080fd5b50565b614e94816145e8565b8114614e9f57600080fd5b50565b614eab816145f4565b8114614eb657600080fd5b50565b614ec281614640565b8114614ecd57600080fd5b50565b614ed98161464a565b8114614ee457600080fd5b5056fea26469706673582212201f0b6c47cc6d241af6edc094df48c3e59598a121cbf3b95e125014e0ae5da22d64736f6c63430008070033

Deployed Bytecode Sourcemap

43646:19293:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;62282:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25675:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26620:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28180:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27703:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43861:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39538:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28930:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;60390:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;61877:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;60489:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;60262:120;;;:::i;:::-;;44161:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44052:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29340:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;60705:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43979:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44089:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;60606:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;60955:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26314:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43747:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;62024:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26044:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6258:103;;;;;;;;;;;;;:::i;:::-;;61730:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;62146:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44247:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44207:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;61070:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44012:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5607:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43900:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26789:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39728:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28473:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;61312:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;62418:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;59138:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29596:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;62530:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39933:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28699:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;61193:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6516:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;60832:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;57498:1632;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;62282:128;62343:16;62379:23;62372:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;62282:128;:::o;25675:305::-;25777:4;25829:25;25814:40;;;:11;:40;;;;:105;;;;25886:33;25871:48;;;:11;:48;;;;25814:105;:158;;;;25936:36;25960:11;25936:23;:36::i;:::-;25814:158;25794:178;;25675:305;;;:::o;26620:100::-;26674:13;26707:5;26700:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26620:100;:::o;28180:221::-;28256:7;28284:16;28292:7;28284;:16::i;:::-;28276:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;28369:15;:24;28385:7;28369:24;;;;;;;;;;;;;;;;;;;;;28362:31;;28180:221;;;:::o;27703:411::-;27784:13;27800:23;27815:7;27800:14;:23::i;:::-;27784:39;;27848:5;27842:11;;:2;:11;;;;27834:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;27942:5;27926:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;27951:37;27968:5;27975:12;:10;:12::i;:::-;27951:16;:37::i;:::-;27926:62;27904:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;28085:21;28094:2;28098:7;28085:8;:21::i;:::-;27773:341;27703:411;;:::o;43861:32::-;;;;:::o;39538:99::-;39590:7;39617:12;;39610:19;;39538:99;:::o;28930:339::-;29125:41;29144:12;:10;:12::i;:::-;29158:7;29125:18;:41::i;:::-;29117:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29233:28;29243:4;29249:2;29253:7;29233:9;:28::i;:::-;28930:339;;;:::o;60390:91::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;60464:9:::1;60457:4;:16;;;;60390:91:::0;:::o;61877:139::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61966:23:::1;61995:12;61966:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;61877:139:::0;:::o;60489:109::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;60578:12:::1;60568:7;:22;;;;;;;;;;;;:::i;:::-;;60489:109:::0;:::o;60262:120::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;60334:10:::1;60326:24;;:47;60351:21;60326:47;;;;;;;;;;;;;;;;;;;;;;;60318:56;;;::::0;::::1;;60262:120::o:0;44161:35::-;;;;;;;;;;;;;:::o;44052:30::-;;;;:::o;29340:185::-;29478:39;29495:4;29501:2;29505:7;29478:39;;;;;;;;;;;;:16;:39::i;:::-;29340:185;;;:::o;60705:119::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;60800:16:::1;60783:14;;:33;;;;;;;;;;;;;;;;;;60705:119:::0;:::o;43979:26::-;;;;;;;;;;;;;:::o;44089:29::-;;;;:::o;60606:91::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;60680:9:::1;60670:7;;:19;;;;;;;;;;;;;;;;;;60606:91:::0;:::o;60955:107::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61041:13:::1;61030:8;:24;;;;60955:107:::0;:::o;26314:239::-;26386:7;26406:13;26422:7;:16;26430:7;26422:16;;;;;;;;;;;;;;;;;;;;;26406:32;;26474:1;26457:19;;:5;:19;;;;26449:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26540:5;26533:12;;;26314:239;;;:::o;43747:68::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;62024:113::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;62117:12:::1;62102;;:27;;;;;;;;;;;;;;;;;;62024:113:::0;:::o;26044:208::-;26116:7;26161:1;26144:19;;:5;:19;;;;26136:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;26228:9;:16;26238:5;26228:16;;;;;;;;;;;;;;;;26221:23;;26044:208;;;:::o;6258:103::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6323:30:::1;6350:1;6323:18;:30::i;:::-;6258:103::o:0;61730:139::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61819:23:::1;61848:12;61819:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;61730:139:::0;:::o;62146:128::-;62207:16;62243:23;62236:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;62146:128;:::o;44247:28::-;;;;;;;;;;;;;:::o;44207:29::-;;;;;;;;;;;;;:::o;61070:115::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61169:8:::1;61148:18;;:29;;;;;;;;;;;;;;;;;;61070:115:::0;:::o;44012:33::-;;;;;;;;;;;;;:::o;5607:87::-;5653:7;5680:6;;;;;;;;;;;5673:13;;5607:87;:::o;43900:72::-;;;;;;;;;;;;;:::o;26789:104::-;26845:13;26878:7;26871:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26789:104;:::o;39728:99::-;39771:7;39798:21;:11;:19;:21::i;:::-;39791:28;;39728:99;:::o;28473:155::-;28568:52;28587:12;:10;:12::i;:::-;28601:8;28611;28568:18;:52::i;:::-;28473:155;;:::o;61312:111::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61402:13:::1;61388:11;;:27;;;;;;;;;;;;;;;;;;61312:111:::0;:::o;62418:104::-;62467:16;62503:11;62496:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;62418:104;:::o;59138:352::-;40473:1;40449:21;:19;:21::i;:::-;:25;40441:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;59243:12:::1;;;;;;;;;;;59229:26;;:10;:26;;;59221:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;59308:9;59304:179;59341:1;59326:7;:14;:16;;;;:::i;:::-;59321:1;:21;59304:179;;59363:33;59373:10;59385:7;59393:1;59385:10;;;;;;;;:::i;:::-;;;;;;;;59363:9;:33::i;:::-;59411:11;59428:7;59436:1;59428:10;;;;;;;;:::i;:::-;;;;;;;;59411:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59454:17;:15;:17::i;:::-;;59344:3;;;;;:::i;:::-;;;;59304:179;;;;59138:352:::0;:::o;29596:328::-;29771:41;29790:12;:10;:12::i;:::-;29804:7;29771:18;:41::i;:::-;29763:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;29877:39;29891:4;29897:2;29901:7;29910:5;29877:13;:39::i;:::-;29596:328;;;;:::o;62530:406::-;62612:13;62649:16;62657:7;62649;:16::i;:::-;62641:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;62755:28;62786:10;:8;:10::i;:::-;62755:41;;62844:1;62820:14;62814:28;:31;:114;;;;;;;;;;;;;;;;;62872:14;62888:18;:7;:16;:18::i;:::-;62908:13;62855:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;62814:114;62807:121;;;62530:406;;;:::o;39933:115::-;39985:7;40028:12;:10;:12::i;:::-;40012:13;:11;:13::i;:::-;:28;;;;:::i;:::-;40005:35;;39933:115;:::o;28699:164::-;28796:4;28820:18;:25;28839:5;28820:25;;;;;;;;;;;;;;;:35;28846:8;28820:35;;;;;;;;;;;;;;;;;;;;;;;;;28813:42;;28699:164;;;;:::o;61193:111::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;61283:13:::1;61269:11;;:27;;;;;;;;;;;;;;;;;;61193:111:::0;:::o;6516:201::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6625:1:::1;6605:22;;:8;:22;;;;6597:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6681:28;6700:8;6681:18;:28::i;:::-;6516:201:::0;:::o;60832:115::-;5838:12;:10;:12::i;:::-;5827:23;;:7;:5;:7::i;:::-;:23;;;5819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;60924:15:::1;60911:10;:28;;;;60832:115:::0;:::o;57498:1632::-;40473:1;40449:21;:19;:21::i;:::-;:25;40441:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;57606:4:::1;57595:15;;:7;;;;;;;;;;;:15;;;57587:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;57669:18;;;;;;;;;;;57651:36;;:7;:14;:36;;57643:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;57773:7;:14;57766:4;;:21;;;;:::i;:::-;57753:9;:34;57745:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;57871:4;57853:22;;:14;;;;;;;;;;;:22;;;57850:1273;;;57891:21;57914:35;57938:10;57914:23;:35::i;:::-;57891:58;;57964:21;57987:35;58011:10;57987:23;:35::i;:::-;57964:58;;58045:16;:36;;;;58065:16;58045:36;58037:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;58162:16;58159:307;;;58248:11;;;;;;;;;;;58206:53;;58230:7;:14;58206:21;58216:10;58206:9;:21::i;:::-;:38;;;;:::i;:::-;:53;;58198:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;58159:307;;;58318:16;58315:151;;;58404:11;;;;;;;;;;;58362:53;;58386:7;:14;58362:21;58372:10;58362:9;:21::i;:::-;:38;;;;:::i;:::-;:53;;58354:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;58315:151;58159:307;58486:9;58482:300;58519:1;58504:7;:14;:16;;;;:::i;:::-;58499:1;:21;58482:300;;58563:10;;58549:7;58557:1;58549:10;;;;;;;;:::i;:::-;;;;;;;;:24;;:50;;;;;58591:8;;58577:7;58585:1;58577:10;;;;;;;;:::i;:::-;;;;;;;;:22;;58549:50;58545:222;;;58623:33;58633:10;58645:7;58653:1;58645:10;;;;;;;;:::i;:::-;;;;;;;;58623:9;:33::i;:::-;58679:11;58696:7;58704:1;58696:10;;;;;;;;:::i;:::-;;;;;;;;58679:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;58730:17;:15;:17::i;:::-;;58545:222;58522:3;;;;;:::i;:::-;;;;58482:300;;;;57876:917;;57850:1273;;;58816:9;58812:300;58849:1;58834:7;:14;:16;;;;:::i;:::-;58829:1;:21;58812:300;;58893:10;;58879:7;58887:1;58879:10;;;;;;;;:::i;:::-;;;;;;;;:24;;:50;;;;;58921:8;;58907:7;58915:1;58907:10;;;;;;;;:::i;:::-;;;;;;;;:22;;58879:50;58875:222;;;58953:33;58963:10;58975:7;58983:1;58975:10;;;;;;;;:::i;:::-;;;;;;;;58953:9;:33::i;:::-;59009:11;59026:7;59034:1;59026:10;;;;;;;;:::i;:::-;;;;;;;;59009:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59060:17;:15;:17::i;:::-;;58875:222;58852:3;;;;;:::i;:::-;;;;58812:300;;;;57850:1273;57498:1632:::0;:::o;18414:157::-;18499:4;18538:25;18523:40;;;:11;:40;;;;18516:47;;18414:157;;;:::o;31434:127::-;31499:4;31551:1;31523:30;;:7;:16;31531:7;31523:16;;;;;;;;;;;;;;;;;;;;;:30;;;;31516:37;;31434:127;;;:::o;4331:98::-;4384:7;4411:10;4404:17;;4331:98;:::o;35580:174::-;35682:2;35655:15;:24;35671:7;35655:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;35738:7;35734:2;35700:46;;35709:23;35724:7;35709:14;:23::i;:::-;35700:46;;;;;;;;;;;;35580:174;;:::o;31728:348::-;31821:4;31846:16;31854:7;31846;:16::i;:::-;31838:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31922:13;31938:23;31953:7;31938:14;:23::i;:::-;31922:39;;31991:5;31980:16;;:7;:16;;;:52;;;;32000:32;32017:5;32024:7;32000:16;:32::i;:::-;31980:52;:87;;;;32060:7;32036:31;;:20;32048:7;32036:11;:20::i;:::-;:31;;;31980:87;31972:96;;;31728:348;;;;:::o;34837:625::-;34996:4;34969:31;;:23;34984:7;34969:14;:23::i;:::-;:31;;;34961:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;35075:1;35061:16;;:2;:16;;;;35053:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;35131:39;35152:4;35158:2;35162:7;35131:20;:39::i;:::-;35235:29;35252:1;35256:7;35235:8;:29::i;:::-;35296:1;35277:9;:15;35287:4;35277:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;35325:1;35308:9;:13;35318:2;35308:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;35356:2;35337:7;:16;35345:7;35337:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;35395:7;35391:2;35376:27;;35385:4;35376:27;;;;;;;;;;;;35416:38;35436:4;35442:2;35446:7;35416:19;:38::i;:::-;34837:625;;;:::o;6877:191::-;6951:16;6970:6;;;;;;;;;;;6951:25;;6996:8;6987:6;;:17;;;;;;;;;;;;;;;;;;7051:8;7020:40;;7041:8;7020:40;;;;;;;;;;;;6940:128;6877:191;:::o;935:114::-;1000:7;1027;:14;;;1020:21;;935:114;;;:::o;35896:315::-;36051:8;36042:17;;:5;:17;;;;36034:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;36138:8;36100:18;:25;36119:5;36100:25;;;;;;;;;;;;;;;:35;36126:8;36100:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36184:8;36162:41;;36177:5;36162:41;;;36194:8;36162:41;;;;;;:::i;:::-;;;;;;;;35896:315;;;:::o;32418:110::-;32494:26;32504:2;32508:7;32494:26;;;;;;;;;;;;:9;:26::i;:::-;32418:110;;:::o;40158:173::-;40205:7;40225:13;40241:21;:11;:19;:21::i;:::-;40225:37;;40275:23;:11;:21;:23::i;:::-;40318:5;40311:12;;;40158:173;:::o;30806:315::-;30963:28;30973:4;30979:2;30983:7;30963:9;:28::i;:::-;31010:48;31033:4;31039:2;31043:7;31052:5;31010:22;:48::i;:::-;31002:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;30806:315;;;;:::o;60146:108::-;60206:13;60239:7;60232:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;60146:108;:::o;1893:723::-;1949:13;2179:1;2170:5;:10;2166:53;;;2197:10;;;;;;;;;;;;;;;;;;;;;2166:53;2229:12;2244:5;2229:20;;2260:14;2285:78;2300:1;2292:4;:9;2285:78;;2318:8;;;;;:::i;:::-;;;;2349:2;2341:10;;;;;:::i;:::-;;;2285:78;;;2373:19;2405:6;2395:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2373:39;;2423:154;2439:1;2430:5;:10;2423:154;;2467:1;2457:11;;;;;:::i;:::-;;;2534:2;2526:5;:10;;;;:::i;:::-;2513:2;:24;;;;:::i;:::-;2500:39;;2483:6;2490;2483:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;2563:2;2554:11;;;;;:::i;:::-;;;2423:154;;;2601:6;2587:21;;;;;1893:723;;;;:::o;59498:307::-;59568:4;59585:6;59594:1;59585:10;;59606:169;59617:23;:30;;;;59613:1;:34;59606:169;;;59697:5;59667:35;;:23;59691:1;59667:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:35;;;59664:86;;;59730:4;59723:11;;;;;59664:86;59760:3;;;;;:::i;:::-;;;;59606:169;;;59792:5;59785:12;;;59498:307;;;;:::o;59813:::-;59883:4;59900:6;59909:1;59900:10;;59921:169;59932:23;:30;;;;59928:1;:34;59921:169;;;60012:5;59982:35;;:23;60006:1;59982:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:35;;;59979:86;;;60045:4;60038:11;;;;;59979:86;60075:3;;;;;:::i;:::-;;;;59921:169;;;60107:5;60100:12;;;59813:307;;;;:::o;38147:126::-;;;;:::o;38658:125::-;;;;:::o;32755:321::-;32885:18;32891:2;32895:7;32885:5;:18::i;:::-;32936:54;32967:1;32971:2;32975:7;32984:5;32936:22;:54::i;:::-;32914:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;32755:321;;;:::o;1057:127::-;1164:1;1146:7;:14;;;:19;;;;;;;;;;;1057:127;:::o;36776:799::-;36931:4;36952:15;:2;:13;;;:15::i;:::-;36948:620;;;37004:2;36988:36;;;37025:12;:10;:12::i;:::-;37039:4;37045:7;37054:5;36988:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36984:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37247:1;37230:6;:13;:18;37226:272;;;37273:60;;;;;;;;;;:::i;:::-;;;;;;;;37226:272;37448:6;37442:13;37433:6;37429:2;37425:15;37418:38;36984:529;37121:41;;;37111:51;;;:6;:51;;;;37104:58;;;;;36948:620;37552:4;37545:11;;36776:799;;;;;;;:::o;33412:439::-;33506:1;33492:16;;:2;:16;;;;33484:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;33565:16;33573:7;33565;:16::i;:::-;33564:17;33556:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;33627:45;33656:1;33660:2;33664:7;33627:20;:45::i;:::-;33702:1;33685:9;:13;33695:2;33685:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;33733:2;33714:7;:16;33722:7;33714:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;33778:7;33774:2;33753:33;;33770:1;33753:33;;;;;;;;;;;;33799:44;33827:1;33831:2;33835:7;33799:19;:44::i;:::-;33412:439;;:::o;8308:326::-;8368:4;8625:1;8603:7;:19;;;:23;8596:30;;8308: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;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:137::-;2308:5;2346:6;2333:20;2324:29;;2362:32;2388:5;2362:32;:::i;:::-;2263:137;;;;:::o;2406:141::-;2462:5;2493:6;2487:13;2478:22;;2509:32;2535:5;2509:32;:::i;:::-;2406:141;;;;:::o;2566:338::-;2621:5;2670:3;2663:4;2655:6;2651:17;2647:27;2637:122;;2678:79;;:::i;:::-;2637:122;2795:6;2782:20;2820:78;2894:3;2886:6;2879:4;2871:6;2867:17;2820:78;:::i;:::-;2811:87;;2627:277;2566:338;;;;:::o;2924:340::-;2980:5;3029:3;3022:4;3014:6;3010:17;3006:27;2996:122;;3037:79;;:::i;:::-;2996:122;3154:6;3141:20;3179:79;3254:3;3246:6;3239:4;3231:6;3227:17;3179:79;:::i;:::-;3170:88;;2986:278;2924:340;;;;:::o;3270:139::-;3316:5;3354:6;3341:20;3332:29;;3370:33;3397:5;3370:33;:::i;:::-;3270:139;;;;:::o;3415:135::-;3459:5;3497:6;3484:20;3475:29;;3513:31;3538:5;3513:31;:::i;:::-;3415:135;;;;:::o;3556:329::-;3615:6;3664:2;3652:9;3643:7;3639:23;3635:32;3632:119;;;3670:79;;:::i;:::-;3632:119;3790:1;3815:53;3860:7;3851:6;3840:9;3836:22;3815:53;:::i;:::-;3805:63;;3761:117;3556:329;;;;:::o;3891:474::-;3959:6;3967;4016:2;4004:9;3995:7;3991:23;3987:32;3984:119;;;4022:79;;:::i;:::-;3984:119;4142:1;4167:53;4212:7;4203:6;4192:9;4188:22;4167:53;:::i;:::-;4157:63;;4113:117;4269:2;4295:53;4340:7;4331:6;4320:9;4316:22;4295:53;:::i;:::-;4285:63;;4240:118;3891:474;;;;;:::o;4371:619::-;4448:6;4456;4464;4513:2;4501:9;4492:7;4488:23;4484:32;4481:119;;;4519:79;;:::i;:::-;4481:119;4639:1;4664:53;4709:7;4700:6;4689:9;4685:22;4664:53;:::i;:::-;4654:63;;4610:117;4766:2;4792:53;4837:7;4828:6;4817:9;4813:22;4792:53;:::i;:::-;4782:63;;4737:118;4894:2;4920:53;4965:7;4956:6;4945:9;4941:22;4920:53;:::i;:::-;4910:63;;4865:118;4371:619;;;;;:::o;4996:943::-;5091:6;5099;5107;5115;5164:3;5152:9;5143:7;5139:23;5135:33;5132:120;;;5171:79;;:::i;:::-;5132:120;5291:1;5316:53;5361:7;5352:6;5341:9;5337:22;5316:53;:::i;:::-;5306:63;;5262:117;5418:2;5444:53;5489:7;5480:6;5469:9;5465:22;5444:53;:::i;:::-;5434:63;;5389:118;5546:2;5572:53;5617:7;5608:6;5597:9;5593:22;5572:53;:::i;:::-;5562:63;;5517:118;5702:2;5691:9;5687:18;5674:32;5733:18;5725:6;5722:30;5719:117;;;5755:79;;:::i;:::-;5719:117;5860:62;5914:7;5905:6;5894:9;5890:22;5860:62;:::i;:::-;5850:72;;5645:287;4996:943;;;;;;;:::o;5945:468::-;6010:6;6018;6067:2;6055:9;6046:7;6042:23;6038:32;6035:119;;;6073:79;;:::i;:::-;6035:119;6193:1;6218:53;6263:7;6254:6;6243:9;6239:22;6218:53;:::i;:::-;6208:63;;6164:117;6320:2;6346:50;6388:7;6379:6;6368:9;6364:22;6346:50;:::i;:::-;6336:60;;6291:115;5945:468;;;;;:::o;6419:474::-;6487:6;6495;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:53;6740:7;6731:6;6720:9;6716:22;6695:53;:::i;:::-;6685:63;;6641:117;6797:2;6823:53;6868:7;6859:6;6848:9;6844:22;6823:53;:::i;:::-;6813:63;;6768:118;6419:474;;;;;:::o;6899:539::-;6983:6;7032:2;7020:9;7011:7;7007:23;7003:32;7000:119;;;7038:79;;:::i;:::-;7000:119;7186:1;7175:9;7171:17;7158:31;7216:18;7208:6;7205:30;7202:117;;;7238:79;;:::i;:::-;7202:117;7343:78;7413:7;7404:6;7393:9;7389:22;7343:78;:::i;:::-;7333:88;;7129:302;6899:539;;;;:::o;7444:323::-;7500:6;7549:2;7537:9;7528:7;7524:23;7520:32;7517:119;;;7555:79;;:::i;:::-;7517:119;7675:1;7700:50;7742:7;7733:6;7722:9;7718:22;7700:50;:::i;:::-;7690:60;;7646:114;7444:323;;;;:::o;7773:327::-;7831:6;7880:2;7868:9;7859:7;7855:23;7851:32;7848:119;;;7886:79;;:::i;:::-;7848:119;8006:1;8031:52;8075:7;8066:6;8055:9;8051:22;8031:52;:::i;:::-;8021:62;;7977:116;7773:327;;;;:::o;8106:349::-;8175:6;8224:2;8212:9;8203:7;8199:23;8195:32;8192:119;;;8230:79;;:::i;:::-;8192:119;8350:1;8375:63;8430:7;8421:6;8410:9;8406:22;8375:63;:::i;:::-;8365:73;;8321:127;8106:349;;;;:::o;8461:509::-;8530:6;8579:2;8567:9;8558:7;8554:23;8550:32;8547:119;;;8585:79;;:::i;:::-;8547:119;8733:1;8722:9;8718:17;8705:31;8763:18;8755:6;8752:30;8749:117;;;8785:79;;:::i;:::-;8749:117;8890:63;8945:7;8936:6;8925:9;8921:22;8890:63;:::i;:::-;8880:73;;8676:287;8461:509;;;;:::o;8976:329::-;9035:6;9084:2;9072:9;9063:7;9059:23;9055:32;9052:119;;;9090:79;;:::i;:::-;9052:119;9210:1;9235:53;9280:7;9271:6;9260:9;9256:22;9235:53;:::i;:::-;9225:63;;9181:117;8976:329;;;;:::o;9311:325::-;9368:6;9417:2;9405:9;9396:7;9392:23;9388:32;9385:119;;;9423:79;;:::i;:::-;9385:119;9543:1;9568:51;9611:7;9602:6;9591:9;9587:22;9568:51;:::i;:::-;9558:61;;9514:115;9311:325;;;;:::o;9642:179::-;9711:10;9732:46;9774:3;9766:6;9732:46;:::i;:::-;9810:4;9805:3;9801:14;9787:28;;9642:179;;;;:::o;9827:::-;9896:10;9917:46;9959:3;9951:6;9917:46;:::i;:::-;9995:4;9990:3;9986:14;9972:28;;9827:179;;;;:::o;10012:108::-;10089:24;10107:5;10089:24;:::i;:::-;10084:3;10077:37;10012:108;;:::o;10126:118::-;10213:24;10231:5;10213:24;:::i;:::-;10208:3;10201:37;10126:118;;:::o;10280:732::-;10399:3;10428:54;10476:5;10428:54;:::i;:::-;10498:86;10577:6;10572:3;10498:86;:::i;:::-;10491:93;;10608:56;10658:5;10608:56;:::i;:::-;10687:7;10718:1;10703:284;10728:6;10725:1;10722:13;10703:284;;;10804:6;10798:13;10831:63;10890:3;10875:13;10831:63;:::i;:::-;10824:70;;10917:60;10970:6;10917:60;:::i;:::-;10907:70;;10763:224;10750:1;10747;10743:9;10738:14;;10703:284;;;10707:14;11003:3;10996:10;;10404:608;;;10280:732;;;;:::o;11048:::-;11167:3;11196:54;11244:5;11196:54;:::i;:::-;11266:86;11345:6;11340:3;11266:86;:::i;:::-;11259:93;;11376:56;11426:5;11376:56;:::i;:::-;11455:7;11486:1;11471:284;11496:6;11493:1;11490:13;11471:284;;;11572:6;11566:13;11599:63;11658:3;11643:13;11599:63;:::i;:::-;11592:70;;11685:60;11738:6;11685:60;:::i;:::-;11675:70;;11531:224;11518:1;11515;11511:9;11506:14;;11471:284;;;11475:14;11771:3;11764:10;;11172:608;;;11048:732;;;;:::o;11786:109::-;11867:21;11882:5;11867:21;:::i;:::-;11862:3;11855:34;11786:109;;:::o;11901:360::-;11987:3;12015:38;12047:5;12015:38;:::i;:::-;12069:70;12132:6;12127:3;12069:70;:::i;:::-;12062:77;;12148:52;12193:6;12188:3;12181:4;12174:5;12170:16;12148:52;:::i;:::-;12225:29;12247:6;12225:29;:::i;:::-;12220:3;12216:39;12209:46;;11991:270;11901:360;;;;:::o;12267:364::-;12355:3;12383:39;12416:5;12383:39;:::i;:::-;12438:71;12502:6;12497:3;12438:71;:::i;:::-;12431:78;;12518:52;12563:6;12558:3;12551:4;12544:5;12540:16;12518:52;:::i;:::-;12595:29;12617:6;12595:29;:::i;:::-;12590:3;12586:39;12579:46;;12359:272;12267:364;;;;:::o;12637:377::-;12743:3;12771:39;12804:5;12771:39;:::i;:::-;12826:89;12908:6;12903:3;12826:89;:::i;:::-;12819:96;;12924:52;12969:6;12964:3;12957:4;12950:5;12946:16;12924:52;:::i;:::-;13001:6;12996:3;12992:16;12985:23;;12747:267;12637:377;;;;:::o;13044:845::-;13147:3;13184:5;13178:12;13213:36;13239:9;13213:36;:::i;:::-;13265:89;13347:6;13342:3;13265:89;:::i;:::-;13258:96;;13385:1;13374:9;13370:17;13401:1;13396:137;;;;13547:1;13542:341;;;;13363:520;;13396:137;13480:4;13476:9;13465;13461:25;13456:3;13449:38;13516:6;13511:3;13507:16;13500:23;;13396:137;;13542:341;13609:38;13641:5;13609:38;:::i;:::-;13669:1;13683:154;13697:6;13694:1;13691:13;13683:154;;;13771:7;13765:14;13761:1;13756:3;13752:11;13745:35;13821:1;13812:7;13808:15;13797:26;;13719:4;13716:1;13712:12;13707:17;;13683:154;;;13866:6;13861:3;13857:16;13850:23;;13549:334;;13363:520;;13151:738;;13044:845;;;;:::o;13895:366::-;14037:3;14058:67;14122:2;14117:3;14058:67;:::i;:::-;14051:74;;14134:93;14223:3;14134:93;:::i;:::-;14252:2;14247:3;14243:12;14236:19;;13895:366;;;:::o;14267:::-;14409:3;14430:67;14494:2;14489:3;14430:67;:::i;:::-;14423:74;;14506:93;14595:3;14506:93;:::i;:::-;14624:2;14619:3;14615:12;14608:19;;14267:366;;;:::o;14639:::-;14781:3;14802:67;14866:2;14861:3;14802:67;:::i;:::-;14795:74;;14878:93;14967:3;14878:93;:::i;:::-;14996:2;14991:3;14987:12;14980:19;;14639:366;;;:::o;15011:::-;15153:3;15174:67;15238:2;15233:3;15174:67;:::i;:::-;15167:74;;15250:93;15339:3;15250:93;:::i;:::-;15368:2;15363:3;15359:12;15352:19;;15011:366;;;:::o;15383:::-;15525:3;15546:67;15610:2;15605:3;15546:67;:::i;:::-;15539:74;;15622:93;15711:3;15622:93;:::i;:::-;15740:2;15735:3;15731:12;15724:19;;15383:366;;;:::o;15755:::-;15897:3;15918:67;15982:2;15977:3;15918:67;:::i;:::-;15911:74;;15994:93;16083:3;15994:93;:::i;:::-;16112:2;16107:3;16103:12;16096:19;;15755:366;;;:::o;16127:::-;16269:3;16290:67;16354:2;16349:3;16290:67;:::i;:::-;16283:74;;16366:93;16455:3;16366:93;:::i;:::-;16484:2;16479:3;16475:12;16468:19;;16127:366;;;:::o;16499:::-;16641:3;16662:67;16726:2;16721:3;16662:67;:::i;:::-;16655:74;;16738:93;16827:3;16738:93;:::i;:::-;16856:2;16851:3;16847:12;16840:19;;16499:366;;;:::o;16871:::-;17013:3;17034:67;17098:2;17093:3;17034:67;:::i;:::-;17027:74;;17110:93;17199:3;17110:93;:::i;:::-;17228:2;17223:3;17219:12;17212:19;;16871:366;;;:::o;17243:::-;17385:3;17406:67;17470:2;17465:3;17406:67;:::i;:::-;17399:74;;17482:93;17571:3;17482:93;:::i;:::-;17600:2;17595:3;17591:12;17584:19;;17243:366;;;:::o;17615:::-;17757:3;17778:67;17842:2;17837:3;17778:67;:::i;:::-;17771:74;;17854:93;17943:3;17854:93;:::i;:::-;17972:2;17967:3;17963:12;17956:19;;17615:366;;;:::o;17987:::-;18129:3;18150:67;18214:2;18209:3;18150:67;:::i;:::-;18143:74;;18226:93;18315:3;18226:93;:::i;:::-;18344:2;18339:3;18335:12;18328:19;;17987:366;;;:::o;18359:::-;18501:3;18522:67;18586:2;18581:3;18522:67;:::i;:::-;18515:74;;18598:93;18687:3;18598:93;:::i;:::-;18716:2;18711:3;18707:12;18700:19;;18359:366;;;:::o;18731:::-;18873:3;18894:67;18958:2;18953:3;18894:67;:::i;:::-;18887:74;;18970:93;19059:3;18970:93;:::i;:::-;19088:2;19083:3;19079:12;19072:19;;18731:366;;;:::o;19103:::-;19245:3;19266:67;19330:2;19325:3;19266:67;:::i;:::-;19259:74;;19342:93;19431:3;19342:93;:::i;:::-;19460:2;19455:3;19451:12;19444:19;;19103:366;;;:::o;19475:::-;19617:3;19638:67;19702:2;19697:3;19638:67;:::i;:::-;19631:74;;19714:93;19803:3;19714:93;:::i;:::-;19832:2;19827:3;19823:12;19816:19;;19475:366;;;:::o;19847:::-;19989:3;20010:67;20074:2;20069:3;20010:67;:::i;:::-;20003:74;;20086:93;20175:3;20086:93;:::i;:::-;20204:2;20199:3;20195:12;20188:19;;19847:366;;;:::o;20219:::-;20361:3;20382:67;20446:2;20441:3;20382:67;:::i;:::-;20375:74;;20458:93;20547:3;20458:93;:::i;:::-;20576:2;20571:3;20567:12;20560:19;;20219:366;;;:::o;20591:::-;20733:3;20754:67;20818:2;20813:3;20754:67;:::i;:::-;20747:74;;20830:93;20919:3;20830:93;:::i;:::-;20948:2;20943:3;20939:12;20932:19;;20591:366;;;:::o;20963:::-;21105:3;21126:67;21190:2;21185:3;21126:67;:::i;:::-;21119:74;;21202:93;21291:3;21202:93;:::i;:::-;21320:2;21315:3;21311:12;21304:19;;20963:366;;;:::o;21335:::-;21477:3;21498:67;21562:2;21557:3;21498:67;:::i;:::-;21491:74;;21574:93;21663:3;21574:93;:::i;:::-;21692:2;21687:3;21683:12;21676:19;;21335:366;;;:::o;21707:::-;21849:3;21870:67;21934:2;21929:3;21870:67;:::i;:::-;21863:74;;21946:93;22035:3;21946:93;:::i;:::-;22064:2;22059:3;22055:12;22048:19;;21707:366;;;:::o;22079:::-;22221:3;22242:67;22306:2;22301:3;22242:67;:::i;:::-;22235:74;;22318:93;22407:3;22318:93;:::i;:::-;22436:2;22431:3;22427:12;22420:19;;22079:366;;;:::o;22451:108::-;22528:24;22546:5;22528:24;:::i;:::-;22523:3;22516:37;22451:108;;:::o;22565:118::-;22652:24;22670:5;22652:24;:::i;:::-;22647:3;22640:37;22565:118;;:::o;22689:112::-;22772:22;22788:5;22772:22;:::i;:::-;22767:3;22760:35;22689:112;;:::o;22807:589::-;23032:3;23054:95;23145:3;23136:6;23054:95;:::i;:::-;23047:102;;23166:95;23257:3;23248:6;23166:95;:::i;:::-;23159:102;;23278:92;23366:3;23357:6;23278:92;:::i;:::-;23271:99;;23387:3;23380:10;;22807:589;;;;;;:::o;23402:222::-;23495:4;23533:2;23522:9;23518:18;23510:26;;23546:71;23614:1;23603:9;23599:17;23590:6;23546:71;:::i;:::-;23402:222;;;;:::o;23630:640::-;23825:4;23863:3;23852:9;23848:19;23840:27;;23877:71;23945:1;23934:9;23930:17;23921:6;23877:71;:::i;:::-;23958:72;24026:2;24015:9;24011:18;24002:6;23958:72;:::i;:::-;24040;24108:2;24097:9;24093:18;24084:6;24040:72;:::i;:::-;24159:9;24153:4;24149:20;24144:2;24133:9;24129:18;24122:48;24187:76;24258:4;24249:6;24187:76;:::i;:::-;24179:84;;23630:640;;;;;;;:::o;24276:373::-;24419:4;24457:2;24446:9;24442:18;24434:26;;24506:9;24500:4;24496:20;24492:1;24481:9;24477:17;24470:47;24534:108;24637:4;24628:6;24534:108;:::i;:::-;24526:116;;24276:373;;;;:::o;24655:::-;24798:4;24836:2;24825:9;24821:18;24813:26;;24885:9;24879:4;24875:20;24871:1;24860:9;24856:17;24849:47;24913:108;25016:4;25007:6;24913:108;:::i;:::-;24905:116;;24655:373;;;;:::o;25034:210::-;25121:4;25159:2;25148:9;25144:18;25136:26;;25172:65;25234:1;25223:9;25219:17;25210:6;25172:65;:::i;:::-;25034:210;;;;:::o;25250:313::-;25363:4;25401:2;25390:9;25386:18;25378:26;;25450:9;25444:4;25440:20;25436:1;25425:9;25421:17;25414:47;25478:78;25551:4;25542:6;25478:78;:::i;:::-;25470:86;;25250:313;;;;:::o;25569:419::-;25735:4;25773:2;25762:9;25758:18;25750:26;;25822:9;25816:4;25812:20;25808:1;25797:9;25793:17;25786:47;25850:131;25976:4;25850:131;:::i;:::-;25842:139;;25569:419;;;:::o;25994:::-;26160:4;26198:2;26187:9;26183:18;26175:26;;26247:9;26241:4;26237:20;26233:1;26222:9;26218:17;26211:47;26275:131;26401:4;26275:131;:::i;:::-;26267:139;;25994:419;;;:::o;26419:::-;26585:4;26623:2;26612:9;26608:18;26600:26;;26672:9;26666:4;26662:20;26658:1;26647:9;26643:17;26636:47;26700:131;26826:4;26700:131;:::i;:::-;26692:139;;26419:419;;;:::o;26844:::-;27010:4;27048:2;27037:9;27033:18;27025:26;;27097:9;27091:4;27087:20;27083:1;27072:9;27068:17;27061:47;27125:131;27251:4;27125:131;:::i;:::-;27117:139;;26844:419;;;:::o;27269:::-;27435:4;27473:2;27462:9;27458:18;27450:26;;27522:9;27516:4;27512:20;27508:1;27497:9;27493:17;27486:47;27550:131;27676:4;27550:131;:::i;:::-;27542:139;;27269:419;;;:::o;27694:::-;27860:4;27898:2;27887:9;27883:18;27875:26;;27947:9;27941:4;27937:20;27933:1;27922:9;27918:17;27911:47;27975:131;28101:4;27975:131;:::i;:::-;27967:139;;27694:419;;;:::o;28119:::-;28285:4;28323:2;28312:9;28308:18;28300:26;;28372:9;28366:4;28362:20;28358:1;28347:9;28343:17;28336:47;28400:131;28526:4;28400:131;:::i;:::-;28392:139;;28119:419;;;:::o;28544:::-;28710:4;28748:2;28737:9;28733:18;28725:26;;28797:9;28791:4;28787:20;28783:1;28772:9;28768:17;28761:47;28825:131;28951:4;28825:131;:::i;:::-;28817:139;;28544:419;;;:::o;28969:::-;29135:4;29173:2;29162:9;29158:18;29150:26;;29222:9;29216:4;29212:20;29208:1;29197:9;29193:17;29186:47;29250:131;29376:4;29250:131;:::i;:::-;29242:139;;28969:419;;;:::o;29394:::-;29560:4;29598:2;29587:9;29583:18;29575:26;;29647:9;29641:4;29637:20;29633:1;29622:9;29618:17;29611:47;29675:131;29801:4;29675:131;:::i;:::-;29667:139;;29394:419;;;:::o;29819:::-;29985:4;30023:2;30012:9;30008:18;30000:26;;30072:9;30066:4;30062:20;30058:1;30047:9;30043:17;30036:47;30100:131;30226:4;30100:131;:::i;:::-;30092:139;;29819:419;;;:::o;30244:::-;30410:4;30448:2;30437:9;30433:18;30425:26;;30497:9;30491:4;30487:20;30483:1;30472:9;30468:17;30461:47;30525:131;30651:4;30525:131;:::i;:::-;30517:139;;30244:419;;;:::o;30669:::-;30835:4;30873:2;30862:9;30858:18;30850:26;;30922:9;30916:4;30912:20;30908:1;30897:9;30893:17;30886:47;30950:131;31076:4;30950:131;:::i;:::-;30942:139;;30669:419;;;:::o;31094:::-;31260:4;31298:2;31287:9;31283:18;31275:26;;31347:9;31341:4;31337:20;31333:1;31322:9;31318:17;31311:47;31375:131;31501:4;31375:131;:::i;:::-;31367:139;;31094:419;;;:::o;31519:::-;31685:4;31723:2;31712:9;31708:18;31700:26;;31772:9;31766:4;31762:20;31758:1;31747:9;31743:17;31736:47;31800:131;31926:4;31800:131;:::i;:::-;31792:139;;31519:419;;;:::o;31944:::-;32110:4;32148:2;32137:9;32133:18;32125:26;;32197:9;32191:4;32187:20;32183:1;32172:9;32168:17;32161:47;32225:131;32351:4;32225:131;:::i;:::-;32217:139;;31944:419;;;:::o;32369:::-;32535:4;32573:2;32562:9;32558:18;32550:26;;32622:9;32616:4;32612:20;32608:1;32597:9;32593:17;32586:47;32650:131;32776:4;32650:131;:::i;:::-;32642:139;;32369:419;;;:::o;32794:::-;32960:4;32998:2;32987:9;32983:18;32975:26;;33047:9;33041:4;33037:20;33033:1;33022:9;33018:17;33011:47;33075:131;33201:4;33075:131;:::i;:::-;33067:139;;32794:419;;;:::o;33219:::-;33385:4;33423:2;33412:9;33408:18;33400:26;;33472:9;33466:4;33462:20;33458:1;33447:9;33443:17;33436:47;33500:131;33626:4;33500:131;:::i;:::-;33492:139;;33219:419;;;:::o;33644:::-;33810:4;33848:2;33837:9;33833:18;33825:26;;33897:9;33891:4;33887:20;33883:1;33872:9;33868:17;33861:47;33925:131;34051:4;33925:131;:::i;:::-;33917:139;;33644:419;;;:::o;34069:::-;34235:4;34273:2;34262:9;34258:18;34250:26;;34322:9;34316:4;34312:20;34308:1;34297:9;34293:17;34286:47;34350:131;34476:4;34350:131;:::i;:::-;34342:139;;34069:419;;;:::o;34494:::-;34660:4;34698:2;34687:9;34683:18;34675:26;;34747:9;34741:4;34737:20;34733:1;34722:9;34718:17;34711:47;34775:131;34901:4;34775:131;:::i;:::-;34767:139;;34494:419;;;:::o;34919:::-;35085:4;35123:2;35112:9;35108:18;35100:26;;35172:9;35166:4;35162:20;35158:1;35147:9;35143:17;35136:47;35200:131;35326:4;35200:131;:::i;:::-;35192:139;;34919:419;;;:::o;35344:222::-;35437:4;35475:2;35464:9;35460:18;35452:26;;35488:71;35556:1;35545:9;35541:17;35532:6;35488:71;:::i;:::-;35344:222;;;;:::o;35572:214::-;35661:4;35699:2;35688:9;35684:18;35676:26;;35712:67;35776:1;35765:9;35761:17;35752:6;35712:67;:::i;:::-;35572:214;;;;:::o;35792:129::-;35826:6;35853:20;;:::i;:::-;35843:30;;35882:33;35910:4;35902:6;35882:33;:::i;:::-;35792:129;;;:::o;35927:75::-;35960:6;35993:2;35987:9;35977:19;;35927:75;:::o;36008:311::-;36085:4;36175:18;36167:6;36164:30;36161:56;;;36197:18;;:::i;:::-;36161:56;36247:4;36239:6;36235:17;36227:25;;36307:4;36301;36297:15;36289:23;;36008:311;;;:::o;36325:307::-;36386:4;36476:18;36468:6;36465:30;36462:56;;;36498:18;;:::i;:::-;36462:56;36536:29;36558:6;36536:29;:::i;:::-;36528:37;;36620:4;36614;36610:15;36602:23;;36325:307;;;:::o;36638:308::-;36700:4;36790:18;36782:6;36779:30;36776:56;;;36812:18;;:::i;:::-;36776:56;36850:29;36872:6;36850:29;:::i;:::-;36842:37;;36934:4;36928;36924:15;36916:23;;36638:308;;;:::o;36952:132::-;37019:4;37042:3;37034:11;;37072:4;37067:3;37063:14;37055:22;;36952:132;;;:::o;37090:::-;37157:4;37180:3;37172:11;;37210:4;37205:3;37201:14;37193:22;;37090:132;;;:::o;37228:141::-;37277:4;37300:3;37292:11;;37323:3;37320:1;37313:14;37357:4;37354:1;37344:18;37336:26;;37228:141;;;:::o;37375:114::-;37442:6;37476:5;37470:12;37460:22;;37375:114;;;:::o;37495:::-;37562:6;37596:5;37590:12;37580:22;;37495:114;;;:::o;37615:98::-;37666:6;37700:5;37694:12;37684:22;;37615:98;;;:::o;37719:99::-;37771:6;37805:5;37799:12;37789:22;;37719:99;;;:::o;37824:113::-;37894:4;37926;37921:3;37917:14;37909:22;;37824:113;;;:::o;37943:::-;38013:4;38045;38040:3;38036:14;38028:22;;37943:113;;;:::o;38062:184::-;38161:11;38195:6;38190:3;38183:19;38235:4;38230:3;38226:14;38211:29;;38062:184;;;;:::o;38252:::-;38351:11;38385:6;38380:3;38373:19;38425:4;38420:3;38416:14;38401:29;;38252:184;;;;:::o;38442:168::-;38525:11;38559:6;38554:3;38547:19;38599:4;38594:3;38590:14;38575:29;;38442:168;;;;:::o;38616:169::-;38700:11;38734:6;38729:3;38722:19;38774:4;38769:3;38765:14;38750:29;;38616:169;;;;:::o;38791:148::-;38893:11;38930:3;38915:18;;38791:148;;;;:::o;38945:305::-;38985:3;39004:20;39022:1;39004:20;:::i;:::-;38999:25;;39038:20;39056:1;39038:20;:::i;:::-;39033:25;;39192:1;39124:66;39120:74;39117:1;39114:81;39111:107;;;39198:18;;:::i;:::-;39111:107;39242:1;39239;39235:9;39228:16;;38945:305;;;;:::o;39256:185::-;39296:1;39313:20;39331:1;39313:20;:::i;:::-;39308:25;;39347:20;39365:1;39347:20;:::i;:::-;39342:25;;39386:1;39376:35;;39391:18;;:::i;:::-;39376:35;39433:1;39430;39426:9;39421:14;;39256:185;;;;:::o;39447:348::-;39487:7;39510:20;39528:1;39510:20;:::i;:::-;39505:25;;39544:20;39562:1;39544:20;:::i;:::-;39539:25;;39732:1;39664:66;39660:74;39657:1;39654:81;39649:1;39642:9;39635:17;39631:105;39628:131;;;39739:18;;:::i;:::-;39628:131;39787:1;39784;39780:9;39769:20;;39447:348;;;;:::o;39801:191::-;39841:4;39861:20;39879:1;39861:20;:::i;:::-;39856:25;;39895:20;39913:1;39895:20;:::i;:::-;39890:25;;39934:1;39931;39928:8;39925:34;;;39939:18;;:::i;:::-;39925:34;39984:1;39981;39977:9;39969:17;;39801:191;;;;:::o;39998:96::-;40035:7;40064:24;40082:5;40064:24;:::i;:::-;40053:35;;39998:96;;;:::o;40100:90::-;40134:7;40177:5;40170:13;40163:21;40152:32;;40100:90;;;:::o;40196:149::-;40232:7;40272:66;40265:5;40261:78;40250:89;;40196:149;;;:::o;40351:126::-;40388:7;40428:42;40421:5;40417:54;40406:65;;40351:126;;;:::o;40483:77::-;40520:7;40549:5;40538:16;;40483:77;;;:::o;40566:86::-;40601:7;40641:4;40634:5;40630:16;40619:27;;40566:86;;;:::o;40658:154::-;40742:6;40737:3;40732;40719:30;40804:1;40795:6;40790:3;40786:16;40779:27;40658:154;;;:::o;40818:307::-;40886:1;40896:113;40910:6;40907:1;40904:13;40896:113;;;40995:1;40990:3;40986:11;40980:18;40976:1;40971:3;40967:11;40960:39;40932:2;40929:1;40925:10;40920:15;;40896:113;;;41027:6;41024:1;41021:13;41018:101;;;41107:1;41098:6;41093:3;41089:16;41082:27;41018:101;40867:258;40818:307;;;:::o;41131:320::-;41175:6;41212:1;41206:4;41202:12;41192:22;;41259:1;41253:4;41249:12;41280:18;41270:81;;41336:4;41328:6;41324:17;41314:27;;41270:81;41398:2;41390:6;41387:14;41367:18;41364:38;41361:84;;;41417:18;;:::i;:::-;41361:84;41182:269;41131:320;;;:::o;41457:281::-;41540:27;41562:4;41540:27;:::i;:::-;41532:6;41528:40;41670:6;41658:10;41655:22;41634:18;41622:10;41619:34;41616:62;41613:88;;;41681:18;;:::i;:::-;41613:88;41721:10;41717:2;41710:22;41500:238;41457:281;;:::o;41744:233::-;41783:3;41806:24;41824:5;41806:24;:::i;:::-;41797:33;;41852:66;41845:5;41842:77;41839:103;;;41922:18;;:::i;:::-;41839:103;41969:1;41962:5;41958:13;41951:20;;41744:233;;;:::o;41983:176::-;42015:1;42032:20;42050:1;42032:20;:::i;:::-;42027:25;;42066:20;42084:1;42066:20;:::i;:::-;42061:25;;42105:1;42095:35;;42110:18;;:::i;:::-;42095:35;42151:1;42148;42144:9;42139:14;;41983:176;;;;:::o;42165:180::-;42213:77;42210:1;42203:88;42310:4;42307:1;42300:15;42334:4;42331:1;42324:15;42351:180;42399:77;42396:1;42389:88;42496:4;42493:1;42486:15;42520:4;42517:1;42510:15;42537:180;42585:77;42582:1;42575:88;42682:4;42679:1;42672:15;42706:4;42703:1;42696:15;42723:180;42771:77;42768:1;42761:88;42868:4;42865:1;42858:15;42892:4;42889:1;42882:15;42909:180;42957:77;42954:1;42947:88;43054:4;43051:1;43044:15;43078:4;43075:1;43068:15;43095:117;43204:1;43201;43194:12;43218:117;43327:1;43324;43317:12;43341:117;43450:1;43447;43440:12;43464:117;43573:1;43570;43563:12;43587:117;43696:1;43693;43686:12;43710:102;43751:6;43802:2;43798:7;43793:2;43786:5;43782:14;43778:28;43768:38;;43710:102;;;:::o;43818:237::-;43958:34;43954:1;43946:6;43942:14;43935:58;44027:20;44022:2;44014:6;44010:15;44003:45;43818:237;:::o;44061:229::-;44201:34;44197:1;44189:6;44185:14;44178:58;44270:12;44265:2;44257:6;44253:15;44246:37;44061:229;:::o;44296:225::-;44436:34;44432:1;44424:6;44420:14;44413:58;44505:8;44500:2;44492:6;44488:15;44481:33;44296:225;:::o;44527:224::-;44667:34;44663:1;44655:6;44651:14;44644:58;44736:7;44731:2;44723:6;44719:15;44712:32;44527:224;:::o;44757:178::-;44897:30;44893:1;44885:6;44881:14;44874:54;44757:178;:::o;44941:223::-;45081:34;45077:1;45069:6;45065:14;45058:58;45150:6;45145:2;45137:6;45133:15;45126:31;44941:223;:::o;45170:175::-;45310:27;45306:1;45298:6;45294:14;45287:51;45170:175;:::o;45351:174::-;45491:26;45487:1;45479:6;45475:14;45468:50;45351:174;:::o;45531:231::-;45671:34;45667:1;45659:6;45655:14;45648:58;45740:14;45735:2;45727:6;45723:15;45716:39;45531:231;:::o;45768:243::-;45908:34;45904:1;45896:6;45892:14;45885:58;45977:26;45972:2;45964:6;45960:15;45953:51;45768:243;:::o;46017:229::-;46157:34;46153:1;46145:6;46141:14;46134:58;46226:12;46221:2;46213:6;46209:15;46202:37;46017:229;:::o;46252:228::-;46392:34;46388:1;46380:6;46376:14;46369:58;46461:11;46456:2;46448:6;46444:15;46437:36;46252:228;:::o;46486:182::-;46626:34;46622:1;46614:6;46610:14;46603:58;46486:182;:::o;46674:180::-;46814:32;46810:1;46802:6;46798:14;46791:56;46674:180;:::o;46860:231::-;47000:34;46996:1;46988:6;46984:14;46977:58;47069:14;47064:2;47056:6;47052:15;47045:39;46860:231;:::o;47097:182::-;47237:34;47233:1;47225:6;47221:14;47214:58;47097:182;:::o;47285:167::-;47425:19;47421:1;47413:6;47409:14;47402:43;47285:167;:::o;47458:234::-;47598:34;47594:1;47586:6;47582:14;47575:58;47667:17;47662:2;47654:6;47650:15;47643:42;47458:234;:::o;47698:220::-;47838:34;47834:1;47826:6;47822:14;47815:58;47907:3;47902:2;47894:6;47890:15;47883:28;47698:220;:::o;47924:236::-;48064:34;48060:1;48052:6;48048:14;48041:58;48133:19;48128:2;48120:6;48116:15;48109:44;47924:236;:::o;48166:243::-;48306:34;48302:1;48294:6;48290:14;48283:58;48375:26;48370:2;48362:6;48358:15;48351:51;48166:243;:::o;48415:224::-;48555:34;48551:1;48543:6;48539:14;48532:58;48624:7;48619:2;48611:6;48607:15;48600:32;48415:224;:::o;48645:181::-;48785:33;48781:1;48773:6;48769:14;48762:57;48645:181;:::o;48832:122::-;48905:24;48923:5;48905:24;:::i;:::-;48898:5;48895:35;48885:63;;48944:1;48941;48934:12;48885:63;48832:122;:::o;48960:116::-;49030:21;49045:5;49030:21;:::i;:::-;49023:5;49020:32;49010:60;;49066:1;49063;49056:12;49010:60;48960:116;:::o;49082:120::-;49154:23;49171:5;49154:23;:::i;:::-;49147:5;49144:34;49134:62;;49192:1;49189;49182:12;49134:62;49082:120;:::o;49208:122::-;49281:24;49299:5;49281:24;:::i;:::-;49274:5;49271:35;49261:63;;49320:1;49317;49310:12;49261:63;49208:122;:::o;49336:118::-;49407:22;49423:5;49407:22;:::i;:::-;49400:5;49397:33;49387:61;;49444:1;49441;49434:12;49387:61;49336:118;:::o

Swarm Source

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