ETH Price: $2,555.22 (-4.74%)

Token

WoF Dream Team (WoFDT)
 

Overview

Max Total Supply

555 WoFDT

Holders

232

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
3 WoFDT
0x222d6b7D7270F63d1e55587f5703F71Bf48f5305
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:
WOF_DREAM_TEAM

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.7;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        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);
    }

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

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

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

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

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

    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }

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

    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }

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

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

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}

// IERC721.SOL
//IERC721

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`, 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 Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);

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

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

// IERC721Enumerable.sol

interface IERC721Enumerable is IERC721 {
    /**
     * @dev Returns the total amount of tokens stored by the contract.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.
     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index)
        external
        view
        returns (uint256);

    /**
     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.
     * Use along with {totalSupply} to enumerate all tokens.
     */
    function tokenByIndex(uint256 index) external view returns (uint256);
}

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

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

error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error URIQueryForNonexistentToken();

/**
 * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including
 * the Metadata and Enumerable extension. Built to optimize for lower gas during batch mints.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 *
 * Does not support burning tokens to address(0).
 *
 * Assumes that an owner cannot have more than the 2**128 - 1 (max value of uint128) of supply
 */
contract ERC721A is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 internal _currentIndex;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to ownership details
    // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
    mapping(uint256 => TokenOwnership) internal _ownerships;

    // Mapping owner address to address data
    mapping(address => AddressData) private _addressData;

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

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view override returns (uint256) {
        return _currentIndex;
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        if (index >= totalSupply()) revert TokenIndexOutOfBounds();
        return index;
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     * This read function is O(totalSupply). If calling from a separate contract, be sure to test gas first.
     * It may also degrade with extremely large collection sizes (e.g >> 10000), test for your use case.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256 a)
    {
        if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx;
        address currOwnershipAddr;

        // Counter overflow is impossible as the loop breaks when uint256 i is equal to another uint256 numMintedSoFar.
        unchecked {
            for (uint256 i; i < numMintedSoFar; i++) {
                TokenOwnership memory ownership = _ownerships[i];
                if (ownership.addr != address(0)) {
                    currOwnershipAddr = ownership.addr;
                }
                if (currOwnershipAddr == owner) {
                    if (tokenIdsIdx == index) {
                        return i;
                    }
                    tokenIdsIdx++;
                }
            }
        }

        // Execution should never reach this point.
        assert(false);
    }

    /**
     * @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 ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view override returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        if (owner == address(0)) revert MintedQueryForZeroAddress();
        return uint256(_addressData[owner].numberMinted);
    }

    /**
     * Gas spent here starts off proportional to the maximum mint batch size.
     * It gradually moves to O(1) as tokens get transferred around in the collection over time.
     */
    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();

        unchecked {
            for (uint256 curr = tokenId; curr >= 0; curr--) {
                TokenOwnership memory ownership = _ownerships[curr];
                if (ownership.addr != address(0)) {
                    return ownership;
                }
            }
        }

        revert UnableDetermineTokenOwner();
    }

    /**
     * @dev See {IERC721-ownerOf}.
     */
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

    /**
     * @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)
    {
        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();

        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 overriden in child contracts.
     */
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender()))
            revert ApprovalCallerNotOwnerNorApproved();

        _approve(to, tokenId, owner);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        if (operator == _msgSender()) revert ApproveToCaller();

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_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 {
        _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 override {
        _transfer(from, to, tokenId);
        if (!_checkOnERC721Received(from, to, tokenId, _data))
            revert TransferToNonERC721ReceiverImplementer();
    }

    /**
     * @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`),
     */
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < _currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }

    /**
     * @dev Safely mints `quantity` tokens and transfers them to `to`.
     *
     * Requirements:
     *
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called for each safe transfer.
     * - `quantity` must be greater than 0.
     *
     * Emits a {Transfer} event.
     */
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        _mint(to, quantity, _data, true);
    }

    /**
     * @dev Mints `quantity` tokens and transfers them to `to`.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - `quantity` must be greater than 0.
     *
     * Emits a {Transfer} event.
     */
    function _mint(
        address to,
        uint256 quantity,
        bytes memory _data,
        bool safe
    ) internal {
        uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        // if (quantity == 0) revert MintZeroQuantity();

        //_beforeTokenTransfers(address(0), to, startTokenId, quantity);

        // Overflows are incredibly unrealistic.
        // balance or numberMinted overflow if current value of either + quantity > 3.4e38 (2**128) - 1
        // updatedIndex overflows if _currentIndex + quantity > 1.56e77 (2**256) - 1
        unchecked {
            _addressData[to].balance += uint128(quantity);
            _addressData[to].numberMinted += uint128(quantity);

            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);

            uint256 updatedIndex = startTokenId;

            for (uint256 i; i < quantity; i++) {
                emit Transfer(address(0), to, updatedIndex);
                if (
                    safe &&
                    !_checkOnERC721Received(address(0), to, updatedIndex, _data)
                ) {
                    revert TransferToNonERC721ReceiverImplementer();
                }

                updatedIndex++;
            }

            _currentIndex = updatedIndex;
        }

        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    /**
     * @dev Transfers `tokenId` from `from` to `to`.
     *
     * 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
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        if (prevOwnership.addr != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();

        // _beforeTokenTransfers(from, to, tokenId, 1);

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

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        // Counter overflow is incredibly unrealistic as tokenId would have to be 2**256.
        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;

            _ownerships[tokenId].addr = to;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);

            // If the ownership slot of tokenId+1 is not explicitly set, that means the transfer initiator owns it.
            // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {
                if (_exists(nextTokenId)) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership
                        .startTimestamp;
                }
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

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

    /**
     * @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(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0)
                    revert TransferToNonERC721ReceiverImplementer();
                else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    /**
     * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. This includes minting.
     *
     * startTokenId - the first token id to be transferred
     * quantity - the amount to be transferred
     *
     * 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`.
     */
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    /**
     * @dev Hook that is called after a set of serially-ordered token ids have been transferred. This includes
     * minting.
     *
     * startTokenId - the first token id to be transferred
     * quantity - the amount to be transferred
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero.
     * - `from` and `to` are never both zero.
     */
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

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

contract WOF_DREAM_TEAM is ERC721A, Ownable {
    // variables
    using Strings for uint256;
    IERC721 public WOFDeployed;
    IERC721 public GOLDCAPSDeployed;

    constructor(string memory _baseuri, address contractaddress, address goldcapsContractAddress)
        ERC721A("WoF Dream Team ", "WoFDT")
    {
        setBaseURI(_baseuri);
        WOFDeployed = IERC721(contractaddress);
        GOLDCAPSDeployed = IERC721(goldcapsContractAddress);
    }

    uint256 public maxsupply = 555;
    uint256 public reserve = 55;
    uint256 public Holderprice = 0.02 ether;
    uint256 public price = 0.04 ether;

    bool public isPreSalePaused = true;
    bool public isPaused = true;
    string public _baseURI1;

    // revealed uri variables
    bool public revealed = true;
    string public notRevealedUri;

    function flipPreSaleMinting() public onlyOwner {
        isPreSalePaused = !isPreSalePaused;
    }

    function flipPauseMinting() public onlyOwner {
        isPaused = !isPaused;
    }

    function setBaseURI(string memory _newBaseURI) public onlyOwner {
        _baseURI1 = _newBaseURI;
    }

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

    function setReserve(uint256 _reserve) public onlyOwner {
        require(_reserve <= maxsupply, "the quantity exceeds");
        reserve = _reserve;
    }

    function setWofAddress(address contractaddress) public onlyOwner {
        WOFDeployed = IERC721(contractaddress);
    }

    function setGoldenCapsAddress(address contractaddress) public onlyOwner {
        GOLDCAPSDeployed = IERC721(contractaddress);
    }

    function setPreSalePrice(uint256 _newCost) public onlyOwner {
        Holderprice = _newCost;
    }

    function setPrice(uint256 _newCost) public onlyOwner {
        price = _newCost;
    }

    // set reaveal uri just in case

    function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner {
        notRevealedUri = _notRevealedURI;
    }

    // setting reaveal only time can possible
    //only owner
    function reveal() public onlyOwner {
        revealed = !revealed;
    }

    function mintReservedTokens(uint256 quantity) public onlyOwner {
        require(quantity <= reserve, "All reserve tokens have bene minted");
        reserve -= quantity;
        _safeMint(msg.sender, quantity);
    }

    function HolderMint(uint256 chosenAmount) public payable {
        require(
            WOFDeployed.balanceOf(msg.sender) > 0 || GOLDCAPSDeployed.balanceOf(msg.sender) > 0,
            "you dont own any NFT from previous collection"
        );

        require(isPreSalePaused == false, "turn on minting");
        require(
            chosenAmount > 0,
            "Number Of Tokens Can Not Be Less Than Or Equal To 0"
        );
        require(
            totalSupply() + chosenAmount <= maxsupply - reserve,
            "all tokens have been minted"
        );

        require(
            Holderprice * chosenAmount == msg.value,
            "Sent Ether Value Is Incorrect"
        );

        _safeMint(msg.sender, chosenAmount);
    }

    function Mint(uint256 chosenAmount) public payable {
        require(isPaused == false, "turn on minting");
        require(
            chosenAmount > 0,
            "Number Of Tokens Can Not Be Less Than Or Equal To 0"
        );
        require(
            totalSupply() + chosenAmount <= maxsupply - reserve,
            "all tokens have been minted"
        );

        require(
            price * chosenAmount == msg.value,
            "Sent Ether Value Is Incorrect"
        );

        _safeMint(msg.sender, chosenAmount);
    }

    // setting up the reaveal functionality

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        if (revealed == false) {
            return notRevealedUri;
        }

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

    function withdraw() public onlyOwner {
        uint256 balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_baseuri","type":"string"},{"internalType":"address","name":"contractaddress","type":"address"},{"internalType":"address","name":"goldcapsContractAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"GOLDCAPSDeployed","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"HolderMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"Holderprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"Mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"WOFDeployed","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseURI1","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPauseMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPreSaleMinting","outputs":[],"stateMutability":"nonpayable","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":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPreSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxsupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mintReservedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractaddress","type":"address"}],"name":"setGoldenCapsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reserve","type":"uint256"}],"name":"setReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractaddress","type":"address"}],"name":"setWofAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"a","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":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405261022b600a556037600b5566470de4df820000600c55668e1bc9bf040000600d556001600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200008357600080fd5b5060405162004d8538038062004d858339818101604052810190620000a99190620004ed565b6040518060400160405280600f81526020017f576f4620447265616d205465616d2000000000000000000000000000000000008152506040518060400160405280600581526020017f576f46445400000000000000000000000000000000000000000000000000000081525081600190805190602001906200012d929190620003a8565b50806002908051906020019062000146929190620003a8565b505050620001696200015d6200020560201b60201c565b6200020d60201b60201c565b6200017a83620002d360201b60201c565b81600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620007bd565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002e36200020560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003096200037e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000362576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000359906200058f565b60405180910390fd5b80600f90805190602001906200037a929190620003a8565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003b6906200068b565b90600052602060002090601f016020900481019282620003da576000855562000426565b82601f10620003f557805160ff191683800117855562000426565b8280016001018555821562000426579182015b828111156200042557825182559160200191906001019062000408565b5b50905062000435919062000439565b5090565b5b80821115620004545760008160009055506001016200043a565b5090565b60006200046f6200046984620005da565b620005b1565b9050828152602081018484840111156200048e576200048d6200075a565b5b6200049b84828562000655565b509392505050565b600081519050620004b481620007a3565b92915050565b600082601f830112620004d257620004d162000755565b5b8151620004e484826020860162000458565b91505092915050565b60008060006060848603121562000509576200050862000764565b5b600084015167ffffffffffffffff8111156200052a57620005296200075f565b5b6200053886828701620004ba565b93505060206200054b86828701620004a3565b92505060406200055e86828701620004a3565b9150509250925092565b60006200057760208362000610565b915062000584826200077a565b602082019050919050565b60006020820190508181036000830152620005aa8162000568565b9050919050565b6000620005bd620005d0565b9050620005cb8282620006c1565b919050565b6000604051905090565b600067ffffffffffffffff821115620005f857620005f762000726565b5b620006038262000769565b9050602081019050919050565b600082825260208201905092915050565b60006200062e8262000635565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b838110156200067557808201518184015260208101905062000658565b8381111562000685576000848401525b50505050565b60006002820490506001821680620006a457607f821691505b60208210811415620006bb57620006ba620006f7565b5b50919050565b620006cc8262000769565b810181811067ffffffffffffffff82111715620006ee57620006ed62000726565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620007ae8162000621565b8114620007ba57600080fd5b50565b6145b880620007cd6000396000f3fe6080604052600436106102675760003560e01c806362a4f9c711610144578063a475b5dd116100b6578063e985e9c51161007a578063e985e9c5146108c3578063ed99976414610900578063f2c4ce1e14610929578063f2fde38b14610952578063f3b07ce41461097b578063f902da32146109a657610267565b8063a475b5dd146107f0578063b187bd2614610807578063b88d4fde14610832578063c87b56dd1461085b578063cd3293de1461089857610267565b80637d7eee42116101085780637d7eee42146106f45780638da5cb5b1461071d57806391b7f5ed1461074857806395d89b4114610771578063a035b1fe1461079c578063a22cb465146107c757610267565b806362a4f9c71461060f5780636352211e1461063a57806370a0823114610677578063715018a6146106b45780637d5cb4e5146106cb57610267565b806323b872dd116101dd57806342842e0e116101a157806342842e0e146104ff5780634b6406d1146105285780634f6ccce714610553578063518302271461059057806355f804b3146105bb57806360676ac2146105e457610267565b806323b872dd1461042e5780632e280e32146104575780632f745c59146104825780633ccfd60b146104bf5780634256dbe3146104d657610267565b8063081c8c441161022f578063081c8c44146103445780630917c4e11461036f578063095ea7b3146103865780630e35a082146103af57806311e0f063146103d857806318160ddd1461040357610267565b806301ffc9a71461026c57806304b13416146102a957806306fdde03146102c057806307883703146102eb578063081812fc14610307575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613818565b6109c2565b6040516102a09190613c0b565b60405180910390f35b3480156102b557600080fd5b506102be610b0c565b005b3480156102cc57600080fd5b506102d5610bb4565b6040516102e29190613c41565b60405180910390f35b610305600480360381019061030091906138bb565b610c46565b005b34801561031357600080fd5b5061032e600480360381019061032991906138bb565b610d9f565b60405161033b9190613ba4565b60405180910390f35b34801561035057600080fd5b50610359610e1b565b6040516103669190613c41565b60405180910390f35b34801561037b57600080fd5b50610384610ea9565b005b34801561039257600080fd5b506103ad60048036038101906103a891906137d8565b610f51565b005b3480156103bb57600080fd5b506103d660048036038101906103d19190613655565b61105c565b005b3480156103e457600080fd5b506103ed61111c565b6040516103fa9190613c41565b60405180910390f35b34801561040f57600080fd5b506104186111aa565b6040516104259190613da3565b60405180910390f35b34801561043a57600080fd5b50610455600480360381019061045091906136c2565b6111b3565b005b34801561046357600080fd5b5061046c6111c3565b6040516104799190613c0b565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a491906137d8565b6111d6565b6040516104b69190613da3565b60405180910390f35b3480156104cb57600080fd5b506104d4611397565b005b3480156104e257600080fd5b506104fd60048036038101906104f891906138bb565b611462565b005b34801561050b57600080fd5b50610526600480360381019061052191906136c2565b61152d565b005b34801561053457600080fd5b5061053d61154d565b60405161054a9190613da3565b60405180910390f35b34801561055f57600080fd5b5061057a600480360381019061057591906138bb565b611553565b6040516105879190613da3565b60405180910390f35b34801561059c57600080fd5b506105a561159d565b6040516105b29190613c0b565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190613872565b6115b0565b005b3480156105f057600080fd5b506105f9611646565b6040516106069190613da3565b60405180910390f35b34801561061b57600080fd5b5061062461164c565b6040516106319190613c26565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c91906138bb565b611672565b60405161066e9190613ba4565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190613655565b611688565b6040516106ab9190613da3565b60405180910390f35b3480156106c057600080fd5b506106c9611768565b005b3480156106d757600080fd5b506106f260048036038101906106ed91906138bb565b6117f0565b005b34801561070057600080fd5b5061071b600480360381019061071691906138bb565b6118d7565b005b34801561072957600080fd5b5061073261195d565b60405161073f9190613ba4565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a91906138bb565b611987565b005b34801561077d57600080fd5b50610786611a0d565b6040516107939190613c41565b60405180910390f35b3480156107a857600080fd5b506107b1611a9f565b6040516107be9190613da3565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e99190613798565b611aa5565b005b3480156107fc57600080fd5b50610805611c1d565b005b34801561081357600080fd5b5061081c611cc5565b6040516108299190613c0b565b60405180910390f35b34801561083e57600080fd5b5061085960048036038101906108549190613715565b611cd8565b005b34801561086757600080fd5b50610882600480360381019061087d91906138bb565b611d2b565b60405161088f9190613c41565b60405180910390f35b3480156108a457600080fd5b506108ad611e81565b6040516108ba9190613da3565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190613682565b611e87565b6040516108f79190613c0b565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190613655565b611f1b565b005b34801561093557600080fd5b50610950600480360381019061094b9190613872565b611fdb565b005b34801561095e57600080fd5b5061097960048036038101906109749190613655565b612071565b005b34801561098757600080fd5b50610990612169565b60405161099d9190613c26565b60405180910390f35b6109c060048036038101906109bb91906138bb565b61218f565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a8d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610af557507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b055750610b048261248a565b5b9050919050565b610b146124f4565b73ffffffffffffffffffffffffffffffffffffffff16610b3261195d565b73ffffffffffffffffffffffffffffffffffffffff1614610b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7f90613ce3565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b606060018054610bc390614089565b80601f0160208091040260200160405190810160405280929190818152602001828054610bef90614089565b8015610c3c5780601f10610c1157610100808354040283529160200191610c3c565b820191906000526020600020905b815481529060010190602001808311610c1f57829003601f168201915b5050505050905090565b60001515600e60019054906101000a900460ff16151514610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390613d43565b60405180910390fd5b60008111610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613c83565b60405180910390fd5b600b54600a54610cef9190613f69565b81610cf86111aa565b610d029190613e88565b1115610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a90613d63565b60405180910390fd5b3481600d54610d529190613f0f565b14610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613d83565b60405180910390fd5b610d9c33826124fc565b50565b6000610daa8261251a565b610de0576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60118054610e2890614089565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5490614089565b8015610ea15780601f10610e7657610100808354040283529160200191610ea1565b820191906000526020600020905b815481529060010190602001808311610e8457829003601f168201915b505050505081565b610eb16124f4565b73ffffffffffffffffffffffffffffffffffffffff16610ecf61195d565b73ffffffffffffffffffffffffffffffffffffffff1614610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90613ce3565b60405180910390fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b6000610f5c82611672565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fc4576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610fe36124f4565b73ffffffffffffffffffffffffffffffffffffffff161415801561101557506110138161100e6124f4565b611e87565b155b1561104c576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611057838383612527565b505050565b6110646124f4565b73ffffffffffffffffffffffffffffffffffffffff1661108261195d565b73ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613ce3565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f805461112990614089565b80601f016020809104026020016040519081016040528092919081815260200182805461115590614089565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505081565b60008054905090565b6111be8383836125d9565b505050565b600e60009054906101000a900460ff1681565b60006111e183611688565b8210611219576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112236111aa565b905060008060005b8381101561137d576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461131d57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561136f5786841415611366578195505050505050611391565b83806001019450505b50808060010191505061122b565b50600061138d5761138c614166565b5b5050505b92915050565b61139f6124f4565b73ffffffffffffffffffffffffffffffffffffffff166113bd61195d565b73ffffffffffffffffffffffffffffffffffffffff1614611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90613ce3565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561145e573d6000803e3d6000fd5b5050565b61146a6124f4565b73ffffffffffffffffffffffffffffffffffffffff1661148861195d565b73ffffffffffffffffffffffffffffffffffffffff16146114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590613ce3565b60405180910390fd5b600a54811115611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a90613cc3565b60405180910390fd5b80600b8190555050565b61154883838360405180602001604052806000815250611cd8565b505050565b600a5481565b600061155d6111aa565b8210611595576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b601060009054906101000a900460ff1681565b6115b86124f4565b73ffffffffffffffffffffffffffffffffffffffff166115d661195d565b73ffffffffffffffffffffffffffffffffffffffff161461162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390613ce3565b60405180910390fd5b80600f908051906020019061164292919061341a565b5050565b600c5481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061167d82612af1565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f0576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6117706124f4565b73ffffffffffffffffffffffffffffffffffffffff1661178e61195d565b73ffffffffffffffffffffffffffffffffffffffff16146117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613ce3565b60405180910390fd5b6117ee6000612c79565b565b6117f86124f4565b73ffffffffffffffffffffffffffffffffffffffff1661181661195d565b73ffffffffffffffffffffffffffffffffffffffff161461186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390613ce3565b60405180910390fd5b600b548111156118b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a890613d23565b60405180910390fd5b80600b60008282546118c39190613f69565b925050819055506118d433826124fc565b50565b6118df6124f4565b73ffffffffffffffffffffffffffffffffffffffff166118fd61195d565b73ffffffffffffffffffffffffffffffffffffffff1614611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194a90613ce3565b60405180910390fd5b80600c8190555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61198f6124f4565b73ffffffffffffffffffffffffffffffffffffffff166119ad61195d565b73ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa90613ce3565b60405180910390fd5b80600d8190555050565b606060028054611a1c90614089565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4890614089565b8015611a955780601f10611a6a57610100808354040283529160200191611a95565b820191906000526020600020905b815481529060010190602001808311611a7857829003601f168201915b5050505050905090565b600d5481565b611aad6124f4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b12576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060066000611b1f6124f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611bcc6124f4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c119190613c0b565b60405180910390a35050565b611c256124f4565b73ffffffffffffffffffffffffffffffffffffffff16611c4361195d565b73ffffffffffffffffffffffffffffffffffffffff1614611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613ce3565b60405180910390fd5b601060009054906101000a900460ff1615601060006101000a81548160ff021916908315150217905550565b600e60019054906101000a900460ff1681565b611ce38484846125d9565b611cef84848484612d3f565b611d25576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060611d368261251a565b611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90613d03565b60405180910390fd5b60001515601060009054906101000a900460ff1615151415611e235760118054611d9e90614089565b80601f0160208091040260200160405190810160405280929190818152602001828054611dca90614089565b8015611e175780601f10611dec57610100808354040283529160200191611e17565b820191906000526020600020905b815481529060010190602001808311611dfa57829003601f168201915b50505050509050611e7c565b6000611e2d612ecd565b90506000815111611e4d5760405180602001604052806000815250611e78565b80611e5784612f5f565b604051602001611e68929190613b75565b6040516020818303038152906040525b9150505b919050565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f236124f4565b73ffffffffffffffffffffffffffffffffffffffff16611f4161195d565b73ffffffffffffffffffffffffffffffffffffffff1614611f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8e90613ce3565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fe36124f4565b73ffffffffffffffffffffffffffffffffffffffff1661200161195d565b73ffffffffffffffffffffffffffffffffffffffff1614612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613ce3565b60405180910390fd5b806011908051906020019061206d92919061341a565b5050565b6120796124f4565b73ffffffffffffffffffffffffffffffffffffffff1661209761195d565b73ffffffffffffffffffffffffffffffffffffffff16146120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490613ce3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215490613c63565b60405180910390fd5b61216681612c79565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016121ec9190613ba4565b60206040518083038186803b15801561220457600080fd5b505afa158015612218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223c91906138e8565b11806122f257506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016122a09190613ba4565b60206040518083038186803b1580156122b857600080fd5b505afa1580156122cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f091906138e8565b115b612331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232890613ca3565b60405180910390fd5b60001515600e60009054906101000a900460ff16151514612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e90613d43565b60405180910390fd5b600081116123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c190613c83565b60405180910390fd5b600b54600a546123da9190613f69565b816123e36111aa565b6123ed9190613e88565b111561242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590613d63565b60405180910390fd5b3481600c5461243d9190613f0f565b1461247d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247490613d83565b60405180910390fd5b61248733826124fc565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6125168282604051806020016040528060008152506130c0565b5050565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006125e482612af1565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661260b6124f4565b73ffffffffffffffffffffffffffffffffffffffff16148061266757506126306124f4565b73ffffffffffffffffffffffffffffffffffffffff1661264f84610d9f565b73ffffffffffffffffffffffffffffffffffffffff16145b806126835750612682826000015161267d6124f4565b611e87565b5b9050806126bc576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612725576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561278c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61279c6000848460000151612527565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612a81576129e08161251a565b15612a805782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612aea85858560016130d2565b5050505050565b612af96134a0565b612b028261251a565b612b38576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290505b60008110612c41576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612c32578092505050612c74565b50808060019003915050612b3e565b506040517fe7c0edfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612d608473ffffffffffffffffffffffffffffffffffffffff166130d8565b15612ec0578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d896124f4565b8786866040518563ffffffff1660e01b8152600401612dab9493929190613bbf565b602060405180830381600087803b158015612dc557600080fd5b505af1925050508015612df657506040513d601f19601f82011682018060405250810190612df39190613845565b60015b612e70573d8060008114612e26576040519150601f19603f3d011682016040523d82523d6000602084013e612e2b565b606091505b50600081511415612e68576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ec5565b600190505b949350505050565b6060600f8054612edc90614089565b80601f0160208091040260200160405190810160405280929190818152602001828054612f0890614089565b8015612f555780601f10612f2a57610100808354040283529160200191612f55565b820191906000526020600020905b815481529060010190602001808311612f3857829003601f168201915b5050505050905090565b60606000821415612fa7576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506130bb565b600082905060005b60008214612fd9578080612fc2906140ec565b915050600a82612fd29190613ede565b9150612faf565b60008167ffffffffffffffff811115612ff557612ff4614251565b5b6040519080825280601f01601f1916602001820160405280156130275781602001600182028036833780820191505090505b5090505b600085146130b4576001826130409190613f69565b9150600a8561304f9190614135565b603061305b9190613e88565b60f81b81838151811061307157613070614222565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856130ad9190613ede565b945061302b565b8093505050505b919050565b6130cd83838360016130fb565b505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613168576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b858110156133fd57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48380156133b157506133af6000888488612d3f565b155b156133e8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050613336565b50806000819055505061341360008683876130d2565b5050505050565b82805461342690614089565b90600052602060002090601f016020900481019282613448576000855561348f565b82601f1061346157805160ff191683800117855561348f565b8280016001018555821561348f579182015b8281111561348e578251825591602001919060010190613473565b5b50905061349c91906134da565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156134f35760008160009055506001016134db565b5090565b600061350a61350584613de3565b613dbe565b90508281526020810184848401111561352657613525614285565b5b613531848285614047565b509392505050565b600061354c61354784613e14565b613dbe565b90508281526020810184848401111561356857613567614285565b5b613573848285614047565b509392505050565b60008135905061358a81614526565b92915050565b60008135905061359f8161453d565b92915050565b6000813590506135b481614554565b92915050565b6000815190506135c981614554565b92915050565b600082601f8301126135e4576135e3614280565b5b81356135f48482602086016134f7565b91505092915050565b600082601f83011261361257613611614280565b5b8135613622848260208601613539565b91505092915050565b60008135905061363a8161456b565b92915050565b60008151905061364f8161456b565b92915050565b60006020828403121561366b5761366a61428f565b5b60006136798482850161357b565b91505092915050565b600080604083850312156136995761369861428f565b5b60006136a78582860161357b565b92505060206136b88582860161357b565b9150509250929050565b6000806000606084860312156136db576136da61428f565b5b60006136e98682870161357b565b93505060206136fa8682870161357b565b925050604061370b8682870161362b565b9150509250925092565b6000806000806080858703121561372f5761372e61428f565b5b600061373d8782880161357b565b945050602061374e8782880161357b565b935050604061375f8782880161362b565b925050606085013567ffffffffffffffff8111156137805761377f61428a565b5b61378c878288016135cf565b91505092959194509250565b600080604083850312156137af576137ae61428f565b5b60006137bd8582860161357b565b92505060206137ce85828601613590565b9150509250929050565b600080604083850312156137ef576137ee61428f565b5b60006137fd8582860161357b565b925050602061380e8582860161362b565b9150509250929050565b60006020828403121561382e5761382d61428f565b5b600061383c848285016135a5565b91505092915050565b60006020828403121561385b5761385a61428f565b5b6000613869848285016135ba565b91505092915050565b6000602082840312156138885761388761428f565b5b600082013567ffffffffffffffff8111156138a6576138a561428a565b5b6138b2848285016135fd565b91505092915050565b6000602082840312156138d1576138d061428f565b5b60006138df8482850161362b565b91505092915050565b6000602082840312156138fe576138fd61428f565b5b600061390c84828501613640565b91505092915050565b61391e81613f9d565b82525050565b61392d81613faf565b82525050565b600061393e82613e45565b6139488185613e5b565b9350613958818560208601614056565b61396181614294565b840191505092915050565b61397581614011565b82525050565b600061398682613e50565b6139908185613e6c565b93506139a0818560208601614056565b6139a981614294565b840191505092915050565b60006139bf82613e50565b6139c98185613e7d565b93506139d9818560208601614056565b80840191505092915050565b60006139f2602683613e6c565b91506139fd826142a5565b604082019050919050565b6000613a15603383613e6c565b9150613a20826142f4565b604082019050919050565b6000613a38602d83613e6c565b9150613a4382614343565b604082019050919050565b6000613a5b601483613e6c565b9150613a6682614392565b602082019050919050565b6000613a7e600583613e7d565b9150613a89826143bb565b600582019050919050565b6000613aa1602083613e6c565b9150613aac826143e4565b602082019050919050565b6000613ac4602f83613e6c565b9150613acf8261440d565b604082019050919050565b6000613ae7602383613e6c565b9150613af28261445c565b604082019050919050565b6000613b0a600f83613e6c565b9150613b15826144ab565b602082019050919050565b6000613b2d601b83613e6c565b9150613b38826144d4565b602082019050919050565b6000613b50601d83613e6c565b9150613b5b826144fd565b602082019050919050565b613b6f81614007565b82525050565b6000613b8182856139b4565b9150613b8d82846139b4565b9150613b9882613a71565b91508190509392505050565b6000602082019050613bb96000830184613915565b92915050565b6000608082019050613bd46000830187613915565b613be16020830186613915565b613bee6040830185613b66565b8181036060830152613c008184613933565b905095945050505050565b6000602082019050613c206000830184613924565b92915050565b6000602082019050613c3b600083018461396c565b92915050565b60006020820190508181036000830152613c5b818461397b565b905092915050565b60006020820190508181036000830152613c7c816139e5565b9050919050565b60006020820190508181036000830152613c9c81613a08565b9050919050565b60006020820190508181036000830152613cbc81613a2b565b9050919050565b60006020820190508181036000830152613cdc81613a4e565b9050919050565b60006020820190508181036000830152613cfc81613a94565b9050919050565b60006020820190508181036000830152613d1c81613ab7565b9050919050565b60006020820190508181036000830152613d3c81613ada565b9050919050565b60006020820190508181036000830152613d5c81613afd565b9050919050565b60006020820190508181036000830152613d7c81613b20565b9050919050565b60006020820190508181036000830152613d9c81613b43565b9050919050565b6000602082019050613db86000830184613b66565b92915050565b6000613dc8613dd9565b9050613dd482826140bb565b919050565b6000604051905090565b600067ffffffffffffffff821115613dfe57613dfd614251565b5b613e0782614294565b9050602081019050919050565b600067ffffffffffffffff821115613e2f57613e2e614251565b5b613e3882614294565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613e9382614007565b9150613e9e83614007565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ed357613ed2614195565b5b828201905092915050565b6000613ee982614007565b9150613ef483614007565b925082613f0457613f036141c4565b5b828204905092915050565b6000613f1a82614007565b9150613f2583614007565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f5e57613f5d614195565b5b828202905092915050565b6000613f7482614007565b9150613f7f83614007565b925082821015613f9257613f91614195565b5b828203905092915050565b6000613fa882613fe7565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061401c82614023565b9050919050565b600061402e82614035565b9050919050565b600061404082613fe7565b9050919050565b82818337600083830152505050565b60005b83811015614074578082015181840152602081019050614059565b83811115614083576000848401525b50505050565b600060028204905060018216806140a157607f821691505b602082108114156140b5576140b46141f3565b5b50919050565b6140c482614294565b810181811067ffffffffffffffff821117156140e3576140e2614251565b5b80604052505050565b60006140f782614007565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561412a57614129614195565b5b600182019050919050565b600061414082614007565b915061414b83614007565b92508261415b5761415a6141c4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e756d626572204f6620546f6b656e732043616e204e6f74204265204c65737360008201527f205468616e204f7220457175616c20546f203000000000000000000000000000602082015250565b7f796f7520646f6e74206f776e20616e79204e46542066726f6d2070726576696f60008201527f757320636f6c6c656374696f6e00000000000000000000000000000000000000602082015250565b7f746865207175616e746974792065786365656473000000000000000000000000600082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f416c6c207265736572766520746f6b656e7320686176652062656e65206d696e60008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b7f7475726e206f6e206d696e74696e670000000000000000000000000000000000600082015250565b7f616c6c20746f6b656e732068617665206265656e206d696e7465640000000000600082015250565b7f53656e742045746865722056616c756520497320496e636f7272656374000000600082015250565b61452f81613f9d565b811461453a57600080fd5b50565b61454681613faf565b811461455157600080fd5b50565b61455d81613fbb565b811461456857600080fd5b50565b61457481614007565b811461457f57600080fd5b5056fea2646970667358221220eb90f2b10b131e25d1f5d05323541eb8629c0dc5d53c877b95fc70d042b1476664736f6c634300080700330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a98264c5e38636a83ed047942105bc03afbd6b9700000000000000000000000018e8bdf40074442f024c4b659661ce20d8974e61000000000000000000000000000000000000000000000000000000000000004f68747470733a2f2f776f662e6d7970696e6174612e636c6f75642f697066732f516d5971344c7a36687535326f4545666d546f72386870566836327939774c6e6e3276774c65525a4d44674272632f0000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106102675760003560e01c806362a4f9c711610144578063a475b5dd116100b6578063e985e9c51161007a578063e985e9c5146108c3578063ed99976414610900578063f2c4ce1e14610929578063f2fde38b14610952578063f3b07ce41461097b578063f902da32146109a657610267565b8063a475b5dd146107f0578063b187bd2614610807578063b88d4fde14610832578063c87b56dd1461085b578063cd3293de1461089857610267565b80637d7eee42116101085780637d7eee42146106f45780638da5cb5b1461071d57806391b7f5ed1461074857806395d89b4114610771578063a035b1fe1461079c578063a22cb465146107c757610267565b806362a4f9c71461060f5780636352211e1461063a57806370a0823114610677578063715018a6146106b45780637d5cb4e5146106cb57610267565b806323b872dd116101dd57806342842e0e116101a157806342842e0e146104ff5780634b6406d1146105285780634f6ccce714610553578063518302271461059057806355f804b3146105bb57806360676ac2146105e457610267565b806323b872dd1461042e5780632e280e32146104575780632f745c59146104825780633ccfd60b146104bf5780634256dbe3146104d657610267565b8063081c8c441161022f578063081c8c44146103445780630917c4e11461036f578063095ea7b3146103865780630e35a082146103af57806311e0f063146103d857806318160ddd1461040357610267565b806301ffc9a71461026c57806304b13416146102a957806306fdde03146102c057806307883703146102eb578063081812fc14610307575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e9190613818565b6109c2565b6040516102a09190613c0b565b60405180910390f35b3480156102b557600080fd5b506102be610b0c565b005b3480156102cc57600080fd5b506102d5610bb4565b6040516102e29190613c41565b60405180910390f35b610305600480360381019061030091906138bb565b610c46565b005b34801561031357600080fd5b5061032e600480360381019061032991906138bb565b610d9f565b60405161033b9190613ba4565b60405180910390f35b34801561035057600080fd5b50610359610e1b565b6040516103669190613c41565b60405180910390f35b34801561037b57600080fd5b50610384610ea9565b005b34801561039257600080fd5b506103ad60048036038101906103a891906137d8565b610f51565b005b3480156103bb57600080fd5b506103d660048036038101906103d19190613655565b61105c565b005b3480156103e457600080fd5b506103ed61111c565b6040516103fa9190613c41565b60405180910390f35b34801561040f57600080fd5b506104186111aa565b6040516104259190613da3565b60405180910390f35b34801561043a57600080fd5b50610455600480360381019061045091906136c2565b6111b3565b005b34801561046357600080fd5b5061046c6111c3565b6040516104799190613c0b565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a491906137d8565b6111d6565b6040516104b69190613da3565b60405180910390f35b3480156104cb57600080fd5b506104d4611397565b005b3480156104e257600080fd5b506104fd60048036038101906104f891906138bb565b611462565b005b34801561050b57600080fd5b50610526600480360381019061052191906136c2565b61152d565b005b34801561053457600080fd5b5061053d61154d565b60405161054a9190613da3565b60405180910390f35b34801561055f57600080fd5b5061057a600480360381019061057591906138bb565b611553565b6040516105879190613da3565b60405180910390f35b34801561059c57600080fd5b506105a561159d565b6040516105b29190613c0b565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd9190613872565b6115b0565b005b3480156105f057600080fd5b506105f9611646565b6040516106069190613da3565b60405180910390f35b34801561061b57600080fd5b5061062461164c565b6040516106319190613c26565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c91906138bb565b611672565b60405161066e9190613ba4565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190613655565b611688565b6040516106ab9190613da3565b60405180910390f35b3480156106c057600080fd5b506106c9611768565b005b3480156106d757600080fd5b506106f260048036038101906106ed91906138bb565b6117f0565b005b34801561070057600080fd5b5061071b600480360381019061071691906138bb565b6118d7565b005b34801561072957600080fd5b5061073261195d565b60405161073f9190613ba4565b60405180910390f35b34801561075457600080fd5b5061076f600480360381019061076a91906138bb565b611987565b005b34801561077d57600080fd5b50610786611a0d565b6040516107939190613c41565b60405180910390f35b3480156107a857600080fd5b506107b1611a9f565b6040516107be9190613da3565b60405180910390f35b3480156107d357600080fd5b506107ee60048036038101906107e99190613798565b611aa5565b005b3480156107fc57600080fd5b50610805611c1d565b005b34801561081357600080fd5b5061081c611cc5565b6040516108299190613c0b565b60405180910390f35b34801561083e57600080fd5b5061085960048036038101906108549190613715565b611cd8565b005b34801561086757600080fd5b50610882600480360381019061087d91906138bb565b611d2b565b60405161088f9190613c41565b60405180910390f35b3480156108a457600080fd5b506108ad611e81565b6040516108ba9190613da3565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190613682565b611e87565b6040516108f79190613c0b565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190613655565b611f1b565b005b34801561093557600080fd5b50610950600480360381019061094b9190613872565b611fdb565b005b34801561095e57600080fd5b5061097960048036038101906109749190613655565b612071565b005b34801561098757600080fd5b50610990612169565b60405161099d9190613c26565b60405180910390f35b6109c060048036038101906109bb91906138bb565b61218f565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a8d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610af557507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b055750610b048261248a565b5b9050919050565b610b146124f4565b73ffffffffffffffffffffffffffffffffffffffff16610b3261195d565b73ffffffffffffffffffffffffffffffffffffffff1614610b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7f90613ce3565b60405180910390fd5b600e60009054906101000a900460ff1615600e60006101000a81548160ff021916908315150217905550565b606060018054610bc390614089565b80601f0160208091040260200160405190810160405280929190818152602001828054610bef90614089565b8015610c3c5780601f10610c1157610100808354040283529160200191610c3c565b820191906000526020600020905b815481529060010190602001808311610c1f57829003601f168201915b5050505050905090565b60001515600e60019054906101000a900460ff16151514610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390613d43565b60405180910390fd5b60008111610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613c83565b60405180910390fd5b600b54600a54610cef9190613f69565b81610cf86111aa565b610d029190613e88565b1115610d43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3a90613d63565b60405180910390fd5b3481600d54610d529190613f0f565b14610d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8990613d83565b60405180910390fd5b610d9c33826124fc565b50565b6000610daa8261251a565b610de0576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60118054610e2890614089565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5490614089565b8015610ea15780601f10610e7657610100808354040283529160200191610ea1565b820191906000526020600020905b815481529060010190602001808311610e8457829003601f168201915b505050505081565b610eb16124f4565b73ffffffffffffffffffffffffffffffffffffffff16610ecf61195d565b73ffffffffffffffffffffffffffffffffffffffff1614610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90613ce3565b60405180910390fd5b600e60019054906101000a900460ff1615600e60016101000a81548160ff021916908315150217905550565b6000610f5c82611672565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fc4576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610fe36124f4565b73ffffffffffffffffffffffffffffffffffffffff161415801561101557506110138161100e6124f4565b611e87565b155b1561104c576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611057838383612527565b505050565b6110646124f4565b73ffffffffffffffffffffffffffffffffffffffff1661108261195d565b73ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90613ce3565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f805461112990614089565b80601f016020809104026020016040519081016040528092919081815260200182805461115590614089565b80156111a25780601f10611177576101008083540402835291602001916111a2565b820191906000526020600020905b81548152906001019060200180831161118557829003601f168201915b505050505081565b60008054905090565b6111be8383836125d9565b505050565b600e60009054906101000a900460ff1681565b60006111e183611688565b8210611219576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112236111aa565b905060008060005b8381101561137d576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461131d57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561136f5786841415611366578195505050505050611391565b83806001019450505b50808060010191505061122b565b50600061138d5761138c614166565b5b5050505b92915050565b61139f6124f4565b73ffffffffffffffffffffffffffffffffffffffff166113bd61195d565b73ffffffffffffffffffffffffffffffffffffffff1614611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90613ce3565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561145e573d6000803e3d6000fd5b5050565b61146a6124f4565b73ffffffffffffffffffffffffffffffffffffffff1661148861195d565b73ffffffffffffffffffffffffffffffffffffffff16146114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590613ce3565b60405180910390fd5b600a54811115611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151a90613cc3565b60405180910390fd5b80600b8190555050565b61154883838360405180602001604052806000815250611cd8565b505050565b600a5481565b600061155d6111aa565b8210611595576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b601060009054906101000a900460ff1681565b6115b86124f4565b73ffffffffffffffffffffffffffffffffffffffff166115d661195d565b73ffffffffffffffffffffffffffffffffffffffff161461162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390613ce3565b60405180910390fd5b80600f908051906020019061164292919061341a565b5050565b600c5481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061167d82612af1565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116f0576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6117706124f4565b73ffffffffffffffffffffffffffffffffffffffff1661178e61195d565b73ffffffffffffffffffffffffffffffffffffffff16146117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613ce3565b60405180910390fd5b6117ee6000612c79565b565b6117f86124f4565b73ffffffffffffffffffffffffffffffffffffffff1661181661195d565b73ffffffffffffffffffffffffffffffffffffffff161461186c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186390613ce3565b60405180910390fd5b600b548111156118b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a890613d23565b60405180910390fd5b80600b60008282546118c39190613f69565b925050819055506118d433826124fc565b50565b6118df6124f4565b73ffffffffffffffffffffffffffffffffffffffff166118fd61195d565b73ffffffffffffffffffffffffffffffffffffffff1614611953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194a90613ce3565b60405180910390fd5b80600c8190555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61198f6124f4565b73ffffffffffffffffffffffffffffffffffffffff166119ad61195d565b73ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa90613ce3565b60405180910390fd5b80600d8190555050565b606060028054611a1c90614089565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4890614089565b8015611a955780601f10611a6a57610100808354040283529160200191611a95565b820191906000526020600020905b815481529060010190602001808311611a7857829003601f168201915b5050505050905090565b600d5481565b611aad6124f4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b12576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060066000611b1f6124f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611bcc6124f4565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c119190613c0b565b60405180910390a35050565b611c256124f4565b73ffffffffffffffffffffffffffffffffffffffff16611c4361195d565b73ffffffffffffffffffffffffffffffffffffffff1614611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090613ce3565b60405180910390fd5b601060009054906101000a900460ff1615601060006101000a81548160ff021916908315150217905550565b600e60019054906101000a900460ff1681565b611ce38484846125d9565b611cef84848484612d3f565b611d25576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6060611d368261251a565b611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90613d03565b60405180910390fd5b60001515601060009054906101000a900460ff1615151415611e235760118054611d9e90614089565b80601f0160208091040260200160405190810160405280929190818152602001828054611dca90614089565b8015611e175780601f10611dec57610100808354040283529160200191611e17565b820191906000526020600020905b815481529060010190602001808311611dfa57829003601f168201915b50505050509050611e7c565b6000611e2d612ecd565b90506000815111611e4d5760405180602001604052806000815250611e78565b80611e5784612f5f565b604051602001611e68929190613b75565b6040516020818303038152906040525b9150505b919050565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611f236124f4565b73ffffffffffffffffffffffffffffffffffffffff16611f4161195d565b73ffffffffffffffffffffffffffffffffffffffff1614611f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8e90613ce3565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fe36124f4565b73ffffffffffffffffffffffffffffffffffffffff1661200161195d565b73ffffffffffffffffffffffffffffffffffffffff1614612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613ce3565b60405180910390fd5b806011908051906020019061206d92919061341a565b5050565b6120796124f4565b73ffffffffffffffffffffffffffffffffffffffff1661209761195d565b73ffffffffffffffffffffffffffffffffffffffff16146120ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e490613ce3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215490613c63565b60405180910390fd5b61216681612c79565b50565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016121ec9190613ba4565b60206040518083038186803b15801561220457600080fd5b505afa158015612218573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223c91906138e8565b11806122f257506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016122a09190613ba4565b60206040518083038186803b1580156122b857600080fd5b505afa1580156122cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f091906138e8565b115b612331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232890613ca3565b60405180910390fd5b60001515600e60009054906101000a900460ff16151514612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e90613d43565b60405180910390fd5b600081116123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c190613c83565b60405180910390fd5b600b54600a546123da9190613f69565b816123e36111aa565b6123ed9190613e88565b111561242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590613d63565b60405180910390fd5b3481600c5461243d9190613f0f565b1461247d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247490613d83565b60405180910390fd5b61248733826124fc565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6125168282604051806020016040528060008152506130c0565b5050565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006125e482612af1565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661260b6124f4565b73ffffffffffffffffffffffffffffffffffffffff16148061266757506126306124f4565b73ffffffffffffffffffffffffffffffffffffffff1661264f84610d9f565b73ffffffffffffffffffffffffffffffffffffffff16145b806126835750612682826000015161267d6124f4565b611e87565b5b9050806126bc576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612725576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561278c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61279c6000848460000151612527565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612a81576129e08161251a565b15612a805782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612aea85858560016130d2565b5050505050565b612af96134a0565b612b028261251a565b612b38576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290505b60008110612c41576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612c32578092505050612c74565b50808060019003915050612b3e565b506040517fe7c0edfb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612d608473ffffffffffffffffffffffffffffffffffffffff166130d8565b15612ec0578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d896124f4565b8786866040518563ffffffff1660e01b8152600401612dab9493929190613bbf565b602060405180830381600087803b158015612dc557600080fd5b505af1925050508015612df657506040513d601f19601f82011682018060405250810190612df39190613845565b60015b612e70573d8060008114612e26576040519150601f19603f3d011682016040523d82523d6000602084013e612e2b565b606091505b50600081511415612e68576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ec5565b600190505b949350505050565b6060600f8054612edc90614089565b80601f0160208091040260200160405190810160405280929190818152602001828054612f0890614089565b8015612f555780601f10612f2a57610100808354040283529160200191612f55565b820191906000526020600020905b815481529060010190602001808311612f3857829003601f168201915b5050505050905090565b60606000821415612fa7576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506130bb565b600082905060005b60008214612fd9578080612fc2906140ec565b915050600a82612fd29190613ede565b9150612faf565b60008167ffffffffffffffff811115612ff557612ff4614251565b5b6040519080825280601f01601f1916602001820160405280156130275781602001600182028036833780820191505090505b5090505b600085146130b4576001826130409190613f69565b9150600a8561304f9190614135565b603061305b9190613e88565b60f81b81838151811061307157613070614222565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856130ad9190613ede565b945061302b565b8093505050505b919050565b6130cd83838360016130fb565b505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613168576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b858110156133fd57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48380156133b157506133af6000888488612d3f565b155b156133e8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81806001019250508080600101915050613336565b50806000819055505061341360008683876130d2565b5050505050565b82805461342690614089565b90600052602060002090601f016020900481019282613448576000855561348f565b82601f1061346157805160ff191683800117855561348f565b8280016001018555821561348f579182015b8281111561348e578251825591602001919060010190613473565b5b50905061349c91906134da565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156134f35760008160009055506001016134db565b5090565b600061350a61350584613de3565b613dbe565b90508281526020810184848401111561352657613525614285565b5b613531848285614047565b509392505050565b600061354c61354784613e14565b613dbe565b90508281526020810184848401111561356857613567614285565b5b613573848285614047565b509392505050565b60008135905061358a81614526565b92915050565b60008135905061359f8161453d565b92915050565b6000813590506135b481614554565b92915050565b6000815190506135c981614554565b92915050565b600082601f8301126135e4576135e3614280565b5b81356135f48482602086016134f7565b91505092915050565b600082601f83011261361257613611614280565b5b8135613622848260208601613539565b91505092915050565b60008135905061363a8161456b565b92915050565b60008151905061364f8161456b565b92915050565b60006020828403121561366b5761366a61428f565b5b60006136798482850161357b565b91505092915050565b600080604083850312156136995761369861428f565b5b60006136a78582860161357b565b92505060206136b88582860161357b565b9150509250929050565b6000806000606084860312156136db576136da61428f565b5b60006136e98682870161357b565b93505060206136fa8682870161357b565b925050604061370b8682870161362b565b9150509250925092565b6000806000806080858703121561372f5761372e61428f565b5b600061373d8782880161357b565b945050602061374e8782880161357b565b935050604061375f8782880161362b565b925050606085013567ffffffffffffffff8111156137805761377f61428a565b5b61378c878288016135cf565b91505092959194509250565b600080604083850312156137af576137ae61428f565b5b60006137bd8582860161357b565b92505060206137ce85828601613590565b9150509250929050565b600080604083850312156137ef576137ee61428f565b5b60006137fd8582860161357b565b925050602061380e8582860161362b565b9150509250929050565b60006020828403121561382e5761382d61428f565b5b600061383c848285016135a5565b91505092915050565b60006020828403121561385b5761385a61428f565b5b6000613869848285016135ba565b91505092915050565b6000602082840312156138885761388761428f565b5b600082013567ffffffffffffffff8111156138a6576138a561428a565b5b6138b2848285016135fd565b91505092915050565b6000602082840312156138d1576138d061428f565b5b60006138df8482850161362b565b91505092915050565b6000602082840312156138fe576138fd61428f565b5b600061390c84828501613640565b91505092915050565b61391e81613f9d565b82525050565b61392d81613faf565b82525050565b600061393e82613e45565b6139488185613e5b565b9350613958818560208601614056565b61396181614294565b840191505092915050565b61397581614011565b82525050565b600061398682613e50565b6139908185613e6c565b93506139a0818560208601614056565b6139a981614294565b840191505092915050565b60006139bf82613e50565b6139c98185613e7d565b93506139d9818560208601614056565b80840191505092915050565b60006139f2602683613e6c565b91506139fd826142a5565b604082019050919050565b6000613a15603383613e6c565b9150613a20826142f4565b604082019050919050565b6000613a38602d83613e6c565b9150613a4382614343565b604082019050919050565b6000613a5b601483613e6c565b9150613a6682614392565b602082019050919050565b6000613a7e600583613e7d565b9150613a89826143bb565b600582019050919050565b6000613aa1602083613e6c565b9150613aac826143e4565b602082019050919050565b6000613ac4602f83613e6c565b9150613acf8261440d565b604082019050919050565b6000613ae7602383613e6c565b9150613af28261445c565b604082019050919050565b6000613b0a600f83613e6c565b9150613b15826144ab565b602082019050919050565b6000613b2d601b83613e6c565b9150613b38826144d4565b602082019050919050565b6000613b50601d83613e6c565b9150613b5b826144fd565b602082019050919050565b613b6f81614007565b82525050565b6000613b8182856139b4565b9150613b8d82846139b4565b9150613b9882613a71565b91508190509392505050565b6000602082019050613bb96000830184613915565b92915050565b6000608082019050613bd46000830187613915565b613be16020830186613915565b613bee6040830185613b66565b8181036060830152613c008184613933565b905095945050505050565b6000602082019050613c206000830184613924565b92915050565b6000602082019050613c3b600083018461396c565b92915050565b60006020820190508181036000830152613c5b818461397b565b905092915050565b60006020820190508181036000830152613c7c816139e5565b9050919050565b60006020820190508181036000830152613c9c81613a08565b9050919050565b60006020820190508181036000830152613cbc81613a2b565b9050919050565b60006020820190508181036000830152613cdc81613a4e565b9050919050565b60006020820190508181036000830152613cfc81613a94565b9050919050565b60006020820190508181036000830152613d1c81613ab7565b9050919050565b60006020820190508181036000830152613d3c81613ada565b9050919050565b60006020820190508181036000830152613d5c81613afd565b9050919050565b60006020820190508181036000830152613d7c81613b20565b9050919050565b60006020820190508181036000830152613d9c81613b43565b9050919050565b6000602082019050613db86000830184613b66565b92915050565b6000613dc8613dd9565b9050613dd482826140bb565b919050565b6000604051905090565b600067ffffffffffffffff821115613dfe57613dfd614251565b5b613e0782614294565b9050602081019050919050565b600067ffffffffffffffff821115613e2f57613e2e614251565b5b613e3882614294565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613e9382614007565b9150613e9e83614007565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ed357613ed2614195565b5b828201905092915050565b6000613ee982614007565b9150613ef483614007565b925082613f0457613f036141c4565b5b828204905092915050565b6000613f1a82614007565b9150613f2583614007565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f5e57613f5d614195565b5b828202905092915050565b6000613f7482614007565b9150613f7f83614007565b925082821015613f9257613f91614195565b5b828203905092915050565b6000613fa882613fe7565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061401c82614023565b9050919050565b600061402e82614035565b9050919050565b600061404082613fe7565b9050919050565b82818337600083830152505050565b60005b83811015614074578082015181840152602081019050614059565b83811115614083576000848401525b50505050565b600060028204905060018216806140a157607f821691505b602082108114156140b5576140b46141f3565b5b50919050565b6140c482614294565b810181811067ffffffffffffffff821117156140e3576140e2614251565b5b80604052505050565b60006140f782614007565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561412a57614129614195565b5b600182019050919050565b600061414082614007565b915061414b83614007565b92508261415b5761415a6141c4565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e756d626572204f6620546f6b656e732043616e204e6f74204265204c65737360008201527f205468616e204f7220457175616c20546f203000000000000000000000000000602082015250565b7f796f7520646f6e74206f776e20616e79204e46542066726f6d2070726576696f60008201527f757320636f6c6c656374696f6e00000000000000000000000000000000000000602082015250565b7f746865207175616e746974792065786365656473000000000000000000000000600082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f416c6c207265736572766520746f6b656e7320686176652062656e65206d696e60008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b7f7475726e206f6e206d696e74696e670000000000000000000000000000000000600082015250565b7f616c6c20746f6b656e732068617665206265656e206d696e7465640000000000600082015250565b7f53656e742045746865722056616c756520497320496e636f7272656374000000600082015250565b61452f81613f9d565b811461453a57600080fd5b50565b61454681613faf565b811461455157600080fd5b50565b61455d81613fbb565b811461456857600080fd5b50565b61457481614007565b811461457f57600080fd5b5056fea2646970667358221220eb90f2b10b131e25d1f5d05323541eb8629c0dc5d53c877b95fc70d042b1476664736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000a98264c5e38636a83ed047942105bc03afbd6b9700000000000000000000000018e8bdf40074442f024c4b659661ce20d8974e61000000000000000000000000000000000000000000000000000000000000004f68747470733a2f2f776f662e6d7970696e6174612e636c6f75642f697066732f516d5971344c7a36687535326f4545666d546f72386870566836327939774c6e6e3276774c65525a4d44674272632f0000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _baseuri (string): https://wof.mypinata.cloud/ipfs/QmYq4Lz6hu52oEEfmTor8hpVh62y9wLnn2vwLeRZMDgBrc/
Arg [1] : contractaddress (address): 0xA98264c5e38636a83eD047942105Bc03AFbD6b97
Arg [2] : goldcapsContractAddress (address): 0x18e8bdf40074442F024c4B659661CE20D8974E61

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 000000000000000000000000a98264c5e38636a83ed047942105bc03afbd6b97
Arg [2] : 00000000000000000000000018e8bdf40074442f024c4b659661ce20d8974e61
Arg [3] : 000000000000000000000000000000000000000000000000000000000000004f
Arg [4] : 68747470733a2f2f776f662e6d7970696e6174612e636c6f75642f697066732f
Arg [5] : 516d5971344c7a36687535326f4545666d546f72386870566836327939774c6e
Arg [6] : 6e3276774c65525a4d44674272632f0000000000000000000000000000000000


Deployed Bytecode Sourcemap

32985:4723:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17748:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33829:100;;;;;;;;;;;;;:::i;:::-;;19646;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36225:555;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21237:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33792:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33937:84;;;;;;;;;;;;;:::i;:::-;;20813:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34426:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33695:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15931:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22208:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33620:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16626:1050;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37562:143;;;;;;;;;;;;;:::i;:::-;;34261:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22449:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33461:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16109:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33758:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34029:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33532:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33119:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19455:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18234:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32131:103;;;;;;;;;;;;;:::i;:::-;;35223:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34698:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31480:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34807:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19815:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33578:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21554:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35141:74;;;;;;;;;;;;;:::i;:::-;;33661:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22705:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36835:719;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33498:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21927:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34556:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34942:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32389:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33086:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35452:765;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17748:422;17895:4;17952:25;17937:40;;;:11;:40;;;;:105;;;;18009:33;17994:48;;;:11;:48;;;;17937:105;:172;;;;18074:35;18059:50;;;:11;:50;;;;17937:172;:225;;;;18126:36;18150:11;18126:23;:36::i;:::-;17937:225;17917:245;;17748:422;;;:::o;33829:100::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33906:15:::1;;;;;;;;;;;33905:16;33887:15;;:34;;;;;;;;;;;;;;;;;;33829:100::o:0;19646:::-;19700:13;19733:5;19726:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19646:100;:::o;36225:555::-;36307:5;36295:17;;:8;;;;;;;;;;;:17;;;36287:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;36380:1;36365:12;:16;36343:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;36537:7;;36525:9;;:19;;;;:::i;:::-;36509:12;36493:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:51;;36471:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;36658:9;36642:12;36634:5;;:20;;;;:::i;:::-;:33;36612:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;36737:35;36747:10;36759:12;36737:9;:35::i;:::-;36225:555;:::o;21237:245::-;21341:7;21371:16;21379:7;21371;:16::i;:::-;21366:64;;21396:34;;;;;;;;;;;;;;21366:64;21450:15;:24;21466:7;21450:24;;;;;;;;;;;;;;;;;;;;;21443:31;;21237:245;;;:::o;33792:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;33937:84::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34005:8:::1;;;;;;;;;;;34004:9;33993:8;;:20;;;;;;;;;;;;;;;;;;33937:84::o:0;20813:358::-;20886:13;20902:24;20918:7;20902:15;:24::i;:::-;20886:40;;20947:5;20941:11;;:2;:11;;;20937:48;;;20961:24;;;;;;;;;;;;;;20937:48;21018:5;21002:21;;:12;:10;:12::i;:::-;:21;;;;:63;;;;;21028:37;21045:5;21052:12;:10;:12::i;:::-;21028:16;:37::i;:::-;21027:38;21002:63;20998:124;;;21087:35;;;;;;;;;;;;;;20998:124;21135:28;21144:2;21148:7;21157:5;21135:8;:28::i;:::-;20875:296;20813:358;;:::o;34426:122::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34524:15:::1;34502:11;;:38;;;;;;;;;;;;;;;;;;34426:122:::0;:::o;33695:23::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15931:101::-;15984:7;16011:13;;16004:20;;15931:101;:::o;22208:170::-;22342:28;22352:4;22358:2;22362:7;22342:9;:28::i;:::-;22208:170;;;:::o;33620:34::-;;;;;;;;;;;;;:::o;16626:1050::-;16751:9;16791:16;16801:5;16791:9;:16::i;:::-;16782:5;:25;16778:61;;16816:23;;;;;;;;;;;;;;16778:61;16850:22;16875:13;:11;:13::i;:::-;16850:38;;16899:19;16929:25;17118:9;17113:466;17133:14;17129:1;:18;17113:466;;;17173:31;17207:11;:14;17219:1;17207:14;;;;;;;;;;;17173:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17270:1;17244:28;;:9;:14;;;:28;;;17240:111;;17317:9;:14;;;17297:34;;17240:111;17394:5;17373:26;;:17;:26;;;17369:195;;;17443:5;17428:11;:20;17424:85;;;17484:1;17477:8;;;;;;;;;17424:85;17531:13;;;;;;;17369:195;17154:425;17149:3;;;;;;;17113:466;;;;17662:5;17655:13;;;;:::i;:::-;;16767:909;;;16626:1050;;;;;:::o;37562:143::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37610:15:::1;37628:21;37610:39;;37668:10;37660:28;;:37;37689:7;37660:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;37599:106;37562:143::o:0;34261:157::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34347:9:::1;;34335:8;:21;;34327:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;34402:8;34392:7;:18;;;;34261:157:::0;:::o;22449:185::-;22587:39;22604:4;22610:2;22614:7;22587:39;;;;;;;;;;;;:16;:39::i;:::-;22449:185;;;:::o;33461:30::-;;;;:::o;16109:217::-;16212:7;16250:13;:11;:13::i;:::-;16241:5;:22;16237:58;;16272:23;;;;;;;;;;;;;;16237:58;16313:5;16306:12;;16109:217;;;:::o;33758:27::-;;;;;;;;;;;;;:::o;34029:106::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34116:11:::1;34104:9;:23;;;;;;;;;;;;:::i;:::-;;34029:106:::0;:::o;33532:39::-;;;;:::o;33119:31::-;;;;;;;;;;;;;:::o;19455:124::-;19519:7;19546:20;19558:7;19546:11;:20::i;:::-;:25;;;19539:32;;19455:124;;;:::o;18234:206::-;18298:7;18339:1;18322:19;;:5;:19;;;18318:60;;;18350:28;;;;;;;;;;;;;;18318:60;18404:12;:19;18417:5;18404:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;18396:36;;18389:43;;18234:206;;;:::o;32131:103::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32196:30:::1;32223:1;32196:18;:30::i;:::-;32131:103::o:0;35223:221::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35317:7:::1;;35305:8;:19;;35297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35386:8;35375:7;;:19;;;;;;;:::i;:::-;;;;;;;;35405:31;35415:10;35427:8;35405:9;:31::i;:::-;35223:221:::0;:::o;34698:101::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34783:8:::1;34769:11;:22;;;;34698:101:::0;:::o;31480:87::-;31526:7;31553:6;;;;;;;;;;;31546:13;;31480:87;:::o;34807:88::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34879:8:::1;34871:5;:16;;;;34807:88:::0;:::o;19815:104::-;19871:13;19904:7;19897:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19815:104;:::o;33578:33::-;;;;:::o;21554:302::-;21680:12;:10;:12::i;:::-;21668:24;;:8;:24;;;21664:54;;;21701:17;;;;;;;;;;;;;;21664:54;21776:8;21731:18;:32;21750:12;:10;:12::i;:::-;21731:32;;;;;;;;;;;;;;;:42;21764:8;21731:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;21829:8;21800:48;;21815:12;:10;:12::i;:::-;21800:48;;;21839:8;21800:48;;;;;;:::i;:::-;;;;;;;;21554:302;;:::o;35141:74::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35199:8:::1;;;;;;;;;;;35198:9;35187:8;;:20;;;;;;;;;;;;;;;;;;35141:74::o:0;33661:27::-;;;;;;;;;;;;;:::o;22705:321::-;22864:28;22874:4;22880:2;22884:7;22864:9;:28::i;:::-;22908:48;22931:4;22937:2;22941:7;22950:5;22908:22;:48::i;:::-;22903:115;;22978:40;;;;;;;;;;;;;;22903:115;22705:321;;;;:::o;36835:719::-;36953:13;37006:16;37014:7;37006;:16::i;:::-;36984:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;37126:5;37114:17;;:8;;;;;;;;;;;:17;;;37110:71;;;37155:14;37148:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37110:71;37193:28;37224:10;:8;:10::i;:::-;37193:41;;37296:1;37271:14;37265:28;:32;:281;;;;;;;;;;;;;;;;;37389:14;37430:18;:7;:16;:18::i;:::-;37346:159;;;;;;;;;:::i;:::-;;;;;;;;;;;;;37265:281;37245:301;;;36835:719;;;;:::o;33498:27::-;;;;:::o;21927:214::-;22069:4;22098:18;:25;22117:5;22098:25;;;;;;;;;;;;;;;:35;22124:8;22098:35;;;;;;;;;;;;;;;;;;;;;;;;;22091:42;;21927:214;;;;:::o;34556:134::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34666:15:::1;34639:16;;:43;;;;;;;;;;;;;;;;;;34556:134:::0;:::o;34942:126::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35045:15:::1;35028:14;:32;;;;;;;;;;;;:::i;:::-;;34942:126:::0;:::o;32389:238::-;31711:12;:10;:12::i;:::-;31700:23;;:7;:5;:7::i;:::-;:23;;;31692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32512:1:::1;32492:22;;:8;:22;;;;32470:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;32591:28;32610:8;32591:18;:28::i;:::-;32389:238:::0;:::o;33086:26::-;;;;;;;;;;;;;:::o;35452:765::-;35578:1;35542:11;;;;;;;;;;;:21;;;35564:10;35542:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;:83;;;;35624:1;35583:16;;;;;;;;;;;:26;;;35610:10;35583:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;35542:83;35520:178;;;;;;;;;;;;:::i;:::-;;;;;;;;;35738:5;35719:24;;:15;;;;;;;;;;;:24;;;35711:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;35811:1;35796:12;:16;35774:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;35968:7;;35956:9;;:19;;;;:::i;:::-;35940:12;35924:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:51;;35902:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;36095:9;36079:12;36065:11;;:26;;;;:::i;:::-;:39;36043:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;36174:35;36184:10;36196:12;36174:9;:35::i;:::-;35452:765;:::o;6250:207::-;6380:4;6424:25;6409:40;;;:11;:40;;;;6402:47;;6250:207;;;:::o;1736:98::-;1789:7;1816:10;1809:17;;1736:98;:::o;23401:104::-;23470:27;23480:2;23484:8;23470:27;;;;;;;;;;;;:9;:27::i;:::-;23401:104;;:::o;23281:112::-;23338:4;23372:13;;23362:7;:23;23355:30;;23281:112;;;:::o;28139:196::-;28281:2;28254:15;:24;28270:7;28254:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;28319:7;28315:2;28299:28;;28308:5;28299:28;;;;;;;;;;;;28139:196;;;:::o;26030:1991::-;26145:35;26183:20;26195:7;26183:11;:20::i;:::-;26145:58;;26216:22;26258:13;:18;;;26242:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;26317:12;:10;:12::i;:::-;26293:36;;:20;26305:7;26293:11;:20::i;:::-;:36;;;26242:87;:154;;;;26346:50;26363:13;:18;;;26383:12;:10;:12::i;:::-;26346:16;:50::i;:::-;26242:154;26216:181;;26415:17;26410:66;;26441:35;;;;;;;;;;;;;;26410:66;26513:4;26491:26;;:13;:18;;;:26;;;26487:67;;26526:28;;;;;;;;;;;;;;26487:67;26583:1;26569:16;;:2;:16;;;26565:52;;;26594:23;;;;;;;;;;;;;;26565:52;26741:49;26758:1;26762:7;26771:13;:18;;;26741:8;:49::i;:::-;27116:1;27086:12;:18;27099:4;27086:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27160:1;27132:12;:16;27145:2;27132:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27206:2;27178:11;:20;27190:7;27178:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;27268:15;27223:11;:20;27235:7;27223:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;27536:19;27568:1;27558:7;:11;27536:33;;27629:1;27588:43;;:11;:24;27600:11;27588:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;27584:321;;;27656:20;27664:11;27656:7;:20::i;:::-;27652:238;;;27733:13;:18;;;27701:11;:24;27713:11;27701:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;27816:13;:54;;;27774:11;:24;27786:11;27774:24;;;;;;;;;;;:39;;;:96;;;;;;;;;;;;;;;;;;27652:238;27584:321;27061:855;27952:7;27948:2;27933:27;;27942:4;27933:27;;;;;;;;;;;;27971:42;27992:4;27998:2;28002:7;28011:1;27971:20;:42::i;:::-;26134:1887;;26030:1991;;;:::o;18857:536::-;18945:21;;:::i;:::-;18989:16;18997:7;18989;:16::i;:::-;18984:61;;19014:31;;;;;;;;;;;;;;18984:61;19088:12;19103:7;19088:22;;19083:245;19120:1;19112:4;:9;19083:245;;19150:31;19184:11;:17;19196:4;19184:17;;;;;;;;;;;19150:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19250:1;19224:28;;:9;:14;;;:28;;;19220:93;;19284:9;19277:16;;;;;;19220:93;19131:197;19123:6;;;;;;;;19083:245;;;;19358:27;;;;;;;;;;;;;;18857:536;;;;:::o;32787:191::-;32861:16;32880:6;;;;;;;;;;;32861:25;;32906:8;32897:6;;:17;;;;;;;;;;;;;;;;;;32961:8;32930:40;;32951:8;32930:40;;;;;;;;;;;;32850:128;32787:191;:::o;28900:919::-;29055:4;29076:15;:2;:13;;;:15::i;:::-;29072:740;;;29145:2;29129:36;;;29188:12;:10;:12::i;:::-;29223:4;29250:7;29280:5;29129:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;29108:649;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29508:1;29491:6;:13;:18;29487:255;;;29539:40;;;;;;;;;;;;;;29487:255;29692:6;29686:13;29677:6;29673:2;29669:15;29662:38;29108:649;29378:45;;;29368:55;;;:6;:55;;;;29361:62;;;;;29072:740;29796:4;29789:11;;28900:919;;;;;;;:::o;34143:110::-;34203:13;34236:9;34229:16;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34143:110;:::o;223:532::-;279:13;318:1;309:5;:10;305:53;;;336:10;;;;;;;;;;;;;;;;;;;;;305:53;368:12;383:5;368:20;;399:14;424:78;439:1;431:4;:9;424:78;;457:8;;;;;:::i;:::-;;;;488:2;480:10;;;;;:::i;:::-;;;424:78;;;512:19;544:6;534:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;512:39;;562:154;578:1;569:5;:10;562:154;;606:1;596:11;;;;;:::i;:::-;;;673:2;665:5;:10;;;;:::i;:::-;652:2;:24;;;;:::i;:::-;639:39;;622:6;629;622:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;702:2;693:11;;;;;:::i;:::-;;;562:154;;;740:6;726:21;;;;;223:532;;;;:::o;23868:163::-;23991:32;23997:2;24001:8;24011:5;24018:4;23991:5;:32::i;:::-;23868:163;;;:::o;30878:158::-;;;;;:::o;1973:115::-;2033:4;2079:1;2057:7;:19;;;:23;2050:30;;1973:115;;;:::o;24290:1486::-;24429:20;24452:13;;24429:36;;24494:1;24480:16;;:2;:16;;;24476:48;;;24505:19;;;;;;;;;;;;;;24476:48;24973:8;24937:12;:16;24950:2;24937:16;;;;;;;;;;;;;;;:24;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25038:8;24997:12;:16;25010:2;24997:16;;;;;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25097:2;25064:11;:25;25076:12;25064:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;25164:15;25114:11;:25;25126:12;25114:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;25197:20;25220:12;25197:35;;25254:9;25249:391;25269:8;25265:1;:12;25249:391;;;25333:12;25329:2;25308:38;;25325:1;25308:38;;;;;;;;;;;;25391:4;:89;;;;;25421:59;25452:1;25456:2;25460:12;25474:5;25421:22;:59::i;:::-;25420:60;25391:89;25365:225;;;25530:40;;;;;;;;;;;;;;25365:225;25610:14;;;;;;;25279:3;;;;;;;25249:391;;;;25672:12;25656:13;:28;;;;24912:784;25708:60;25737:1;25741:2;25745:12;25759:8;25708:20;:60::i;:::-;24418:1358;24290:1486;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:143::-;2334:5;2365:6;2359:13;2350:22;;2381:33;2408:5;2381:33;:::i;:::-;2277:143;;;;:::o;2426:329::-;2485:6;2534:2;2522:9;2513:7;2509:23;2505:32;2502:119;;;2540:79;;:::i;:::-;2502:119;2660:1;2685:53;2730:7;2721:6;2710:9;2706:22;2685:53;:::i;:::-;2675:63;;2631:117;2426:329;;;;:::o;2761:474::-;2829:6;2837;2886:2;2874:9;2865:7;2861:23;2857:32;2854:119;;;2892:79;;:::i;:::-;2854:119;3012:1;3037:53;3082:7;3073:6;3062:9;3058:22;3037:53;:::i;:::-;3027:63;;2983:117;3139:2;3165:53;3210:7;3201:6;3190:9;3186:22;3165:53;:::i;:::-;3155:63;;3110:118;2761:474;;;;;:::o;3241:619::-;3318:6;3326;3334;3383:2;3371:9;3362:7;3358:23;3354:32;3351:119;;;3389:79;;:::i;:::-;3351:119;3509:1;3534:53;3579:7;3570:6;3559:9;3555:22;3534:53;:::i;:::-;3524:63;;3480:117;3636:2;3662:53;3707:7;3698:6;3687:9;3683:22;3662:53;:::i;:::-;3652:63;;3607:118;3764:2;3790:53;3835:7;3826:6;3815:9;3811:22;3790:53;:::i;:::-;3780:63;;3735:118;3241:619;;;;;:::o;3866:943::-;3961:6;3969;3977;3985;4034:3;4022:9;4013:7;4009:23;4005:33;4002:120;;;4041:79;;:::i;:::-;4002:120;4161:1;4186:53;4231:7;4222:6;4211:9;4207:22;4186:53;:::i;:::-;4176:63;;4132:117;4288:2;4314:53;4359:7;4350:6;4339:9;4335:22;4314:53;:::i;:::-;4304:63;;4259:118;4416:2;4442:53;4487:7;4478:6;4467:9;4463:22;4442:53;:::i;:::-;4432:63;;4387:118;4572:2;4561:9;4557:18;4544:32;4603:18;4595:6;4592:30;4589:117;;;4625:79;;:::i;:::-;4589:117;4730:62;4784:7;4775:6;4764:9;4760:22;4730:62;:::i;:::-;4720:72;;4515:287;3866:943;;;;;;;:::o;4815:468::-;4880:6;4888;4937:2;4925:9;4916:7;4912:23;4908:32;4905:119;;;4943:79;;:::i;:::-;4905:119;5063:1;5088:53;5133:7;5124:6;5113:9;5109:22;5088:53;:::i;:::-;5078:63;;5034:117;5190:2;5216:50;5258:7;5249:6;5238:9;5234:22;5216:50;:::i;:::-;5206:60;;5161:115;4815:468;;;;;:::o;5289:474::-;5357:6;5365;5414:2;5402:9;5393:7;5389:23;5385:32;5382:119;;;5420:79;;:::i;:::-;5382:119;5540:1;5565:53;5610:7;5601:6;5590:9;5586:22;5565:53;:::i;:::-;5555:63;;5511:117;5667:2;5693:53;5738:7;5729:6;5718:9;5714:22;5693:53;:::i;:::-;5683:63;;5638:118;5289:474;;;;;:::o;5769:327::-;5827:6;5876:2;5864:9;5855:7;5851:23;5847:32;5844:119;;;5882:79;;:::i;:::-;5844:119;6002:1;6027:52;6071:7;6062:6;6051:9;6047:22;6027:52;:::i;:::-;6017:62;;5973:116;5769:327;;;;:::o;6102:349::-;6171:6;6220:2;6208:9;6199:7;6195:23;6191:32;6188:119;;;6226:79;;:::i;:::-;6188:119;6346:1;6371:63;6426:7;6417:6;6406:9;6402:22;6371:63;:::i;:::-;6361:73;;6317:127;6102:349;;;;:::o;6457:509::-;6526:6;6575:2;6563:9;6554:7;6550:23;6546:32;6543:119;;;6581:79;;:::i;:::-;6543:119;6729:1;6718:9;6714:17;6701:31;6759:18;6751:6;6748:30;6745:117;;;6781:79;;:::i;:::-;6745:117;6886:63;6941:7;6932:6;6921:9;6917:22;6886:63;:::i;:::-;6876:73;;6672:287;6457:509;;;;:::o;6972:329::-;7031:6;7080:2;7068:9;7059:7;7055:23;7051:32;7048:119;;;7086:79;;:::i;:::-;7048:119;7206:1;7231:53;7276:7;7267:6;7256:9;7252:22;7231:53;:::i;:::-;7221:63;;7177:117;6972:329;;;;:::o;7307:351::-;7377:6;7426:2;7414:9;7405:7;7401:23;7397:32;7394:119;;;7432:79;;:::i;:::-;7394:119;7552:1;7577:64;7633:7;7624:6;7613:9;7609:22;7577:64;:::i;:::-;7567:74;;7523:128;7307:351;;;;:::o;7664:118::-;7751:24;7769:5;7751:24;:::i;:::-;7746:3;7739:37;7664:118;;:::o;7788:109::-;7869:21;7884:5;7869:21;:::i;:::-;7864:3;7857:34;7788:109;;:::o;7903:360::-;7989:3;8017:38;8049:5;8017:38;:::i;:::-;8071:70;8134:6;8129:3;8071:70;:::i;:::-;8064:77;;8150:52;8195:6;8190:3;8183:4;8176:5;8172:16;8150:52;:::i;:::-;8227:29;8249:6;8227:29;:::i;:::-;8222:3;8218:39;8211:46;;7993:270;7903:360;;;;:::o;8269:161::-;8371:52;8417:5;8371:52;:::i;:::-;8366:3;8359:65;8269:161;;:::o;8436:364::-;8524:3;8552:39;8585:5;8552:39;:::i;:::-;8607:71;8671:6;8666:3;8607:71;:::i;:::-;8600:78;;8687:52;8732:6;8727:3;8720:4;8713:5;8709:16;8687:52;:::i;:::-;8764:29;8786:6;8764:29;:::i;:::-;8759:3;8755:39;8748:46;;8528:272;8436:364;;;;:::o;8806:377::-;8912:3;8940:39;8973:5;8940:39;:::i;:::-;8995:89;9077:6;9072:3;8995:89;:::i;:::-;8988:96;;9093:52;9138:6;9133:3;9126:4;9119:5;9115:16;9093:52;:::i;:::-;9170:6;9165:3;9161:16;9154:23;;8916:267;8806:377;;;;:::o;9189:366::-;9331:3;9352:67;9416:2;9411:3;9352:67;:::i;:::-;9345:74;;9428:93;9517:3;9428:93;:::i;:::-;9546:2;9541:3;9537:12;9530:19;;9189:366;;;:::o;9561:::-;9703:3;9724:67;9788:2;9783:3;9724:67;:::i;:::-;9717:74;;9800:93;9889:3;9800:93;:::i;:::-;9918:2;9913:3;9909:12;9902:19;;9561:366;;;:::o;9933:::-;10075:3;10096:67;10160:2;10155:3;10096:67;:::i;:::-;10089:74;;10172:93;10261:3;10172:93;:::i;:::-;10290:2;10285:3;10281:12;10274:19;;9933:366;;;:::o;10305:::-;10447:3;10468:67;10532:2;10527:3;10468:67;:::i;:::-;10461:74;;10544:93;10633:3;10544:93;:::i;:::-;10662:2;10657:3;10653:12;10646:19;;10305:366;;;:::o;10677:400::-;10837:3;10858:84;10940:1;10935:3;10858:84;:::i;:::-;10851:91;;10951:93;11040:3;10951:93;:::i;:::-;11069:1;11064:3;11060:11;11053:18;;10677:400;;;:::o;11083:366::-;11225:3;11246:67;11310:2;11305:3;11246:67;:::i;:::-;11239:74;;11322:93;11411:3;11322:93;:::i;:::-;11440:2;11435:3;11431:12;11424:19;;11083:366;;;:::o;11455:::-;11597:3;11618:67;11682:2;11677:3;11618:67;:::i;:::-;11611:74;;11694:93;11783:3;11694:93;:::i;:::-;11812:2;11807:3;11803:12;11796:19;;11455:366;;;:::o;11827:::-;11969:3;11990:67;12054:2;12049:3;11990:67;:::i;:::-;11983:74;;12066:93;12155:3;12066:93;:::i;:::-;12184:2;12179:3;12175:12;12168:19;;11827:366;;;:::o;12199:::-;12341:3;12362:67;12426:2;12421:3;12362:67;:::i;:::-;12355:74;;12438:93;12527:3;12438:93;:::i;:::-;12556:2;12551:3;12547:12;12540:19;;12199:366;;;:::o;12571:::-;12713:3;12734:67;12798:2;12793:3;12734:67;:::i;:::-;12727:74;;12810:93;12899:3;12810:93;:::i;:::-;12928:2;12923:3;12919:12;12912:19;;12571:366;;;:::o;12943:::-;13085:3;13106:67;13170:2;13165:3;13106:67;:::i;:::-;13099:74;;13182:93;13271:3;13182:93;:::i;:::-;13300:2;13295:3;13291:12;13284:19;;12943:366;;;:::o;13315:118::-;13402:24;13420:5;13402:24;:::i;:::-;13397:3;13390:37;13315:118;;:::o;13439:701::-;13720:3;13742:95;13833:3;13824:6;13742:95;:::i;:::-;13735:102;;13854:95;13945:3;13936:6;13854:95;:::i;:::-;13847:102;;13966:148;14110:3;13966:148;:::i;:::-;13959:155;;14131:3;14124:10;;13439:701;;;;;:::o;14146:222::-;14239:4;14277:2;14266:9;14262:18;14254:26;;14290:71;14358:1;14347:9;14343:17;14334:6;14290:71;:::i;:::-;14146:222;;;;:::o;14374:640::-;14569:4;14607:3;14596:9;14592:19;14584:27;;14621:71;14689:1;14678:9;14674:17;14665:6;14621:71;:::i;:::-;14702:72;14770:2;14759:9;14755:18;14746:6;14702:72;:::i;:::-;14784;14852:2;14841:9;14837:18;14828:6;14784:72;:::i;:::-;14903:9;14897:4;14893:20;14888:2;14877:9;14873:18;14866:48;14931:76;15002:4;14993:6;14931:76;:::i;:::-;14923:84;;14374:640;;;;;;;:::o;15020:210::-;15107:4;15145:2;15134:9;15130:18;15122:26;;15158:65;15220:1;15209:9;15205:17;15196:6;15158:65;:::i;:::-;15020:210;;;;:::o;15236:252::-;15344:4;15382:2;15371:9;15367:18;15359:26;;15395:86;15478:1;15467:9;15463:17;15454:6;15395:86;:::i;:::-;15236:252;;;;:::o;15494:313::-;15607:4;15645:2;15634:9;15630:18;15622:26;;15694:9;15688:4;15684:20;15680:1;15669:9;15665:17;15658:47;15722:78;15795:4;15786:6;15722:78;:::i;:::-;15714:86;;15494:313;;;;:::o;15813:419::-;15979:4;16017:2;16006:9;16002:18;15994:26;;16066:9;16060:4;16056:20;16052:1;16041:9;16037:17;16030:47;16094:131;16220:4;16094:131;:::i;:::-;16086:139;;15813:419;;;:::o;16238:::-;16404:4;16442:2;16431:9;16427:18;16419:26;;16491:9;16485:4;16481:20;16477:1;16466:9;16462:17;16455:47;16519:131;16645:4;16519:131;:::i;:::-;16511:139;;16238:419;;;:::o;16663:::-;16829:4;16867:2;16856:9;16852:18;16844:26;;16916:9;16910:4;16906:20;16902:1;16891:9;16887:17;16880:47;16944:131;17070:4;16944:131;:::i;:::-;16936:139;;16663:419;;;:::o;17088:::-;17254:4;17292:2;17281:9;17277:18;17269:26;;17341:9;17335:4;17331:20;17327:1;17316:9;17312:17;17305:47;17369:131;17495:4;17369:131;:::i;:::-;17361:139;;17088:419;;;:::o;17513:::-;17679:4;17717:2;17706:9;17702:18;17694:26;;17766:9;17760:4;17756:20;17752:1;17741:9;17737:17;17730:47;17794:131;17920:4;17794:131;:::i;:::-;17786:139;;17513:419;;;:::o;17938:::-;18104:4;18142:2;18131:9;18127:18;18119:26;;18191:9;18185:4;18181:20;18177:1;18166:9;18162:17;18155:47;18219:131;18345:4;18219:131;:::i;:::-;18211:139;;17938:419;;;:::o;18363:::-;18529:4;18567:2;18556:9;18552:18;18544:26;;18616:9;18610:4;18606:20;18602:1;18591:9;18587:17;18580:47;18644:131;18770:4;18644:131;:::i;:::-;18636:139;;18363:419;;;:::o;18788:::-;18954:4;18992:2;18981:9;18977:18;18969:26;;19041:9;19035:4;19031:20;19027:1;19016:9;19012:17;19005:47;19069:131;19195:4;19069:131;:::i;:::-;19061:139;;18788:419;;;:::o;19213:::-;19379:4;19417:2;19406:9;19402:18;19394:26;;19466:9;19460:4;19456:20;19452:1;19441:9;19437:17;19430:47;19494:131;19620:4;19494:131;:::i;:::-;19486:139;;19213:419;;;:::o;19638:::-;19804:4;19842:2;19831:9;19827:18;19819:26;;19891:9;19885:4;19881:20;19877:1;19866:9;19862:17;19855:47;19919:131;20045:4;19919:131;:::i;:::-;19911:139;;19638:419;;;:::o;20063:222::-;20156:4;20194:2;20183:9;20179:18;20171:26;;20207:71;20275:1;20264:9;20260:17;20251:6;20207:71;:::i;:::-;20063:222;;;;:::o;20291:129::-;20325:6;20352:20;;:::i;:::-;20342:30;;20381:33;20409:4;20401:6;20381:33;:::i;:::-;20291:129;;;:::o;20426:75::-;20459:6;20492:2;20486:9;20476:19;;20426:75;:::o;20507:307::-;20568:4;20658:18;20650:6;20647:30;20644:56;;;20680:18;;:::i;:::-;20644:56;20718:29;20740:6;20718:29;:::i;:::-;20710:37;;20802:4;20796;20792:15;20784:23;;20507:307;;;:::o;20820:308::-;20882:4;20972:18;20964:6;20961:30;20958:56;;;20994:18;;:::i;:::-;20958:56;21032:29;21054:6;21032:29;:::i;:::-;21024:37;;21116:4;21110;21106:15;21098:23;;20820:308;;;:::o;21134:98::-;21185:6;21219:5;21213:12;21203:22;;21134:98;;;:::o;21238:99::-;21290:6;21324:5;21318:12;21308:22;;21238:99;;;:::o;21343:168::-;21426:11;21460:6;21455:3;21448:19;21500:4;21495:3;21491:14;21476:29;;21343:168;;;;:::o;21517:169::-;21601:11;21635:6;21630:3;21623:19;21675:4;21670:3;21666:14;21651:29;;21517:169;;;;:::o;21692:148::-;21794:11;21831:3;21816:18;;21692:148;;;;:::o;21846:305::-;21886:3;21905:20;21923:1;21905:20;:::i;:::-;21900:25;;21939:20;21957:1;21939:20;:::i;:::-;21934:25;;22093:1;22025:66;22021:74;22018:1;22015:81;22012:107;;;22099:18;;:::i;:::-;22012:107;22143:1;22140;22136:9;22129:16;;21846:305;;;;:::o;22157:185::-;22197:1;22214:20;22232:1;22214:20;:::i;:::-;22209:25;;22248:20;22266:1;22248:20;:::i;:::-;22243:25;;22287:1;22277:35;;22292:18;;:::i;:::-;22277:35;22334:1;22331;22327:9;22322:14;;22157:185;;;;:::o;22348:348::-;22388:7;22411:20;22429:1;22411:20;:::i;:::-;22406:25;;22445:20;22463:1;22445:20;:::i;:::-;22440:25;;22633:1;22565:66;22561:74;22558:1;22555:81;22550:1;22543:9;22536:17;22532:105;22529:131;;;22640:18;;:::i;:::-;22529:131;22688:1;22685;22681:9;22670:20;;22348:348;;;;:::o;22702:191::-;22742:4;22762:20;22780:1;22762:20;:::i;:::-;22757:25;;22796:20;22814:1;22796:20;:::i;:::-;22791:25;;22835:1;22832;22829:8;22826:34;;;22840:18;;:::i;:::-;22826:34;22885:1;22882;22878:9;22870:17;;22702:191;;;;:::o;22899:96::-;22936:7;22965:24;22983:5;22965:24;:::i;:::-;22954:35;;22899:96;;;:::o;23001:90::-;23035:7;23078:5;23071:13;23064:21;23053:32;;23001:90;;;:::o;23097:149::-;23133:7;23173:66;23166:5;23162:78;23151:89;;23097:149;;;:::o;23252:126::-;23289:7;23329:42;23322:5;23318:54;23307:65;;23252:126;;;:::o;23384:77::-;23421:7;23450:5;23439:16;;23384:77;;;:::o;23467:141::-;23532:9;23565:37;23596:5;23565:37;:::i;:::-;23552:50;;23467:141;;;:::o;23614:126::-;23664:9;23697:37;23728:5;23697:37;:::i;:::-;23684:50;;23614:126;;;:::o;23746:113::-;23796:9;23829:24;23847:5;23829:24;:::i;:::-;23816:37;;23746:113;;;:::o;23865:154::-;23949:6;23944:3;23939;23926:30;24011:1;24002:6;23997:3;23993:16;23986:27;23865:154;;;:::o;24025:307::-;24093:1;24103:113;24117:6;24114:1;24111:13;24103:113;;;24202:1;24197:3;24193:11;24187:18;24183:1;24178:3;24174:11;24167:39;24139:2;24136:1;24132:10;24127:15;;24103:113;;;24234:6;24231:1;24228:13;24225:101;;;24314:1;24305:6;24300:3;24296:16;24289:27;24225:101;24074:258;24025:307;;;:::o;24338:320::-;24382:6;24419:1;24413:4;24409:12;24399:22;;24466:1;24460:4;24456:12;24487:18;24477:81;;24543:4;24535:6;24531:17;24521:27;;24477:81;24605:2;24597:6;24594:14;24574:18;24571:38;24568:84;;;24624:18;;:::i;:::-;24568:84;24389:269;24338:320;;;:::o;24664:281::-;24747:27;24769:4;24747:27;:::i;:::-;24739:6;24735:40;24877:6;24865:10;24862:22;24841:18;24829:10;24826:34;24823:62;24820:88;;;24888:18;;:::i;:::-;24820:88;24928:10;24924:2;24917:22;24707:238;24664:281;;:::o;24951:233::-;24990:3;25013:24;25031:5;25013:24;:::i;:::-;25004:33;;25059:66;25052:5;25049:77;25046:103;;;25129:18;;:::i;:::-;25046:103;25176:1;25169:5;25165:13;25158:20;;24951:233;;;:::o;25190:176::-;25222:1;25239:20;25257:1;25239:20;:::i;:::-;25234:25;;25273:20;25291:1;25273:20;:::i;:::-;25268:25;;25312:1;25302:35;;25317:18;;:::i;:::-;25302:35;25358:1;25355;25351:9;25346:14;;25190:176;;;;:::o;25372:180::-;25420:77;25417:1;25410:88;25517:4;25514:1;25507:15;25541:4;25538:1;25531:15;25558:180;25606:77;25603:1;25596:88;25703:4;25700:1;25693:15;25727:4;25724:1;25717:15;25744:180;25792:77;25789:1;25782:88;25889:4;25886:1;25879:15;25913:4;25910:1;25903:15;25930:180;25978:77;25975:1;25968:88;26075:4;26072:1;26065:15;26099:4;26096:1;26089:15;26116:180;26164:77;26161:1;26154:88;26261:4;26258:1;26251:15;26285:4;26282:1;26275:15;26302:180;26350:77;26347:1;26340:88;26447:4;26444:1;26437:15;26471:4;26468:1;26461:15;26488:117;26597:1;26594;26587:12;26611:117;26720:1;26717;26710:12;26734:117;26843:1;26840;26833:12;26857:117;26966:1;26963;26956:12;26980:102;27021:6;27072:2;27068:7;27063:2;27056:5;27052:14;27048:28;27038:38;;26980:102;;;:::o;27088:225::-;27228:34;27224:1;27216:6;27212:14;27205:58;27297:8;27292:2;27284:6;27280:15;27273:33;27088:225;:::o;27319:238::-;27459:34;27455:1;27447:6;27443:14;27436:58;27528:21;27523:2;27515:6;27511:15;27504:46;27319:238;:::o;27563:232::-;27703:34;27699:1;27691:6;27687:14;27680:58;27772:15;27767:2;27759:6;27755:15;27748:40;27563:232;:::o;27801:170::-;27941:22;27937:1;27929:6;27925:14;27918:46;27801:170;:::o;27977:155::-;28117:7;28113:1;28105:6;28101:14;28094:31;27977:155;:::o;28138:182::-;28278:34;28274:1;28266:6;28262:14;28255:58;28138:182;:::o;28326:234::-;28466:34;28462:1;28454:6;28450:14;28443:58;28535:17;28530:2;28522:6;28518:15;28511:42;28326:234;:::o;28566:222::-;28706:34;28702:1;28694:6;28690:14;28683:58;28775:5;28770:2;28762:6;28758:15;28751:30;28566:222;:::o;28794:165::-;28934:17;28930:1;28922:6;28918:14;28911:41;28794:165;:::o;28965:177::-;29105:29;29101:1;29093:6;29089:14;29082:53;28965:177;:::o;29148:179::-;29288:31;29284:1;29276:6;29272:14;29265:55;29148:179;:::o;29333:122::-;29406:24;29424:5;29406:24;:::i;:::-;29399:5;29396:35;29386:63;;29445:1;29442;29435:12;29386:63;29333:122;:::o;29461:116::-;29531:21;29546:5;29531:21;:::i;:::-;29524:5;29521:32;29511:60;;29567:1;29564;29557:12;29511:60;29461:116;:::o;29583:120::-;29655:23;29672:5;29655:23;:::i;:::-;29648:5;29645:34;29635:62;;29693:1;29690;29683:12;29635:62;29583:120;:::o;29709:122::-;29782:24;29800:5;29782:24;:::i;:::-;29775:5;29772:35;29762:63;;29821:1;29818;29811:12;29762:63;29709:122;:::o

Swarm Source

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