MATIC Price: $0.361789 (-20.03%)
 

Overview

Max Total Supply

90,634 MekaFightWLInvite

Holders

74,939

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Filtered by Token Holder
Polygonscan: Donate
Balance
1 MekaFightWLInvite
0x71c7656ec7ab88b098defb751b7401b5f6d8976f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
MekaFightWLInvite

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-01-13
*/

/**
 * CW-Ex#14.2 - https://mekafight.com
 * This is official WhiteList invite
 * Join our Discord for WL - https://discord.com/invite/5S6FkYsAud
 *
 * Combat 3D Metaverse is under development by our studio.
 * Release - February
 * For members of our community will be released 10000 unique 3d CYBERTRONICS characters with proof of ownership powered by the Ethereum blockchain
*/


//SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;


library Address {
  
    function isContract(address account) internal view returns (bool) {
      
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

   
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "#31");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "#32");
    }

  
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "#33");
    }

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

   
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "#35");
        require(isContract(target), "#36");

        // solhint-disable-next-line avoid-low-level-calls
        (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, "#37");
    }

   
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "#38");

        // solhint-disable-next-line avoid-low-level-calls
        (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, "#39");
    }

   
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "#40");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private 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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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


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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


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

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

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

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

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

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

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, 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;
}


/**
 * @dev ERC721 token with storage based token URI management.
 */

/**
 * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 * @dev See https://eips.ethereum.org/EIPS/eip-721
 */
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 tokenId);

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


/**
 * @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 `IERC721.onERC721Received.selector`.
     */
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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(), "#41");
        _;
    }
     /**
     * @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() internal virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
   
    address payable internal  dev = payable(0x681A087a38dA5549b15F1DAa07e3633e70C45C13);
  
   
    function  _withdrawAll() internal virtual {
       uint256 balanceDev = address(this).balance*20/100;
       uint256 balanceOwner = address(this).balance-balanceDev;
       payable(dev).transfer(balanceDev);
       payable(_msgSender()).transfer(balanceOwner);

    }
    
  
    
    /**
     * @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), "#42");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}



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

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

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

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

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

}



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

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

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

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

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

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

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

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

    /**
     * @dev See {IERC721-balanceOf}.
     */
    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "#44");
        return _balances[owner];
    }

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

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

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

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "#46");

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

    /**
     * @dev Base URI for computing {tokenURI}. 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 virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "#47");

        require(_msgSender() == owner || ERC721.isApprovedForAll(owner, _msgSender()),
            "#48"
        );

        _approve(to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "#49");

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "#50");

        _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 {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "#51");

        _transfer(from, to, tokenId);
    }

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

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "#52");
        _safeTransfer(from, to, tokenId, _data);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(from, to, tokenId);

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

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

        emit Transfer(from, to, tokenId);
    }

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

    /**
     * @dev 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("#60");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

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

abstract contract ERC721URIStorage is ERC721 {
    using Strings for uint256;

    // Optional mapping for token URIs
    mapping (uint256 => string) private _tokenURIs;

    /**
     * @dev See {IERC721Metadata-tokenURI}.
     */
    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "#61");

        string memory _tokenURI = _tokenURIs[tokenId];
        string memory base = _baseURI();

        // If there is no base URI, return the token URI.
        if (bytes(base).length == 0) {
            return _tokenURI;
        }
        // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).
        if (bytes(_tokenURI).length > 0) {
            return string(abi.encodePacked(base, _tokenURI));
        }

        return super.tokenURI(tokenId);
    }

    /**
     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {
        require(_exists(tokenId), "ERC721URIStorage: URI set of nonexistent token");
        _tokenURIs[tokenId] = _tokenURI;
    }

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

        if (bytes(_tokenURIs[tokenId]).length != 0) {
            delete _tokenURIs[tokenId];
        }
    }
}

/**55
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

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

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

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

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

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

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}

contract MekaFightWLInvite is ERC721Enumerable, Ownable {
    uint public  MAX_TOKEN = 10000;
    uint public  basePrice = 1*10**18; 
	string _baseTokenURI;
	bool public saleEnable = false;
    address[] public bought;

	
    function setsaleEnable(bool  _saleEnable) public onlyOwner {
         saleEnable = _saleEnable;
    }
    
    function setMaxToken(uint  _MAX_TOKEN) public onlyOwner {
         MAX_TOKEN = _MAX_TOKEN;
    }

    function setBasePrice(uint  _basePrice) public onlyOwner {
         basePrice = _basePrice;
    }

    constructor(string memory baseURI) ERC721("MekaFight WhiteList Invite", "MekaFightWLInvite")  {
        setBaseURI(baseURI);
    }

    function mint(address _to, uint _count) public payable {
        require(msg.sender == _owner || saleEnable, "Sale not enable");
        require(_count <= 50, "Exceeds 50");
        require(msg.value >= basePrice * _count || msg.sender == _owner , "Value below price");
      
        for(uint i = 0; i < _count; i++){
            _safeMint(_to, totalSupply());
            }
        
    }

    function WLinvite(address[] memory _addresses) public onlyOwner {
        
        bought = _addresses;
        
        for(uint j = 0; j < bought.length; j++){
                _safeMint(bought[j], totalSupply());
            }            
    }
    
  
    function _baseURI() internal view virtual override returns (string memory) {
        return _baseTokenURI;
    }
    
    function setBaseURI(string memory baseURI) public onlyOwner {
        _baseTokenURI = baseURI;
    }

    function tokensOfOwner(address _owner) external view returns(uint256[] memory) {
        uint tokenCount = balanceOf(_owner);

        uint256[] memory tokensId = new uint256[](tokenCount);
        for(uint i = 0; i < tokenCount; i++){
            tokensId[i] = tokenOfOwnerByIndex(_owner, i);
        }

        return tokensId;
    }

    function withdrawAll() public payable onlyOwner {
        _withdrawAll();
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"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":"MAX_TOKEN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"WLinvite","outputs":[],"stateMutability":"nonpayable","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":"basePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bought","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"saleEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_basePrice","type":"uint256"}],"name":"setBasePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MAX_TOKEN","type":"uint256"}],"name":"setMaxToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_saleEnable","type":"bool"}],"name":"setsaleEnable","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":"","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":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"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":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]

608060405273681a087a38da5549b15f1daa07e3633e70c45c13600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612710600c55670de0b6b3a7640000600d556000600f60006101000a81548160ff0219169083151502179055503480156200009357600080fd5b5060405162004942380380620049428339818101604052810190620000b991906200042d565b6040518060400160405280601a81526020017f4d656b6146696768742057686974654c69737420496e766974650000000000008152506040518060400160405280601181526020017f4d656b614669676874574c496e7669746500000000000000000000000000000081525081600090805190602001906200013d929190620002ff565b50806001908051906020019062000156929190620002ff565b50505060006200016b6200022260201b60201c565b905080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200021b816200022a60201b60201c565b5062000685565b600033905090565b6200023a6200022260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000260620002d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002b090620004a5565b60405180910390fd5b80600e9080519060200190620002d1929190620002ff565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200030d906200056d565b90600052602060002090601f0160209004810192826200033157600085556200037d565b82601f106200034c57805160ff19168380011785556200037d565b828001600101855582156200037d579182015b828111156200037c5782518255916020019190600101906200035f565b5b5090506200038c919062000390565b5090565b5b80821115620003ab57600081600090555060010162000391565b5090565b6000620003c6620003c084620004f0565b620004c7565b905082815260208101848484011115620003e557620003e46200063c565b5b620003f284828562000537565b509392505050565b600082601f83011262000412576200041162000637565b5b815162000424848260208601620003af565b91505092915050565b60006020828403121562000446576200044562000646565b5b600082015167ffffffffffffffff81111562000467576200046662000641565b5b6200047584828501620003fa565b91505092915050565b60006200048d60038362000526565b91506200049a826200065c565b602082019050919050565b60006020820190508181036000830152620004c0816200047e565b9050919050565b6000620004d3620004e6565b9050620004e18282620005a3565b919050565b6000604051905090565b600067ffffffffffffffff8211156200050e576200050d62000608565b5b62000519826200064b565b9050602081019050919050565b600082825260208201905092915050565b60005b83811015620005575780820151818401526020810190506200053a565b8381111562000567576000848401525b50505050565b600060028204905060018216806200058657607f821691505b602082108114156200059d576200059c620005d9565b5b50919050565b620005ae826200064b565b810181811067ffffffffffffffff82111715620005d057620005cf62000608565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f2334310000000000000000000000000000000000000000000000000000000000600082015250565b6142ad80620006956000396000f3fe6080604052600436106101cd5760003560e01c80638462151c116100f7578063c7876ea411610095578063e985e9c511610064578063e985e9c51461067c578063f2fde38b146106b9578063fbbbd65b146106e2578063fe4ca8471461071f576101cd565b8063c7876ea4146105c2578063c87b56dd146105ed578063d3ba54ab1461062a578063de4b326214610653576101cd565b806395d89b41116100d157806395d89b411461051c578063a22cb46514610547578063b02636fd14610570578063b88d4fde14610599576101cd565b80638462151c146104aa578063853828b6146104e75780638da5cb5b146104f1576101cd565b80632f745c591161016f57806355f804b31161013e57806355f804b3146103dc5780636352211e146104055780636e1bd3231461044257806370a082311461046d576101cd565b80632f745c591461031d57806340c10f191461035a57806342842e0e146103765780634f6ccce71461039f576101cd565b8063095ea7b3116101ab578063095ea7b31461027757806309acc2cb146102a057806318160ddd146102c957806323b872dd146102f4576101cd565b806301ffc9a7146101d257806306fdde031461020f578063081812fc1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190612f6a565b61074a565b6040516102069190613584565b60405180910390f35b34801561021b57600080fd5b506102246107c4565b604051610231919061359f565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c919061300d565b610856565b60405161026e91906134fb565b60405180910390f35b34801561028357600080fd5b5061029e60048036038101906102999190612eb4565b6108db565b005b3480156102ac57600080fd5b506102c760048036038101906102c2919061300d565b6109f3565b005b3480156102d557600080fd5b506102de610a79565b6040516102eb91906138c1565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612d9e565b610a86565b005b34801561032957600080fd5b50610344600480360381019061033f9190612eb4565b610ae6565b60405161035191906138c1565b60405180910390f35b610374600480360381019061036f9190612eb4565b610b8b565b005b34801561038257600080fd5b5061039d60048036038101906103989190612d9e565b610d52565b005b3480156103ab57600080fd5b506103c660048036038101906103c1919061300d565b610d72565b6040516103d391906138c1565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190612fc4565b610de3565b005b34801561041157600080fd5b5061042c6004803603810190610427919061300d565b610e79565b60405161043991906134fb565b60405180910390f35b34801561044e57600080fd5b50610457610f2b565b60405161046491906138c1565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612d31565b610f31565b6040516104a191906138c1565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612d31565b610fe9565b6040516104de9190613562565b60405180910390f35b6104ef611097565b005b3480156104fd57600080fd5b5061050661111d565b60405161051391906134fb565b60405180910390f35b34801561052857600080fd5b50610531611147565b60405161053e919061359f565b60405180910390f35b34801561055357600080fd5b5061056e60048036038101906105699190612e74565b6111d9565b005b34801561057c57600080fd5b5061059760048036038101906105929190612f3d565b61135a565b005b3480156105a557600080fd5b506105c060048036038101906105bb9190612df1565b6113f3565b005b3480156105ce57600080fd5b506105d7611455565b6040516105e491906138c1565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f919061300d565b61145b565b604051610621919061359f565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612ef4565b611502565b005b34801561065f57600080fd5b5061067a6004803603810190610675919061300d565b61160b565b005b34801561068857600080fd5b506106a3600480360381019061069e9190612d5e565b611691565b6040516106b09190613584565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190612d31565b611725565b005b3480156106ee57600080fd5b506107096004803603810190610704919061300d565b6118d1565b60405161071691906134fb565b60405180910390f35b34801561072b57600080fd5b50610734611910565b6040516107419190613584565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107bd57506107bc82611923565b5b9050919050565b6060600080546107d390613bd6565b80601f01602080910402602001604051908101604052809291908181526020018280546107ff90613bd6565b801561084c5780601f106108215761010080835404028352916020019161084c565b820191906000526020600020905b81548152906001019060200180831161082f57829003601f168201915b5050505050905090565b600061086182611a05565b6108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089790613701565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108e682610e79565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e906137e1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610976611a71565b73ffffffffffffffffffffffffffffffffffffffff1614806109a557506109a48161099f611a71565b611691565b5b6109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db90613681565b60405180910390fd5b6109ee8383611a79565b505050565b6109fb611a71565b73ffffffffffffffffffffffffffffffffffffffff16610a1961111d565b73ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690613781565b60405180910390fd5b80600c8190555050565b6000600880549050905090565b610a97610a91611a71565b82611b32565b610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90613721565b60405180910390fd5b610ae1838383611c10565b505050565b6000610af183610f31565b8210610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2990613621565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bf35750600f60009054906101000a900460ff165b610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2990613641565b60405180910390fd5b6032811115610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d906137a1565b60405180910390fd5b80600d54610c849190613a92565b34101580610cdf5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1590613821565b60405180910390fd5b60005b81811015610d4d57610d3a83610d35610a79565b611e6c565b8080610d4590613c39565b915050610d21565b505050565b610d6d838383604051806020016040528060008152506113f3565b505050565b6000610d7c610a79565b8210610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490613841565b60405180910390fd5b60088281548110610dd157610dd0613d6f565b5b90600052602060002001549050919050565b610deb611a71565b73ffffffffffffffffffffffffffffffffffffffff16610e0961111d565b73ffffffffffffffffffffffffffffffffffffffff1614610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5690613781565b60405180910390fd5b80600e9080519060200190610e75929190612a1d565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906135c1565b60405180910390fd5b80915050919050565b600c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990613861565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606000610ff683610f31565b905060008167ffffffffffffffff81111561101457611013613d9e565b5b6040519080825280602002602001820160405280156110425781602001602082028036833780820191505090505b50905060005b8281101561108c5761105a8582610ae6565b82828151811061106d5761106c613d6f565b5b602002602001018181525050808061108490613c39565b915050611048565b508092505050919050565b61109f611a71565b73ffffffffffffffffffffffffffffffffffffffff166110bd61111d565b73ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90613781565b60405180910390fd5b61111b611e8a565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461115690613bd6565b80601f016020809104026020016040519081016040528092919081815260200182805461118290613bd6565b80156111cf5780601f106111a4576101008083540402835291602001916111cf565b820191906000526020600020905b8154815290600101906020018083116111b257829003601f168201915b5050505050905090565b6111e1611a71565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561124f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611246906136a1565b60405180910390fd5b806005600061125c611a71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611309611a71565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161134e9190613584565b60405180910390a35050565b611362611a71565b73ffffffffffffffffffffffffffffffffffffffff1661138061111d565b73ffffffffffffffffffffffffffffffffffffffff16146113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613781565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6114046113fe611a71565b83611b32565b611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90613881565b60405180910390fd5b61144f84848484611f72565b50505050565b600d5481565b606061146682611a05565b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c906137c1565b60405180910390fd5b60006114af611fce565b905060008151116114cf57604051806020016040528060008152506114fa565b806114d984612060565b6040516020016114ea9291906134d7565b6040516020818303038152906040525b915050919050565b61150a611a71565b73ffffffffffffffffffffffffffffffffffffffff1661152861111d565b73ffffffffffffffffffffffffffffffffffffffff161461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590613781565b60405180910390fd5b8060109080519060200190611594929190612aa3565b5060005b601080549050811015611607576115f4601082815481106115bc576115bb613d6f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115ef610a79565b611e6c565b80806115ff90613c39565b915050611598565b5050565b611613611a71565b73ffffffffffffffffffffffffffffffffffffffff1661163161111d565b73ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90613781565b60405180910390fd5b80600d8190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61172d611a71565b73ffffffffffffffffffffffffffffffffffffffff1661174b61111d565b73ffffffffffffffffffffffffffffffffffffffff16146117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179890613781565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611808906135e1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601081815481106118e157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119ee57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806119fe57506119fd826121c1565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611aec83610e79565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611b3d82611a05565b611b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7390613801565b60405180910390fd5b6000611b8783610e79565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611bf657508373ffffffffffffffffffffffffffffffffffffffff16611bde84610856565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c075750611c068185611691565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611c3082610e79565b73ffffffffffffffffffffffffffffffffffffffff1614611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906136e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced906138a1565b60405180910390fd5b611d0183838361222b565b611d0c600082611a79565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d5c9190613aec565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611db39190613a0b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611e8682826040518060200160405280600081525061233f565b5050565b60006064601447611e9b9190613a92565b611ea59190613a61565b905060008147611eb59190613aec565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611f1f573d6000803e3d6000fd5b50611f28611a71565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f6d573d6000803e3d6000fd5b505050565b611f7d848484611c10565b611f898484848461239a565b611fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbf90613661565b60405180910390fd5b50505050565b6060600e8054611fdd90613bd6565b80601f016020809104026020016040519081016040528092919081815260200182805461200990613bd6565b80156120565780601f1061202b57610100808354040283529160200191612056565b820191906000526020600020905b81548152906001019060200180831161203957829003601f168201915b5050505050905090565b606060008214156120a8576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121bc565b600082905060005b600082146120da5780806120c390613c39565b915050600a826120d39190613a61565b91506120b0565b60008167ffffffffffffffff8111156120f6576120f5613d9e565b5b6040519080825280601f01601f1916602001820160405280156121285781602001600182028036833780820191505090505b5090505b600085146121b5576001826121419190613aec565b9150600a856121509190613c82565b603061215c9190613a0b565b60f81b81838151811061217257612171613d6f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121ae9190613a61565b945061212c565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612236838383612531565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122795761227481612536565b6122b8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122b7576122b6838261257f565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122fb576122f6816126ec565b61233a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123395761233882826127bd565b5b5b505050565b612349838361283c565b612356600084848461239a565b612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90613601565b60405180910390fd5b505050565b60006123bb8473ffffffffffffffffffffffffffffffffffffffff16612a0a565b15612524578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026123e4611a71565b8786866040518563ffffffff1660e01b81526004016124069493929190613516565b602060405180830381600087803b15801561242057600080fd5b505af192505050801561245157506040513d601f19601f8201168201806040525081019061244e9190612f97565b60015b6124d4573d8060008114612481576040519150601f19603f3d011682016040523d82523d6000602084013e612486565b606091505b506000815114156124cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c390613741565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612529565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161258c84610f31565b6125969190613aec565b905060006007600084815260200190815260200160002054905081811461267b576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127009190613aec565b90506000600960008481526020019081526020016000205490506000600883815481106127305761272f613d6f565b5b90600052602060002001549050806008838154811061275257612751613d6f565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127a1576127a0613d40565b5b6001900381819060005260206000200160009055905550505050565b60006127c883610f31565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a390613761565b60405180910390fd5b6128b581611a05565b156128f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ec906136c1565b60405180910390fd5b6129016000838361222b565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129519190613a0b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612a2990613bd6565b90600052602060002090601f016020900481019282612a4b5760008555612a92565b82601f10612a6457805160ff1916838001178555612a92565b82800160010185558215612a92579182015b82811115612a91578251825591602001919060010190612a76565b5b509050612a9f9190612b2d565b5090565b828054828255906000526020600020908101928215612b1c579160200282015b82811115612b1b5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612ac3565b5b509050612b299190612b2d565b5090565b5b80821115612b46576000816000905550600101612b2e565b5090565b6000612b5d612b5884613901565b6138dc565b90508083825260208201905082856020860282011115612b8057612b7f613dd2565b5b60005b85811015612bb05781612b968882612c3e565b845260208401935060208301925050600181019050612b83565b5050509392505050565b6000612bcd612bc88461392d565b6138dc565b905082815260208101848484011115612be957612be8613dd7565b5b612bf4848285613b94565b509392505050565b6000612c0f612c0a8461395e565b6138dc565b905082815260208101848484011115612c2b57612c2a613dd7565b5b612c36848285613b94565b509392505050565b600081359050612c4d8161421b565b92915050565b600082601f830112612c6857612c67613dcd565b5b8135612c78848260208601612b4a565b91505092915050565b600081359050612c9081614232565b92915050565b600081359050612ca581614249565b92915050565b600081519050612cba81614249565b92915050565b600082601f830112612cd557612cd4613dcd565b5b8135612ce5848260208601612bba565b91505092915050565b600082601f830112612d0357612d02613dcd565b5b8135612d13848260208601612bfc565b91505092915050565b600081359050612d2b81614260565b92915050565b600060208284031215612d4757612d46613de1565b5b6000612d5584828501612c3e565b91505092915050565b60008060408385031215612d7557612d74613de1565b5b6000612d8385828601612c3e565b9250506020612d9485828601612c3e565b9150509250929050565b600080600060608486031215612db757612db6613de1565b5b6000612dc586828701612c3e565b9350506020612dd686828701612c3e565b9250506040612de786828701612d1c565b9150509250925092565b60008060008060808587031215612e0b57612e0a613de1565b5b6000612e1987828801612c3e565b9450506020612e2a87828801612c3e565b9350506040612e3b87828801612d1c565b925050606085013567ffffffffffffffff811115612e5c57612e5b613ddc565b5b612e6887828801612cc0565b91505092959194509250565b60008060408385031215612e8b57612e8a613de1565b5b6000612e9985828601612c3e565b9250506020612eaa85828601612c81565b9150509250929050565b60008060408385031215612ecb57612eca613de1565b5b6000612ed985828601612c3e565b9250506020612eea85828601612d1c565b9150509250929050565b600060208284031215612f0a57612f09613de1565b5b600082013567ffffffffffffffff811115612f2857612f27613ddc565b5b612f3484828501612c53565b91505092915050565b600060208284031215612f5357612f52613de1565b5b6000612f6184828501612c81565b91505092915050565b600060208284031215612f8057612f7f613de1565b5b6000612f8e84828501612c96565b91505092915050565b600060208284031215612fad57612fac613de1565b5b6000612fbb84828501612cab565b91505092915050565b600060208284031215612fda57612fd9613de1565b5b600082013567ffffffffffffffff811115612ff857612ff7613ddc565b5b61300484828501612cee565b91505092915050565b60006020828403121561302357613022613de1565b5b600061303184828501612d1c565b91505092915050565b600061304683836134b9565b60208301905092915050565b61305b81613b20565b82525050565b600061306c8261399f565b61307681856139cd565b93506130818361398f565b8060005b838110156130b2578151613099888261303a565b97506130a4836139c0565b925050600181019050613085565b5085935050505092915050565b6130c881613b32565b82525050565b60006130d9826139aa565b6130e381856139de565b93506130f3818560208601613ba3565b6130fc81613de6565b840191505092915050565b6000613112826139b5565b61311c81856139ef565b935061312c818560208601613ba3565b61313581613de6565b840191505092915050565b600061314b826139b5565b6131558185613a00565b9350613165818560208601613ba3565b80840191505092915050565b600061317e6003836139ef565b915061318982613df7565b602082019050919050565b60006131a16003836139ef565b91506131ac82613e20565b602082019050919050565b60006131c46003836139ef565b91506131cf82613e49565b602082019050919050565b60006131e7602b836139ef565b91506131f282613e72565b604082019050919050565b600061320a600f836139ef565b915061321582613ec1565b602082019050919050565b600061322d6003836139ef565b915061323882613eea565b602082019050919050565b60006132506003836139ef565b915061325b82613f13565b602082019050919050565b60006132736003836139ef565b915061327e82613f3c565b602082019050919050565b60006132966003836139ef565b91506132a182613f65565b602082019050919050565b60006132b96003836139ef565b91506132c482613f8e565b602082019050919050565b60006132dc6003836139ef565b91506132e782613fb7565b602082019050919050565b60006132ff6003836139ef565b915061330a82613fe0565b602082019050919050565b60006133226003836139ef565b915061332d82614009565b602082019050919050565b60006133456003836139ef565b915061335082614032565b602082019050919050565b60006133686003836139ef565b91506133738261405b565b602082019050919050565b600061338b600a836139ef565b915061339682614084565b602082019050919050565b60006133ae6003836139ef565b91506133b9826140ad565b602082019050919050565b60006133d16003836139ef565b91506133dc826140d6565b602082019050919050565b60006133f46003836139ef565b91506133ff826140ff565b602082019050919050565b60006134176011836139ef565b915061342282614128565b602082019050919050565b600061343a602c836139ef565b915061344582614151565b604082019050919050565b600061345d6003836139ef565b9150613468826141a0565b602082019050919050565b60006134806003836139ef565b915061348b826141c9565b602082019050919050565b60006134a36003836139ef565b91506134ae826141f2565b602082019050919050565b6134c281613b8a565b82525050565b6134d181613b8a565b82525050565b60006134e38285613140565b91506134ef8284613140565b91508190509392505050565b60006020820190506135106000830184613052565b92915050565b600060808201905061352b6000830187613052565b6135386020830186613052565b61354560408301856134c8565b818103606083015261355781846130ce565b905095945050505050565b6000602082019050818103600083015261357c8184613061565b905092915050565b600060208201905061359960008301846130bf565b92915050565b600060208201905081810360008301526135b98184613107565b905092915050565b600060208201905081810360008301526135da81613171565b9050919050565b600060208201905081810360008301526135fa81613194565b9050919050565b6000602082019050818103600083015261361a816131b7565b9050919050565b6000602082019050818103600083015261363a816131da565b9050919050565b6000602082019050818103600083015261365a816131fd565b9050919050565b6000602082019050818103600083015261367a81613220565b9050919050565b6000602082019050818103600083015261369a81613243565b9050919050565b600060208201905081810360008301526136ba81613266565b9050919050565b600060208201905081810360008301526136da81613289565b9050919050565b600060208201905081810360008301526136fa816132ac565b9050919050565b6000602082019050818103600083015261371a816132cf565b9050919050565b6000602082019050818103600083015261373a816132f2565b9050919050565b6000602082019050818103600083015261375a81613315565b9050919050565b6000602082019050818103600083015261377a81613338565b9050919050565b6000602082019050818103600083015261379a8161335b565b9050919050565b600060208201905081810360008301526137ba8161337e565b9050919050565b600060208201905081810360008301526137da816133a1565b9050919050565b600060208201905081810360008301526137fa816133c4565b9050919050565b6000602082019050818103600083015261381a816133e7565b9050919050565b6000602082019050818103600083015261383a8161340a565b9050919050565b6000602082019050818103600083015261385a8161342d565b9050919050565b6000602082019050818103600083015261387a81613450565b9050919050565b6000602082019050818103600083015261389a81613473565b9050919050565b600060208201905081810360008301526138ba81613496565b9050919050565b60006020820190506138d660008301846134c8565b92915050565b60006138e66138f7565b90506138f28282613c08565b919050565b6000604051905090565b600067ffffffffffffffff82111561391c5761391b613d9e565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561394857613947613d9e565b5b61395182613de6565b9050602081019050919050565b600067ffffffffffffffff82111561397957613978613d9e565b5b61398282613de6565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a1682613b8a565b9150613a2183613b8a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a5657613a55613cb3565b5b828201905092915050565b6000613a6c82613b8a565b9150613a7783613b8a565b925082613a8757613a86613ce2565b5b828204905092915050565b6000613a9d82613b8a565b9150613aa883613b8a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ae157613ae0613cb3565b5b828202905092915050565b6000613af782613b8a565b9150613b0283613b8a565b925082821015613b1557613b14613cb3565b5b828203905092915050565b6000613b2b82613b6a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613bc1578082015181840152602081019050613ba6565b83811115613bd0576000848401525b50505050565b60006002820490506001821680613bee57607f821691505b60208210811415613c0257613c01613d11565b5b50919050565b613c1182613de6565b810181811067ffffffffffffffff82111715613c3057613c2f613d9e565b5b80604052505050565b6000613c4482613b8a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c7757613c76613cb3565b5b600182019050919050565b6000613c8d82613b8a565b9150613c9883613b8a565b925082613ca857613ca7613ce2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f2334350000000000000000000000000000000000000000000000000000000000600082015250565b7f2334320000000000000000000000000000000000000000000000000000000000600082015250565b7f2335350000000000000000000000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f53616c65206e6f7420656e61626c650000000000000000000000000000000000600082015250565b7f2335330000000000000000000000000000000000000000000000000000000000600082015250565b7f2334380000000000000000000000000000000000000000000000000000000000600082015250565b7f2335300000000000000000000000000000000000000000000000000000000000600082015250565b7f2335370000000000000000000000000000000000000000000000000000000000600082015250565b7f2335380000000000000000000000000000000000000000000000000000000000600082015250565b7f2334390000000000000000000000000000000000000000000000000000000000600082015250565b7f2335310000000000000000000000000000000000000000000000000000000000600082015250565b7f2336300000000000000000000000000000000000000000000000000000000000600082015250565b7f2335360000000000000000000000000000000000000000000000000000000000600082015250565b7f2334310000000000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320353000000000000000000000000000000000000000000000600082015250565b7f2334360000000000000000000000000000000000000000000000000000000000600082015250565b7f2334370000000000000000000000000000000000000000000000000000000000600082015250565b7f2335340000000000000000000000000000000000000000000000000000000000600082015250565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f2334340000000000000000000000000000000000000000000000000000000000600082015250565b7f2335320000000000000000000000000000000000000000000000000000000000600082015250565b7f2335390000000000000000000000000000000000000000000000000000000000600082015250565b61422481613b20565b811461422f57600080fd5b50565b61423b81613b32565b811461424657600080fd5b50565b61425281613b3e565b811461425d57600080fd5b50565b61426981613b8a565b811461427457600080fd5b5056fea2646970667358221220a0a21023f87dd7b18798ea1d282ca689197aeffcb8405ec24761b496eff232cb64736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001b68747470733a2f2f617069322e6d656b6166696768742e636f6d2f0000000000

Deployed Bytecode

0x6080604052600436106101cd5760003560e01c80638462151c116100f7578063c7876ea411610095578063e985e9c511610064578063e985e9c51461067c578063f2fde38b146106b9578063fbbbd65b146106e2578063fe4ca8471461071f576101cd565b8063c7876ea4146105c2578063c87b56dd146105ed578063d3ba54ab1461062a578063de4b326214610653576101cd565b806395d89b41116100d157806395d89b411461051c578063a22cb46514610547578063b02636fd14610570578063b88d4fde14610599576101cd565b80638462151c146104aa578063853828b6146104e75780638da5cb5b146104f1576101cd565b80632f745c591161016f57806355f804b31161013e57806355f804b3146103dc5780636352211e146104055780636e1bd3231461044257806370a082311461046d576101cd565b80632f745c591461031d57806340c10f191461035a57806342842e0e146103765780634f6ccce71461039f576101cd565b8063095ea7b3116101ab578063095ea7b31461027757806309acc2cb146102a057806318160ddd146102c957806323b872dd146102f4576101cd565b806301ffc9a7146101d257806306fdde031461020f578063081812fc1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190612f6a565b61074a565b6040516102069190613584565b60405180910390f35b34801561021b57600080fd5b506102246107c4565b604051610231919061359f565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c919061300d565b610856565b60405161026e91906134fb565b60405180910390f35b34801561028357600080fd5b5061029e60048036038101906102999190612eb4565b6108db565b005b3480156102ac57600080fd5b506102c760048036038101906102c2919061300d565b6109f3565b005b3480156102d557600080fd5b506102de610a79565b6040516102eb91906138c1565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612d9e565b610a86565b005b34801561032957600080fd5b50610344600480360381019061033f9190612eb4565b610ae6565b60405161035191906138c1565b60405180910390f35b610374600480360381019061036f9190612eb4565b610b8b565b005b34801561038257600080fd5b5061039d60048036038101906103989190612d9e565b610d52565b005b3480156103ab57600080fd5b506103c660048036038101906103c1919061300d565b610d72565b6040516103d391906138c1565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190612fc4565b610de3565b005b34801561041157600080fd5b5061042c6004803603810190610427919061300d565b610e79565b60405161043991906134fb565b60405180910390f35b34801561044e57600080fd5b50610457610f2b565b60405161046491906138c1565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190612d31565b610f31565b6040516104a191906138c1565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190612d31565b610fe9565b6040516104de9190613562565b60405180910390f35b6104ef611097565b005b3480156104fd57600080fd5b5061050661111d565b60405161051391906134fb565b60405180910390f35b34801561052857600080fd5b50610531611147565b60405161053e919061359f565b60405180910390f35b34801561055357600080fd5b5061056e60048036038101906105699190612e74565b6111d9565b005b34801561057c57600080fd5b5061059760048036038101906105929190612f3d565b61135a565b005b3480156105a557600080fd5b506105c060048036038101906105bb9190612df1565b6113f3565b005b3480156105ce57600080fd5b506105d7611455565b6040516105e491906138c1565b60405180910390f35b3480156105f957600080fd5b50610614600480360381019061060f919061300d565b61145b565b604051610621919061359f565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190612ef4565b611502565b005b34801561065f57600080fd5b5061067a6004803603810190610675919061300d565b61160b565b005b34801561068857600080fd5b506106a3600480360381019061069e9190612d5e565b611691565b6040516106b09190613584565b60405180910390f35b3480156106c557600080fd5b506106e060048036038101906106db9190612d31565b611725565b005b3480156106ee57600080fd5b506107096004803603810190610704919061300d565b6118d1565b60405161071691906134fb565b60405180910390f35b34801561072b57600080fd5b50610734611910565b6040516107419190613584565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107bd57506107bc82611923565b5b9050919050565b6060600080546107d390613bd6565b80601f01602080910402602001604051908101604052809291908181526020018280546107ff90613bd6565b801561084c5780601f106108215761010080835404028352916020019161084c565b820191906000526020600020905b81548152906001019060200180831161082f57829003601f168201915b5050505050905090565b600061086182611a05565b6108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089790613701565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108e682610e79565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e906137e1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610976611a71565b73ffffffffffffffffffffffffffffffffffffffff1614806109a557506109a48161099f611a71565b611691565b5b6109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db90613681565b60405180910390fd5b6109ee8383611a79565b505050565b6109fb611a71565b73ffffffffffffffffffffffffffffffffffffffff16610a1961111d565b73ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690613781565b60405180910390fd5b80600c8190555050565b6000600880549050905090565b610a97610a91611a71565b82611b32565b610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90613721565b60405180910390fd5b610ae1838383611c10565b505050565b6000610af183610f31565b8210610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2990613621565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bf35750600f60009054906101000a900460ff165b610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2990613641565b60405180910390fd5b6032811115610c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6d906137a1565b60405180910390fd5b80600d54610c849190613a92565b34101580610cdf5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1590613821565b60405180910390fd5b60005b81811015610d4d57610d3a83610d35610a79565b611e6c565b8080610d4590613c39565b915050610d21565b505050565b610d6d838383604051806020016040528060008152506113f3565b505050565b6000610d7c610a79565b8210610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490613841565b60405180910390fd5b60088281548110610dd157610dd0613d6f565b5b90600052602060002001549050919050565b610deb611a71565b73ffffffffffffffffffffffffffffffffffffffff16610e0961111d565b73ffffffffffffffffffffffffffffffffffffffff1614610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5690613781565b60405180910390fd5b80600e9080519060200190610e75929190612a1d565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f19906135c1565b60405180910390fd5b80915050919050565b600c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990613861565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606000610ff683610f31565b905060008167ffffffffffffffff81111561101457611013613d9e565b5b6040519080825280602002602001820160405280156110425781602001602082028036833780820191505090505b50905060005b8281101561108c5761105a8582610ae6565b82828151811061106d5761106c613d6f565b5b602002602001018181525050808061108490613c39565b915050611048565b508092505050919050565b61109f611a71565b73ffffffffffffffffffffffffffffffffffffffff166110bd61111d565b73ffffffffffffffffffffffffffffffffffffffff1614611113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110a90613781565b60405180910390fd5b61111b611e8a565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461115690613bd6565b80601f016020809104026020016040519081016040528092919081815260200182805461118290613bd6565b80156111cf5780601f106111a4576101008083540402835291602001916111cf565b820191906000526020600020905b8154815290600101906020018083116111b257829003601f168201915b5050505050905090565b6111e1611a71565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561124f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611246906136a1565b60405180910390fd5b806005600061125c611a71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611309611a71565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161134e9190613584565b60405180910390a35050565b611362611a71565b73ffffffffffffffffffffffffffffffffffffffff1661138061111d565b73ffffffffffffffffffffffffffffffffffffffff16146113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613781565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6114046113fe611a71565b83611b32565b611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a90613881565b60405180910390fd5b61144f84848484611f72565b50505050565b600d5481565b606061146682611a05565b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c906137c1565b60405180910390fd5b60006114af611fce565b905060008151116114cf57604051806020016040528060008152506114fa565b806114d984612060565b6040516020016114ea9291906134d7565b6040516020818303038152906040525b915050919050565b61150a611a71565b73ffffffffffffffffffffffffffffffffffffffff1661152861111d565b73ffffffffffffffffffffffffffffffffffffffff161461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157590613781565b60405180910390fd5b8060109080519060200190611594929190612aa3565b5060005b601080549050811015611607576115f4601082815481106115bc576115bb613d6f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166115ef610a79565b611e6c565b80806115ff90613c39565b915050611598565b5050565b611613611a71565b73ffffffffffffffffffffffffffffffffffffffff1661163161111d565b73ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90613781565b60405180910390fd5b80600d8190555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61172d611a71565b73ffffffffffffffffffffffffffffffffffffffff1661174b61111d565b73ffffffffffffffffffffffffffffffffffffffff16146117a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179890613781565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611811576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611808906135e1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601081815481106118e157600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900460ff1681565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806119ee57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806119fe57506119fd826121c1565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611aec83610e79565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611b3d82611a05565b611b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7390613801565b60405180910390fd5b6000611b8783610e79565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611bf657508373ffffffffffffffffffffffffffffffffffffffff16611bde84610856565b73ffffffffffffffffffffffffffffffffffffffff16145b80611c075750611c068185611691565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611c3082610e79565b73ffffffffffffffffffffffffffffffffffffffff1614611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906136e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced906138a1565b60405180910390fd5b611d0183838361222b565b611d0c600082611a79565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d5c9190613aec565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611db39190613a0b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b611e8682826040518060200160405280600081525061233f565b5050565b60006064601447611e9b9190613a92565b611ea59190613a61565b905060008147611eb59190613aec565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015611f1f573d6000803e3d6000fd5b50611f28611a71565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f6d573d6000803e3d6000fd5b505050565b611f7d848484611c10565b611f898484848461239a565b611fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbf90613661565b60405180910390fd5b50505050565b6060600e8054611fdd90613bd6565b80601f016020809104026020016040519081016040528092919081815260200182805461200990613bd6565b80156120565780601f1061202b57610100808354040283529160200191612056565b820191906000526020600020905b81548152906001019060200180831161203957829003601f168201915b5050505050905090565b606060008214156120a8576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506121bc565b600082905060005b600082146120da5780806120c390613c39565b915050600a826120d39190613a61565b91506120b0565b60008167ffffffffffffffff8111156120f6576120f5613d9e565b5b6040519080825280601f01601f1916602001820160405280156121285781602001600182028036833780820191505090505b5090505b600085146121b5576001826121419190613aec565b9150600a856121509190613c82565b603061215c9190613a0b565b60f81b81838151811061217257612171613d6f565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121ae9190613a61565b945061212c565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612236838383612531565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122795761227481612536565b6122b8565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122b7576122b6838261257f565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122fb576122f6816126ec565b61233a565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123395761233882826127bd565b5b5b505050565b612349838361283c565b612356600084848461239a565b612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90613601565b60405180910390fd5b505050565b60006123bb8473ffffffffffffffffffffffffffffffffffffffff16612a0a565b15612524578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026123e4611a71565b8786866040518563ffffffff1660e01b81526004016124069493929190613516565b602060405180830381600087803b15801561242057600080fd5b505af192505050801561245157506040513d601f19601f8201168201806040525081019061244e9190612f97565b60015b6124d4573d8060008114612481576040519150601f19603f3d011682016040523d82523d6000602084013e612486565b606091505b506000815114156124cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c390613741565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612529565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161258c84610f31565b6125969190613aec565b905060006007600084815260200190815260200160002054905081811461267b576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506127009190613aec565b90506000600960008481526020019081526020016000205490506000600883815481106127305761272f613d6f565b5b90600052602060002001549050806008838154811061275257612751613d6f565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806127a1576127a0613d40565b5b6001900381819060005260206000200160009055905550505050565b60006127c883610f31565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a390613761565b60405180910390fd5b6128b581611a05565b156128f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ec906136c1565b60405180910390fd5b6129016000838361222b565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129519190613a0b565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b828054612a2990613bd6565b90600052602060002090601f016020900481019282612a4b5760008555612a92565b82601f10612a6457805160ff1916838001178555612a92565b82800160010185558215612a92579182015b82811115612a91578251825591602001919060010190612a76565b5b509050612a9f9190612b2d565b5090565b828054828255906000526020600020908101928215612b1c579160200282015b82811115612b1b5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612ac3565b5b509050612b299190612b2d565b5090565b5b80821115612b46576000816000905550600101612b2e565b5090565b6000612b5d612b5884613901565b6138dc565b90508083825260208201905082856020860282011115612b8057612b7f613dd2565b5b60005b85811015612bb05781612b968882612c3e565b845260208401935060208301925050600181019050612b83565b5050509392505050565b6000612bcd612bc88461392d565b6138dc565b905082815260208101848484011115612be957612be8613dd7565b5b612bf4848285613b94565b509392505050565b6000612c0f612c0a8461395e565b6138dc565b905082815260208101848484011115612c2b57612c2a613dd7565b5b612c36848285613b94565b509392505050565b600081359050612c4d8161421b565b92915050565b600082601f830112612c6857612c67613dcd565b5b8135612c78848260208601612b4a565b91505092915050565b600081359050612c9081614232565b92915050565b600081359050612ca581614249565b92915050565b600081519050612cba81614249565b92915050565b600082601f830112612cd557612cd4613dcd565b5b8135612ce5848260208601612bba565b91505092915050565b600082601f830112612d0357612d02613dcd565b5b8135612d13848260208601612bfc565b91505092915050565b600081359050612d2b81614260565b92915050565b600060208284031215612d4757612d46613de1565b5b6000612d5584828501612c3e565b91505092915050565b60008060408385031215612d7557612d74613de1565b5b6000612d8385828601612c3e565b9250506020612d9485828601612c3e565b9150509250929050565b600080600060608486031215612db757612db6613de1565b5b6000612dc586828701612c3e565b9350506020612dd686828701612c3e565b9250506040612de786828701612d1c565b9150509250925092565b60008060008060808587031215612e0b57612e0a613de1565b5b6000612e1987828801612c3e565b9450506020612e2a87828801612c3e565b9350506040612e3b87828801612d1c565b925050606085013567ffffffffffffffff811115612e5c57612e5b613ddc565b5b612e6887828801612cc0565b91505092959194509250565b60008060408385031215612e8b57612e8a613de1565b5b6000612e9985828601612c3e565b9250506020612eaa85828601612c81565b9150509250929050565b60008060408385031215612ecb57612eca613de1565b5b6000612ed985828601612c3e565b9250506020612eea85828601612d1c565b9150509250929050565b600060208284031215612f0a57612f09613de1565b5b600082013567ffffffffffffffff811115612f2857612f27613ddc565b5b612f3484828501612c53565b91505092915050565b600060208284031215612f5357612f52613de1565b5b6000612f6184828501612c81565b91505092915050565b600060208284031215612f8057612f7f613de1565b5b6000612f8e84828501612c96565b91505092915050565b600060208284031215612fad57612fac613de1565b5b6000612fbb84828501612cab565b91505092915050565b600060208284031215612fda57612fd9613de1565b5b600082013567ffffffffffffffff811115612ff857612ff7613ddc565b5b61300484828501612cee565b91505092915050565b60006020828403121561302357613022613de1565b5b600061303184828501612d1c565b91505092915050565b600061304683836134b9565b60208301905092915050565b61305b81613b20565b82525050565b600061306c8261399f565b61307681856139cd565b93506130818361398f565b8060005b838110156130b2578151613099888261303a565b97506130a4836139c0565b925050600181019050613085565b5085935050505092915050565b6130c881613b32565b82525050565b60006130d9826139aa565b6130e381856139de565b93506130f3818560208601613ba3565b6130fc81613de6565b840191505092915050565b6000613112826139b5565b61311c81856139ef565b935061312c818560208601613ba3565b61313581613de6565b840191505092915050565b600061314b826139b5565b6131558185613a00565b9350613165818560208601613ba3565b80840191505092915050565b600061317e6003836139ef565b915061318982613df7565b602082019050919050565b60006131a16003836139ef565b91506131ac82613e20565b602082019050919050565b60006131c46003836139ef565b91506131cf82613e49565b602082019050919050565b60006131e7602b836139ef565b91506131f282613e72565b604082019050919050565b600061320a600f836139ef565b915061321582613ec1565b602082019050919050565b600061322d6003836139ef565b915061323882613eea565b602082019050919050565b60006132506003836139ef565b915061325b82613f13565b602082019050919050565b60006132736003836139ef565b915061327e82613f3c565b602082019050919050565b60006132966003836139ef565b91506132a182613f65565b602082019050919050565b60006132b96003836139ef565b91506132c482613f8e565b602082019050919050565b60006132dc6003836139ef565b91506132e782613fb7565b602082019050919050565b60006132ff6003836139ef565b915061330a82613fe0565b602082019050919050565b60006133226003836139ef565b915061332d82614009565b602082019050919050565b60006133456003836139ef565b915061335082614032565b602082019050919050565b60006133686003836139ef565b91506133738261405b565b602082019050919050565b600061338b600a836139ef565b915061339682614084565b602082019050919050565b60006133ae6003836139ef565b91506133b9826140ad565b602082019050919050565b60006133d16003836139ef565b91506133dc826140d6565b602082019050919050565b60006133f46003836139ef565b91506133ff826140ff565b602082019050919050565b60006134176011836139ef565b915061342282614128565b602082019050919050565b600061343a602c836139ef565b915061344582614151565b604082019050919050565b600061345d6003836139ef565b9150613468826141a0565b602082019050919050565b60006134806003836139ef565b915061348b826141c9565b602082019050919050565b60006134a36003836139ef565b91506134ae826141f2565b602082019050919050565b6134c281613b8a565b82525050565b6134d181613b8a565b82525050565b60006134e38285613140565b91506134ef8284613140565b91508190509392505050565b60006020820190506135106000830184613052565b92915050565b600060808201905061352b6000830187613052565b6135386020830186613052565b61354560408301856134c8565b818103606083015261355781846130ce565b905095945050505050565b6000602082019050818103600083015261357c8184613061565b905092915050565b600060208201905061359960008301846130bf565b92915050565b600060208201905081810360008301526135b98184613107565b905092915050565b600060208201905081810360008301526135da81613171565b9050919050565b600060208201905081810360008301526135fa81613194565b9050919050565b6000602082019050818103600083015261361a816131b7565b9050919050565b6000602082019050818103600083015261363a816131da565b9050919050565b6000602082019050818103600083015261365a816131fd565b9050919050565b6000602082019050818103600083015261367a81613220565b9050919050565b6000602082019050818103600083015261369a81613243565b9050919050565b600060208201905081810360008301526136ba81613266565b9050919050565b600060208201905081810360008301526136da81613289565b9050919050565b600060208201905081810360008301526136fa816132ac565b9050919050565b6000602082019050818103600083015261371a816132cf565b9050919050565b6000602082019050818103600083015261373a816132f2565b9050919050565b6000602082019050818103600083015261375a81613315565b9050919050565b6000602082019050818103600083015261377a81613338565b9050919050565b6000602082019050818103600083015261379a8161335b565b9050919050565b600060208201905081810360008301526137ba8161337e565b9050919050565b600060208201905081810360008301526137da816133a1565b9050919050565b600060208201905081810360008301526137fa816133c4565b9050919050565b6000602082019050818103600083015261381a816133e7565b9050919050565b6000602082019050818103600083015261383a8161340a565b9050919050565b6000602082019050818103600083015261385a8161342d565b9050919050565b6000602082019050818103600083015261387a81613450565b9050919050565b6000602082019050818103600083015261389a81613473565b9050919050565b600060208201905081810360008301526138ba81613496565b9050919050565b60006020820190506138d660008301846134c8565b92915050565b60006138e66138f7565b90506138f28282613c08565b919050565b6000604051905090565b600067ffffffffffffffff82111561391c5761391b613d9e565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561394857613947613d9e565b5b61395182613de6565b9050602081019050919050565b600067ffffffffffffffff82111561397957613978613d9e565b5b61398282613de6565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613a1682613b8a565b9150613a2183613b8a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a5657613a55613cb3565b5b828201905092915050565b6000613a6c82613b8a565b9150613a7783613b8a565b925082613a8757613a86613ce2565b5b828204905092915050565b6000613a9d82613b8a565b9150613aa883613b8a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ae157613ae0613cb3565b5b828202905092915050565b6000613af782613b8a565b9150613b0283613b8a565b925082821015613b1557613b14613cb3565b5b828203905092915050565b6000613b2b82613b6a565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613bc1578082015181840152602081019050613ba6565b83811115613bd0576000848401525b50505050565b60006002820490506001821680613bee57607f821691505b60208210811415613c0257613c01613d11565b5b50919050565b613c1182613de6565b810181811067ffffffffffffffff82111715613c3057613c2f613d9e565b5b80604052505050565b6000613c4482613b8a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c7757613c76613cb3565b5b600182019050919050565b6000613c8d82613b8a565b9150613c9883613b8a565b925082613ca857613ca7613ce2565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f2334350000000000000000000000000000000000000000000000000000000000600082015250565b7f2334320000000000000000000000000000000000000000000000000000000000600082015250565b7f2335350000000000000000000000000000000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f53616c65206e6f7420656e61626c650000000000000000000000000000000000600082015250565b7f2335330000000000000000000000000000000000000000000000000000000000600082015250565b7f2334380000000000000000000000000000000000000000000000000000000000600082015250565b7f2335300000000000000000000000000000000000000000000000000000000000600082015250565b7f2335370000000000000000000000000000000000000000000000000000000000600082015250565b7f2335380000000000000000000000000000000000000000000000000000000000600082015250565b7f2334390000000000000000000000000000000000000000000000000000000000600082015250565b7f2335310000000000000000000000000000000000000000000000000000000000600082015250565b7f2336300000000000000000000000000000000000000000000000000000000000600082015250565b7f2335360000000000000000000000000000000000000000000000000000000000600082015250565b7f2334310000000000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320353000000000000000000000000000000000000000000000600082015250565b7f2334360000000000000000000000000000000000000000000000000000000000600082015250565b7f2334370000000000000000000000000000000000000000000000000000000000600082015250565b7f2335340000000000000000000000000000000000000000000000000000000000600082015250565b7f56616c75652062656c6f77207072696365000000000000000000000000000000600082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f2334340000000000000000000000000000000000000000000000000000000000600082015250565b7f2335320000000000000000000000000000000000000000000000000000000000600082015250565b7f2335390000000000000000000000000000000000000000000000000000000000600082015250565b61422481613b20565b811461422f57600080fd5b50565b61423b81613b32565b811461424657600080fd5b50565b61425281613b3e565b811461425d57600080fd5b50565b61426981613b8a565b811461427457600080fd5b5056fea2646970667358221220a0a21023f87dd7b18798ea1d282ca689197aeffcb8405ec24761b496eff232cb64736f6c63430008070033

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001b68747470733a2f2f617069322e6d656b6166696768742e636f6d2f0000000000

-----Decoded View---------------
Arg [0] : baseURI (string): https://api2.mekafight.com/

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000001b
Arg [2] : 68747470733a2f2f617069322e6d656b6166696768742e636f6d2f0000000000


Deployed Bytecode Sourcemap

39052:2052:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32925:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20120:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21460:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21073:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39401:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33578:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22287:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33246:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39754:399;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22617:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33768:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40556:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19852:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39115:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19621:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40666:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41018:81;;;:::i;:::-;;14533:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20289:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21712:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39286:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22839:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39152:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20464:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40161:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39507:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22056:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15856:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39251:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39214:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32925:237;33027:4;33066:35;33051:50;;;:11;:50;;;;:103;;;;33118:36;33142:11;33118:23;:36::i;:::-;33051:103;33044:110;;32925:237;;;:::o;20120:100::-;20174:13;20207:5;20200:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20120:100;:::o;21460:180::-;21536:7;21564:16;21572:7;21564;:16::i;:::-;21556:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;21608:15;:24;21624:7;21608:24;;;;;;;;;;;;;;;;;;;;;21601:31;;21460:180;;;:::o;21073:321::-;21154:13;21170:23;21185:7;21170:14;:23::i;:::-;21154:39;;21218:5;21212:11;;:2;:11;;;;21204:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;21268:5;21252:21;;:12;:10;:12::i;:::-;:21;;;:69;;;;21277:44;21301:5;21308:12;:10;:12::i;:::-;21277:23;:44::i;:::-;21252:69;21244:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;21365:21;21374:2;21378:7;21365:8;:21::i;:::-;21143:251;21073:321;;:::o;39401:98::-;14764:12;:10;:12::i;:::-;14753:23;;:7;:5;:7::i;:::-;:23;;;14745:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;39481:10:::1;39469:9;:22;;;;39401:98:::0;:::o;33578:113::-;33639:7;33666:10;:17;;;;33659:24;;33578:113;:::o;22287:259::-;22448:41;22467:12;:10;:12::i;:::-;22481:7;22448:18;:41::i;:::-;22440:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;22510:28;22520:4;22526:2;22530:7;22510:9;:28::i;:::-;22287:259;;;:::o;33246:256::-;33343:7;33379:23;33396:5;33379:16;:23::i;:::-;33371:5;:31;33363:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;33468:12;:19;33481:5;33468:19;;;;;;;;;;;;;;;:26;33488:5;33468:26;;;;;;;;;;;;33461:33;;33246:256;;;;:::o;39754:399::-;39842:6;;;;;;;;;;;39828:20;;:10;:20;;;:34;;;;39852:10;;;;;;;;;;;39828:34;39820:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;39911:2;39901:6;:12;;39893:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;39972:6;39960:9;;:18;;;;:::i;:::-;39947:9;:31;;:55;;;;39996:6;;;;;;;;;;;39982:20;;:10;:20;;;39947:55;39939:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;40048:6;40044:92;40064:6;40060:1;:10;40044:92;;;40091:29;40101:3;40106:13;:11;:13::i;:::-;40091:9;:29::i;:::-;40072:3;;;;;:::i;:::-;;;;40044:92;;;;39754:399;;:::o;22617:151::-;22721:39;22738:4;22744:2;22748:7;22721:39;;;;;;;;;;;;:16;:39::i;:::-;22617:151;;;:::o;33768:233::-;33843:7;33879:30;:28;:30::i;:::-;33871:5;:38;33863:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;33976:10;33987:5;33976:17;;;;;;;;:::i;:::-;;;;;;;;;;33969:24;;33768:233;;;:::o;40556:102::-;14764:12;:10;:12::i;:::-;14753:23;;:7;:5;:7::i;:::-;:23;;;14745:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;40643:7:::1;40627:13;:23;;;;;;;;;;;;:::i;:::-;;40556:102:::0;:::o;19852:201::-;19924:7;19944:13;19960:7;:16;19968:7;19960:16;;;;;;;;;;;;;;;;;;;;;19944:32;;20012:1;19995:19;;:5;:19;;;;19987:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;20040:5;20033:12;;;19852:201;;;:::o;39115:30::-;;;;:::o;19621:169::-;19693:7;19738:1;19721:19;;:5;:19;;;;19713:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;19766:9;:16;19776:5;19766:16;;;;;;;;;;;;;;;;19759:23;;19621:169;;;:::o;40666:344::-;40727:16;40756:15;40774:17;40784:6;40774:9;:17::i;:::-;40756:35;;40804:25;40846:10;40832:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40804:53;;40872:6;40868:107;40888:10;40884:1;:14;40868:107;;;40933:30;40953:6;40961:1;40933:19;:30::i;:::-;40919:8;40928:1;40919:11;;;;;;;;:::i;:::-;;;;;;;:44;;;;;40900:3;;;;;:::i;:::-;;;;40868:107;;;;40994:8;40987:15;;;;40666:344;;;:::o;41018:81::-;14764:12;:10;:12::i;:::-;14753:23;;:7;:5;:7::i;:::-;:23;;;14745:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;41077:14:::1;:12;:14::i;:::-;41018:81::o:0;14533:87::-;14579:7;14606:6;;;;;;;;;;;14599:13;;14533:87;:::o;20289:104::-;20345:13;20378:7;20371:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20289:104;:::o;21712:273::-;21827:12;:10;:12::i;:::-;21815:24;;:8;:24;;;;21807:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;21905:8;21860:18;:32;21879:12;:10;:12::i;:::-;21860:32;;;;;;;;;;;;;;;:42;21893:8;21860:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;21958:8;21929:48;;21944:12;:10;:12::i;:::-;21929:48;;;21968:8;21929:48;;;;;;:::i;:::-;;;;;;;;21712:273;;:::o;39286:103::-;14764:12;:10;:12::i;:::-;14753:23;;:7;:5;:7::i;:::-;:23;;;14745:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;39370:11:::1;39357:10;;:24;;;;;;;;;;;;;;;;;;39286:103:::0;:::o;22839:239::-;22971:41;22990:12;:10;:12::i;:::-;23004:7;22971:18;:41::i;:::-;22963:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;23031:39;23045:4;23051:2;23055:7;23064:5;23031:13;:39::i;:::-;22839:239;;;;:::o;39152:33::-;;;;:::o;20464:316::-;20537:13;20571:16;20579:7;20571;:16::i;:::-;20563:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;20608:21;20632:10;:8;:10::i;:::-;20608:34;;20684:1;20666:7;20660:21;:25;:112;;;;;;;;;;;;;;;;;20725:7;20734:18;:7;:16;:18::i;:::-;20708:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20660:112;20653:119;;;20464:316;;;:::o;40161:253::-;14764:12;:10;:12::i;:::-;14753:23;;:7;:5;:7::i;:::-;:23;;;14745:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;40255:10:::1;40246:6;:19;;;;;;;;;;;;:::i;:::-;;40290:6;40286:109;40306:6;:13;;;;40302:1;:17;40286:109;;;40344:35;40354:6;40361:1;40354:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;40365:13;:11;:13::i;:::-;40344:9;:35::i;:::-;40321:3;;;;;:::i;:::-;;;;40286:109;;;;40161:253:::0;:::o;39507:99::-;14764:12;:10;:12::i;:::-;14753:23;;:7;:5;:7::i;:::-;:23;;;14745:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;39588:10:::1;39576:9;:22;;;;39507:99:::0;:::o;22056:164::-;22153:4;22177:18;:25;22196:5;22177:25;;;;;;;;;;;;;;;:35;22203:8;22177:35;;;;;;;;;;;;;;;;;;;;;;;;;22170:42;;22056:164;;;;:::o;15856:209::-;14764:12;:10;:12::i;:::-;14753:23;;:7;:5;:7::i;:::-;:23;;;14745:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;15965:1:::1;15945:22;;:8;:22;;;;15937:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16020:8;15991:38;;16012:6;;;;;;;;;;;15991:38;;;;;;;;;;;;16049:8;16040:6;;:17;;;;;;;;;;;;;;;;;;15856:209:::0;:::o;39251:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;39214:30::-;;;;;;;;;;;;;:::o;19265:292::-;19367:4;19406:25;19391:40;;;:11;:40;;;;:105;;;;19463:33;19448:48;;;:11;:48;;;;19391:105;:158;;;;19513:36;19537:11;19513:23;:36::i;:::-;19391:158;19384:165;;19265:292;;;:::o;24498:127::-;24563:4;24615:1;24587:30;;:7;:16;24595:7;24587:16;;;;;;;;;;;;;;;;;;;;;:30;;;;24580:37;;24498:127;;;:::o;5301:98::-;5354:7;5381:10;5374:17;;5301:98;:::o;28169:174::-;28271:2;28244:15;:24;28260:7;28244:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;28327:7;28323:2;28289:46;;28298:23;28313:7;28298:14;:23::i;:::-;28289:46;;;;;;;;;;;;28169:174;;:::o;24792:314::-;24885:4;24910:16;24918:7;24910;:16::i;:::-;24902:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;24945:13;24961:23;24976:7;24961:14;:23::i;:::-;24945:39;;25014:5;25003:16;;:7;:16;;;:51;;;;25047:7;25023:31;;:20;25035:7;25023:11;:20::i;:::-;:31;;;25003:51;:94;;;;25058:39;25082:5;25089:7;25058:23;:39::i;:::-;25003:94;24995:103;;;24792:314;;;;:::o;27578:473::-;27703:4;27676:31;;:23;27691:7;27676:14;:23::i;:::-;:31;;;27668:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;27748:1;27734:16;;:2;:16;;;;27726:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;27771:39;27792:4;27798:2;27802:7;27771:20;:39::i;:::-;27875:29;27892:1;27896:7;27875:8;:29::i;:::-;27936:1;27917:9;:15;27927:4;27917:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;27965:1;27948:9;:13;27958:2;27948:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;27996:2;27977:7;:16;27985:7;27977:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;28035:7;28031:2;28016:27;;28025:4;28016:27;;;;;;;;;;;;27578:473;;;:::o;25448:110::-;25524:26;25534:2;25538:7;25524:26;;;;;;;;;;;;:9;:26::i;:::-;25448:110;;:::o;15414:273::-;15466:18;15512:3;15509:2;15487:21;:24;;;;:::i;:::-;:28;;;;:::i;:::-;15466:49;;15525:20;15570:10;15548:21;:32;;;;:::i;:::-;15525:55;;15598:3;;;;;;;;;;;15590:21;;:33;15612:10;15590:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15641:12;:10;:12::i;:::-;15633:30;;:44;15664:12;15633:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15456:231;;15414:273::o;23960:225::-;24074:28;24084:4;24090:2;24094:7;24074:9;:28::i;:::-;24121:48;24144:4;24150:2;24154:7;24163:5;24121:22;:48::i;:::-;24113:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23960:225;;;;:::o;40430:114::-;40490:13;40523;40516:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40430:114;:::o;16300:723::-;16356:13;16586:1;16577:5;:10;16573:53;;;16604:10;;;;;;;;;;;;;;;;;;;;;16573:53;16636:12;16651:5;16636:20;;16667:14;16692:78;16707:1;16699:4;:9;16692:78;;16725:8;;;;;:::i;:::-;;;;16756:2;16748:10;;;;;:::i;:::-;;;16692:78;;;16780:19;16812:6;16802:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16780:39;;16830:154;16846:1;16837:5;:10;16830:154;;16874:1;16864:11;;;;;:::i;:::-;;;16941:2;16933:5;:10;;;;:::i;:::-;16920:2;:24;;;;:::i;:::-;16907:39;;16890:6;16897;16890:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;16970:2;16961:11;;;;;:::i;:::-;;;16830:154;;;17008:6;16994:21;;;;;16300:723;;;;:::o;6349:157::-;6434:4;6473:25;6458:40;;;:11;:40;;;;6451:47;;6349:157;;;:::o;34614:555::-;34724:45;34751:4;34757:2;34761:7;34724:26;:45::i;:::-;34802:1;34786:18;;:4;:18;;;34782:187;;;34821:40;34853:7;34821:31;:40::i;:::-;34782:187;;;34891:2;34883:10;;:4;:10;;;34879:90;;34910:47;34943:4;34949:7;34910:32;:47::i;:::-;34879:90;34782:187;34997:1;34983:16;;:2;:16;;;34979:183;;;35016:45;35053:7;35016:36;:45::i;:::-;34979:183;;;35089:4;35083:10;;:2;:10;;;35079:83;;35110:40;35138:2;35142:7;35110:27;:40::i;:::-;35079:83;34979:183;34614:555;;;:::o;25785:203::-;25881:18;25887:2;25891:7;25881:5;:18::i;:::-;25918:54;25949:1;25953:2;25957:7;25966:5;25918:22;:54::i;:::-;25910:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25785:203;;;:::o;28908:796::-;29029:4;29055:15;:2;:13;;;:15::i;:::-;29051:646;;;29107:2;29091:36;;;29128:12;:10;:12::i;:::-;29142:4;29148:7;29157:5;29091:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;29087:555;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29354:1;29337:6;:13;:18;29333:294;;;29380:13;;;;;;;;;;:::i;:::-;;;;;;;;29333:294;29577:6;29571:13;29562:6;29558:2;29554:15;29547:38;29087:555;29224:45;;;29214:55;;;:6;:55;;;;29207:62;;;;;29051:646;29681:4;29674:11;;28908:796;;;;;;;:::o;30317:93::-;;;;:::o;35892:164::-;35996:10;:17;;;;35969:15;:24;35985:7;35969:24;;;;;;;;;;;:44;;;;36024:10;36040:7;36024:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35892:164;:::o;36683:988::-;36949:22;36999:1;36974:22;36991:4;36974:16;:22::i;:::-;:26;;;;:::i;:::-;36949:51;;37011:18;37032:17;:26;37050:7;37032:26;;;;;;;;;;;;37011:47;;37179:14;37165:10;:28;37161:328;;37210:19;37232:12;:18;37245:4;37232:18;;;;;;;;;;;;;;;:34;37251:14;37232:34;;;;;;;;;;;;37210:56;;37316:11;37283:12;:18;37296:4;37283:18;;;;;;;;;;;;;;;:30;37302:10;37283:30;;;;;;;;;;;:44;;;;37433:10;37400:17;:30;37418:11;37400:30;;;;;;;;;;;:43;;;;37195:294;37161:328;37585:17;:26;37603:7;37585:26;;;;;;;;;;;37578:33;;;37629:12;:18;37642:4;37629:18;;;;;;;;;;;;;;;:34;37648:14;37629:34;;;;;;;;;;;37622:41;;;36764:907;;36683:988;;:::o;37966:1079::-;38219:22;38264:1;38244:10;:17;;;;:21;;;;:::i;:::-;38219:46;;38276:18;38297:15;:24;38313:7;38297:24;;;;;;;;;;;;38276:45;;38648:19;38670:10;38681:14;38670:26;;;;;;;;:::i;:::-;;;;;;;;;;38648:48;;38734:11;38709:10;38720;38709:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;38845:10;38814:15;:28;38830:11;38814:28;;;;;;;;;;;:41;;;;38986:15;:24;39002:7;38986:24;;;;;;;;;;;38979:31;;;39021:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38037:1008;;;37966:1079;:::o;35470:221::-;35555:14;35572:20;35589:2;35572:16;:20::i;:::-;35555:37;;35630:7;35603:12;:16;35616:2;35603:16;;;;;;;;;;;;;;;:24;35620:6;35603:24;;;;;;;;;;;:34;;;;35677:6;35648:17;:26;35666:7;35648:26;;;;;;;;;;;:35;;;;35544:147;35470:221;;:::o;26324:328::-;26418:1;26404:16;;:2;:16;;;;26396:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;26448:16;26456:7;26448;:16::i;:::-;26447:17;26439:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;26485:45;26514:1;26518:2;26522:7;26485:20;:45::i;:::-;26560:1;26543:9;:13;26553:2;26543:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;26591:2;26572:7;:16;26580:7;26572:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;26636:7;26632:2;26611:33;;26628:1;26611:33;;;;;;;;;;;;26324:328;;:::o;484:239::-;544:4;569:12;680:7;668:20;660:28;;714:1;707:4;:8;700:15;;;484:239;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:137::-;2308:5;2346:6;2333:20;2324:29;;2362:32;2388:5;2362:32;:::i;:::-;2263:137;;;;:::o;2406:141::-;2462:5;2493:6;2487:13;2478:22;;2509:32;2535:5;2509:32;:::i;:::-;2406:141;;;;:::o;2566:338::-;2621:5;2670:3;2663:4;2655:6;2651:17;2647:27;2637:122;;2678:79;;:::i;:::-;2637:122;2795:6;2782:20;2820:78;2894:3;2886:6;2879:4;2871:6;2867:17;2820:78;:::i;:::-;2811:87;;2627:277;2566:338;;;;:::o;2924:340::-;2980:5;3029:3;3022:4;3014:6;3010:17;3006:27;2996:122;;3037:79;;:::i;:::-;2996:122;3154:6;3141:20;3179:79;3254:3;3246:6;3239:4;3231:6;3227:17;3179:79;:::i;:::-;3170:88;;2986:278;2924:340;;;;:::o;3270:139::-;3316:5;3354:6;3341:20;3332:29;;3370:33;3397:5;3370:33;:::i;:::-;3270:139;;;;:::o;3415:329::-;3474:6;3523:2;3511:9;3502:7;3498:23;3494:32;3491:119;;;3529:79;;:::i;:::-;3491:119;3649:1;3674:53;3719:7;3710:6;3699:9;3695:22;3674:53;:::i;:::-;3664:63;;3620:117;3415:329;;;;:::o;3750:474::-;3818:6;3826;3875:2;3863:9;3854:7;3850:23;3846:32;3843:119;;;3881:79;;:::i;:::-;3843:119;4001:1;4026:53;4071:7;4062:6;4051:9;4047:22;4026:53;:::i;:::-;4016:63;;3972:117;4128:2;4154:53;4199:7;4190:6;4179:9;4175:22;4154:53;:::i;:::-;4144:63;;4099:118;3750:474;;;;;:::o;4230:619::-;4307:6;4315;4323;4372:2;4360:9;4351:7;4347:23;4343:32;4340:119;;;4378:79;;:::i;:::-;4340:119;4498:1;4523:53;4568:7;4559:6;4548:9;4544:22;4523:53;:::i;:::-;4513:63;;4469:117;4625:2;4651:53;4696:7;4687:6;4676:9;4672:22;4651:53;:::i;:::-;4641:63;;4596:118;4753:2;4779:53;4824:7;4815:6;4804:9;4800:22;4779:53;:::i;:::-;4769:63;;4724:118;4230:619;;;;;:::o;4855:943::-;4950:6;4958;4966;4974;5023:3;5011:9;5002:7;4998:23;4994:33;4991:120;;;5030:79;;:::i;:::-;4991:120;5150:1;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5121:117;5277:2;5303:53;5348:7;5339:6;5328:9;5324:22;5303:53;:::i;:::-;5293:63;;5248:118;5405:2;5431:53;5476:7;5467:6;5456:9;5452:22;5431:53;:::i;:::-;5421:63;;5376:118;5561:2;5550:9;5546:18;5533:32;5592:18;5584:6;5581:30;5578:117;;;5614:79;;:::i;:::-;5578:117;5719:62;5773:7;5764:6;5753:9;5749:22;5719:62;:::i;:::-;5709:72;;5504:287;4855:943;;;;;;;:::o;5804:468::-;5869:6;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6023:117;6179:2;6205:50;6247:7;6238:6;6227:9;6223:22;6205:50;:::i;:::-;6195:60;;6150:115;5804:468;;;;;:::o;6278:474::-;6346:6;6354;6403:2;6391:9;6382:7;6378:23;6374:32;6371:119;;;6409:79;;:::i;:::-;6371:119;6529:1;6554:53;6599:7;6590:6;6579:9;6575:22;6554:53;:::i;:::-;6544:63;;6500:117;6656:2;6682:53;6727:7;6718:6;6707:9;6703:22;6682:53;:::i;:::-;6672:63;;6627:118;6278:474;;;;;:::o;6758:539::-;6842:6;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7045:1;7034:9;7030:17;7017:31;7075:18;7067:6;7064:30;7061:117;;;7097:79;;:::i;:::-;7061:117;7202:78;7272:7;7263:6;7252:9;7248:22;7202:78;:::i;:::-;7192:88;;6988:302;6758:539;;;;:::o;7303:323::-;7359:6;7408:2;7396:9;7387:7;7383:23;7379:32;7376:119;;;7414:79;;:::i;:::-;7376:119;7534:1;7559:50;7601:7;7592:6;7581:9;7577:22;7559:50;:::i;:::-;7549:60;;7505:114;7303:323;;;;:::o;7632:327::-;7690:6;7739:2;7727:9;7718:7;7714:23;7710:32;7707:119;;;7745:79;;:::i;:::-;7707:119;7865:1;7890:52;7934:7;7925:6;7914:9;7910:22;7890:52;:::i;:::-;7880:62;;7836:116;7632:327;;;;:::o;7965:349::-;8034:6;8083:2;8071:9;8062:7;8058:23;8054:32;8051:119;;;8089:79;;:::i;:::-;8051:119;8209:1;8234:63;8289:7;8280:6;8269:9;8265:22;8234:63;:::i;:::-;8224:73;;8180:127;7965:349;;;;:::o;8320:509::-;8389:6;8438:2;8426:9;8417:7;8413:23;8409:32;8406:119;;;8444:79;;:::i;:::-;8406:119;8592:1;8581:9;8577:17;8564:31;8622:18;8614:6;8611:30;8608:117;;;8644:79;;:::i;:::-;8608:117;8749:63;8804:7;8795:6;8784:9;8780:22;8749:63;:::i;:::-;8739:73;;8535:287;8320:509;;;;:::o;8835:329::-;8894:6;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9040:117;8835:329;;;;:::o;9170:179::-;9239:10;9260:46;9302:3;9294:6;9260:46;:::i;:::-;9338:4;9333:3;9329:14;9315:28;;9170:179;;;;:::o;9355:118::-;9442:24;9460:5;9442:24;:::i;:::-;9437:3;9430:37;9355:118;;:::o;9509:732::-;9628:3;9657:54;9705:5;9657:54;:::i;:::-;9727:86;9806:6;9801:3;9727:86;:::i;:::-;9720:93;;9837:56;9887:5;9837:56;:::i;:::-;9916:7;9947:1;9932:284;9957:6;9954:1;9951:13;9932:284;;;10033:6;10027:13;10060:63;10119:3;10104:13;10060:63;:::i;:::-;10053:70;;10146:60;10199:6;10146:60;:::i;:::-;10136:70;;9992:224;9979:1;9976;9972:9;9967:14;;9932:284;;;9936:14;10232:3;10225:10;;9633:608;;;9509:732;;;;:::o;10247:109::-;10328:21;10343:5;10328:21;:::i;:::-;10323:3;10316:34;10247:109;;:::o;10362:360::-;10448:3;10476:38;10508:5;10476:38;:::i;:::-;10530:70;10593:6;10588:3;10530:70;:::i;:::-;10523:77;;10609:52;10654:6;10649:3;10642:4;10635:5;10631:16;10609:52;:::i;:::-;10686:29;10708:6;10686:29;:::i;:::-;10681:3;10677:39;10670:46;;10452:270;10362:360;;;;:::o;10728:364::-;10816:3;10844:39;10877:5;10844:39;:::i;:::-;10899:71;10963:6;10958:3;10899:71;:::i;:::-;10892:78;;10979:52;11024:6;11019:3;11012:4;11005:5;11001:16;10979:52;:::i;:::-;11056:29;11078:6;11056:29;:::i;:::-;11051:3;11047:39;11040:46;;10820:272;10728:364;;;;:::o;11098:377::-;11204:3;11232:39;11265:5;11232:39;:::i;:::-;11287:89;11369:6;11364:3;11287:89;:::i;:::-;11280:96;;11385:52;11430:6;11425:3;11418:4;11411:5;11407:16;11385:52;:::i;:::-;11462:6;11457:3;11453:16;11446:23;;11208:267;11098:377;;;;:::o;11481:365::-;11623:3;11644:66;11708:1;11703:3;11644:66;:::i;:::-;11637:73;;11719:93;11808:3;11719:93;:::i;:::-;11837:2;11832:3;11828:12;11821:19;;11481:365;;;:::o;11852:::-;11994:3;12015:66;12079:1;12074:3;12015:66;:::i;:::-;12008:73;;12090:93;12179:3;12090:93;:::i;:::-;12208:2;12203:3;12199:12;12192:19;;11852:365;;;:::o;12223:::-;12365:3;12386:66;12450:1;12445:3;12386:66;:::i;:::-;12379:73;;12461:93;12550:3;12461:93;:::i;:::-;12579:2;12574:3;12570:12;12563:19;;12223:365;;;:::o;12594:366::-;12736:3;12757:67;12821:2;12816:3;12757:67;:::i;:::-;12750:74;;12833:93;12922:3;12833:93;:::i;:::-;12951:2;12946:3;12942:12;12935:19;;12594:366;;;:::o;12966:::-;13108:3;13129:67;13193:2;13188:3;13129:67;:::i;:::-;13122:74;;13205:93;13294:3;13205:93;:::i;:::-;13323:2;13318:3;13314:12;13307:19;;12966:366;;;:::o;13338:365::-;13480:3;13501:66;13565:1;13560:3;13501:66;:::i;:::-;13494:73;;13576:93;13665:3;13576:93;:::i;:::-;13694:2;13689:3;13685:12;13678:19;;13338:365;;;:::o;13709:::-;13851:3;13872:66;13936:1;13931:3;13872:66;:::i;:::-;13865:73;;13947:93;14036:3;13947:93;:::i;:::-;14065:2;14060:3;14056:12;14049:19;;13709:365;;;:::o;14080:::-;14222:3;14243:66;14307:1;14302:3;14243:66;:::i;:::-;14236:73;;14318:93;14407:3;14318:93;:::i;:::-;14436:2;14431:3;14427:12;14420:19;;14080:365;;;:::o;14451:::-;14593:3;14614:66;14678:1;14673:3;14614:66;:::i;:::-;14607:73;;14689:93;14778:3;14689:93;:::i;:::-;14807:2;14802:3;14798:12;14791:19;;14451:365;;;:::o;14822:::-;14964:3;14985:66;15049:1;15044:3;14985:66;:::i;:::-;14978:73;;15060:93;15149:3;15060:93;:::i;:::-;15178:2;15173:3;15169:12;15162:19;;14822:365;;;:::o;15193:::-;15335:3;15356:66;15420:1;15415:3;15356:66;:::i;:::-;15349:73;;15431:93;15520:3;15431:93;:::i;:::-;15549:2;15544:3;15540:12;15533:19;;15193:365;;;:::o;15564:::-;15706:3;15727:66;15791:1;15786:3;15727:66;:::i;:::-;15720:73;;15802:93;15891:3;15802:93;:::i;:::-;15920:2;15915:3;15911:12;15904:19;;15564:365;;;:::o;15935:::-;16077:3;16098:66;16162:1;16157:3;16098:66;:::i;:::-;16091:73;;16173:93;16262:3;16173:93;:::i;:::-;16291:2;16286:3;16282:12;16275:19;;15935:365;;;:::o;16306:::-;16448:3;16469:66;16533:1;16528:3;16469:66;:::i;:::-;16462:73;;16544:93;16633:3;16544:93;:::i;:::-;16662:2;16657:3;16653:12;16646:19;;16306:365;;;:::o;16677:::-;16819:3;16840:66;16904:1;16899:3;16840:66;:::i;:::-;16833:73;;16915:93;17004:3;16915:93;:::i;:::-;17033:2;17028:3;17024:12;17017:19;;16677:365;;;:::o;17048:366::-;17190:3;17211:67;17275:2;17270:3;17211:67;:::i;:::-;17204:74;;17287:93;17376:3;17287:93;:::i;:::-;17405:2;17400:3;17396:12;17389:19;;17048:366;;;:::o;17420:365::-;17562:3;17583:66;17647:1;17642:3;17583:66;:::i;:::-;17576:73;;17658:93;17747:3;17658:93;:::i;:::-;17776:2;17771:3;17767:12;17760:19;;17420:365;;;:::o;17791:::-;17933:3;17954:66;18018:1;18013:3;17954:66;:::i;:::-;17947:73;;18029:93;18118:3;18029:93;:::i;:::-;18147:2;18142:3;18138:12;18131:19;;17791:365;;;:::o;18162:::-;18304:3;18325:66;18389:1;18384:3;18325:66;:::i;:::-;18318:73;;18400:93;18489:3;18400:93;:::i;:::-;18518:2;18513:3;18509:12;18502:19;;18162:365;;;:::o;18533:366::-;18675:3;18696:67;18760:2;18755:3;18696:67;:::i;:::-;18689:74;;18772:93;18861:3;18772:93;:::i;:::-;18890:2;18885:3;18881:12;18874:19;;18533:366;;;:::o;18905:::-;19047:3;19068:67;19132:2;19127:3;19068:67;:::i;:::-;19061:74;;19144:93;19233:3;19144:93;:::i;:::-;19262:2;19257:3;19253:12;19246:19;;18905:366;;;:::o;19277:365::-;19419:3;19440:66;19504:1;19499:3;19440:66;:::i;:::-;19433:73;;19515:93;19604:3;19515:93;:::i;:::-;19633:2;19628:3;19624:12;19617:19;;19277:365;;;:::o;19648:::-;19790:3;19811:66;19875:1;19870:3;19811:66;:::i;:::-;19804:73;;19886:93;19975:3;19886:93;:::i;:::-;20004:2;19999:3;19995:12;19988:19;;19648:365;;;:::o;20019:::-;20161:3;20182:66;20246:1;20241:3;20182:66;:::i;:::-;20175:73;;20257:93;20346:3;20257:93;:::i;:::-;20375:2;20370:3;20366:12;20359:19;;20019:365;;;:::o;20390:108::-;20467:24;20485:5;20467:24;:::i;:::-;20462:3;20455:37;20390:108;;:::o;20504:118::-;20591:24;20609:5;20591:24;:::i;:::-;20586:3;20579:37;20504:118;;:::o;20628:435::-;20808:3;20830:95;20921:3;20912:6;20830:95;:::i;:::-;20823:102;;20942:95;21033:3;21024:6;20942:95;:::i;:::-;20935:102;;21054:3;21047:10;;20628:435;;;;;:::o;21069:222::-;21162:4;21200:2;21189:9;21185:18;21177:26;;21213:71;21281:1;21270:9;21266:17;21257:6;21213:71;:::i;:::-;21069:222;;;;:::o;21297:640::-;21492:4;21530:3;21519:9;21515:19;21507:27;;21544:71;21612:1;21601:9;21597:17;21588:6;21544:71;:::i;:::-;21625:72;21693:2;21682:9;21678:18;21669:6;21625:72;:::i;:::-;21707;21775:2;21764:9;21760:18;21751:6;21707:72;:::i;:::-;21826:9;21820:4;21816:20;21811:2;21800:9;21796:18;21789:48;21854:76;21925:4;21916:6;21854:76;:::i;:::-;21846:84;;21297:640;;;;;;;:::o;21943:373::-;22086:4;22124:2;22113:9;22109:18;22101:26;;22173:9;22167:4;22163:20;22159:1;22148:9;22144:17;22137:47;22201:108;22304:4;22295:6;22201:108;:::i;:::-;22193:116;;21943:373;;;;:::o;22322:210::-;22409:4;22447:2;22436:9;22432:18;22424:26;;22460:65;22522:1;22511:9;22507:17;22498:6;22460:65;:::i;:::-;22322:210;;;;:::o;22538:313::-;22651:4;22689:2;22678:9;22674:18;22666:26;;22738:9;22732:4;22728:20;22724:1;22713:9;22709:17;22702:47;22766:78;22839:4;22830:6;22766:78;:::i;:::-;22758:86;;22538:313;;;;:::o;22857:419::-;23023:4;23061:2;23050:9;23046:18;23038:26;;23110:9;23104:4;23100:20;23096:1;23085:9;23081:17;23074:47;23138:131;23264:4;23138:131;:::i;:::-;23130:139;;22857:419;;;:::o;23282:::-;23448:4;23486:2;23475:9;23471:18;23463:26;;23535:9;23529:4;23525:20;23521:1;23510:9;23506:17;23499:47;23563:131;23689:4;23563:131;:::i;:::-;23555:139;;23282:419;;;:::o;23707:::-;23873:4;23911:2;23900:9;23896:18;23888:26;;23960:9;23954:4;23950:20;23946:1;23935:9;23931:17;23924:47;23988:131;24114:4;23988:131;:::i;:::-;23980:139;;23707:419;;;:::o;24132:::-;24298:4;24336:2;24325:9;24321:18;24313:26;;24385:9;24379:4;24375:20;24371:1;24360:9;24356:17;24349:47;24413:131;24539:4;24413:131;:::i;:::-;24405:139;;24132:419;;;:::o;24557:::-;24723:4;24761:2;24750:9;24746:18;24738:26;;24810:9;24804:4;24800:20;24796:1;24785:9;24781:17;24774:47;24838:131;24964:4;24838:131;:::i;:::-;24830:139;;24557:419;;;:::o;24982:::-;25148:4;25186:2;25175:9;25171:18;25163:26;;25235:9;25229:4;25225:20;25221:1;25210:9;25206:17;25199:47;25263:131;25389:4;25263:131;:::i;:::-;25255:139;;24982:419;;;:::o;25407:::-;25573:4;25611:2;25600:9;25596:18;25588:26;;25660:9;25654:4;25650:20;25646:1;25635:9;25631:17;25624:47;25688:131;25814:4;25688:131;:::i;:::-;25680:139;;25407:419;;;:::o;25832:::-;25998:4;26036:2;26025:9;26021:18;26013:26;;26085:9;26079:4;26075:20;26071:1;26060:9;26056:17;26049:47;26113:131;26239:4;26113:131;:::i;:::-;26105:139;;25832:419;;;:::o;26257:::-;26423:4;26461:2;26450:9;26446:18;26438:26;;26510:9;26504:4;26500:20;26496:1;26485:9;26481:17;26474:47;26538:131;26664:4;26538:131;:::i;:::-;26530:139;;26257:419;;;:::o;26682:::-;26848:4;26886:2;26875:9;26871:18;26863:26;;26935:9;26929:4;26925:20;26921:1;26910:9;26906:17;26899:47;26963:131;27089:4;26963:131;:::i;:::-;26955:139;;26682:419;;;:::o;27107:::-;27273:4;27311:2;27300:9;27296:18;27288:26;;27360:9;27354:4;27350:20;27346:1;27335:9;27331:17;27324:47;27388:131;27514:4;27388:131;:::i;:::-;27380:139;;27107:419;;;:::o;27532:::-;27698:4;27736:2;27725:9;27721:18;27713:26;;27785:9;27779:4;27775:20;27771:1;27760:9;27756:17;27749:47;27813:131;27939:4;27813:131;:::i;:::-;27805:139;;27532:419;;;:::o;27957:::-;28123:4;28161:2;28150:9;28146:18;28138:26;;28210:9;28204:4;28200:20;28196:1;28185:9;28181:17;28174:47;28238:131;28364:4;28238:131;:::i;:::-;28230:139;;27957:419;;;:::o;28382:::-;28548:4;28586:2;28575:9;28571:18;28563:26;;28635:9;28629:4;28625:20;28621:1;28610:9;28606:17;28599:47;28663:131;28789:4;28663:131;:::i;:::-;28655:139;;28382:419;;;:::o;28807:::-;28973:4;29011:2;29000:9;28996:18;28988:26;;29060:9;29054:4;29050:20;29046:1;29035:9;29031:17;29024:47;29088:131;29214:4;29088:131;:::i;:::-;29080:139;;28807:419;;;:::o;29232:::-;29398:4;29436:2;29425:9;29421:18;29413:26;;29485:9;29479:4;29475:20;29471:1;29460:9;29456:17;29449:47;29513:131;29639:4;29513:131;:::i;:::-;29505:139;;29232:419;;;:::o;29657:::-;29823:4;29861:2;29850:9;29846:18;29838:26;;29910:9;29904:4;29900:20;29896:1;29885:9;29881:17;29874:47;29938:131;30064:4;29938:131;:::i;:::-;29930:139;;29657:419;;;:::o;30082:::-;30248:4;30286:2;30275:9;30271:18;30263:26;;30335:9;30329:4;30325:20;30321:1;30310:9;30306:17;30299:47;30363:131;30489:4;30363:131;:::i;:::-;30355:139;;30082:419;;;:::o;30507:::-;30673:4;30711:2;30700:9;30696:18;30688:26;;30760:9;30754:4;30750:20;30746:1;30735:9;30731:17;30724:47;30788:131;30914:4;30788:131;:::i;:::-;30780:139;;30507:419;;;:::o;30932:::-;31098:4;31136:2;31125:9;31121:18;31113:26;;31185:9;31179:4;31175:20;31171:1;31160:9;31156:17;31149:47;31213:131;31339:4;31213:131;:::i;:::-;31205:139;;30932:419;;;:::o;31357:::-;31523:4;31561:2;31550:9;31546:18;31538:26;;31610:9;31604:4;31600:20;31596:1;31585:9;31581:17;31574:47;31638:131;31764:4;31638:131;:::i;:::-;31630:139;;31357:419;;;:::o;31782:::-;31948:4;31986:2;31975:9;31971:18;31963:26;;32035:9;32029:4;32025:20;32021:1;32010:9;32006:17;31999:47;32063:131;32189:4;32063:131;:::i;:::-;32055:139;;31782:419;;;:::o;32207:::-;32373:4;32411:2;32400:9;32396:18;32388:26;;32460:9;32454:4;32450:20;32446:1;32435:9;32431:17;32424:47;32488:131;32614:4;32488:131;:::i;:::-;32480:139;;32207:419;;;:::o;32632:::-;32798:4;32836:2;32825:9;32821:18;32813:26;;32885:9;32879:4;32875:20;32871:1;32860:9;32856:17;32849:47;32913:131;33039:4;32913:131;:::i;:::-;32905:139;;32632:419;;;:::o;33057:222::-;33150:4;33188:2;33177:9;33173:18;33165:26;;33201:71;33269:1;33258:9;33254:17;33245:6;33201:71;:::i;:::-;33057:222;;;;:::o;33285:129::-;33319:6;33346:20;;:::i;:::-;33336:30;;33375:33;33403:4;33395:6;33375:33;:::i;:::-;33285:129;;;:::o;33420:75::-;33453:6;33486:2;33480:9;33470:19;;33420:75;:::o;33501:311::-;33578:4;33668:18;33660:6;33657:30;33654:56;;;33690:18;;:::i;:::-;33654:56;33740:4;33732:6;33728:17;33720:25;;33800:4;33794;33790:15;33782:23;;33501:311;;;:::o;33818:307::-;33879:4;33969:18;33961:6;33958:30;33955:56;;;33991:18;;:::i;:::-;33955:56;34029:29;34051:6;34029:29;:::i;:::-;34021:37;;34113:4;34107;34103:15;34095:23;;33818:307;;;:::o;34131:308::-;34193:4;34283:18;34275:6;34272:30;34269:56;;;34305:18;;:::i;:::-;34269:56;34343:29;34365:6;34343:29;:::i;:::-;34335:37;;34427:4;34421;34417:15;34409:23;;34131:308;;;:::o;34445:132::-;34512:4;34535:3;34527:11;;34565:4;34560:3;34556:14;34548:22;;34445:132;;;:::o;34583:114::-;34650:6;34684:5;34678:12;34668:22;;34583:114;;;:::o;34703:98::-;34754:6;34788:5;34782:12;34772:22;;34703:98;;;:::o;34807:99::-;34859:6;34893:5;34887:12;34877:22;;34807:99;;;:::o;34912:113::-;34982:4;35014;35009:3;35005:14;34997:22;;34912:113;;;:::o;35031:184::-;35130:11;35164:6;35159:3;35152:19;35204:4;35199:3;35195:14;35180:29;;35031:184;;;;:::o;35221:168::-;35304:11;35338:6;35333:3;35326:19;35378:4;35373:3;35369:14;35354:29;;35221:168;;;;:::o;35395:169::-;35479:11;35513:6;35508:3;35501:19;35553:4;35548:3;35544:14;35529:29;;35395:169;;;;:::o;35570:148::-;35672:11;35709:3;35694:18;;35570:148;;;;:::o;35724:305::-;35764:3;35783:20;35801:1;35783:20;:::i;:::-;35778:25;;35817:20;35835:1;35817:20;:::i;:::-;35812:25;;35971:1;35903:66;35899:74;35896:1;35893:81;35890:107;;;35977:18;;:::i;:::-;35890:107;36021:1;36018;36014:9;36007:16;;35724:305;;;;:::o;36035:185::-;36075:1;36092:20;36110:1;36092:20;:::i;:::-;36087:25;;36126:20;36144:1;36126:20;:::i;:::-;36121:25;;36165:1;36155:35;;36170:18;;:::i;:::-;36155:35;36212:1;36209;36205:9;36200:14;;36035:185;;;;:::o;36226:348::-;36266:7;36289:20;36307:1;36289:20;:::i;:::-;36284:25;;36323:20;36341:1;36323:20;:::i;:::-;36318:25;;36511:1;36443:66;36439:74;36436:1;36433:81;36428:1;36421:9;36414:17;36410:105;36407:131;;;36518:18;;:::i;:::-;36407:131;36566:1;36563;36559:9;36548:20;;36226:348;;;;:::o;36580:191::-;36620:4;36640:20;36658:1;36640:20;:::i;:::-;36635:25;;36674:20;36692:1;36674:20;:::i;:::-;36669:25;;36713:1;36710;36707:8;36704:34;;;36718:18;;:::i;:::-;36704:34;36763:1;36760;36756:9;36748:17;;36580:191;;;;:::o;36777:96::-;36814:7;36843:24;36861:5;36843:24;:::i;:::-;36832:35;;36777:96;;;:::o;36879:90::-;36913:7;36956:5;36949:13;36942:21;36931:32;;36879:90;;;:::o;36975:149::-;37011:7;37051:66;37044:5;37040:78;37029:89;;36975:149;;;:::o;37130:126::-;37167:7;37207:42;37200:5;37196:54;37185:65;;37130:126;;;:::o;37262:77::-;37299:7;37328:5;37317:16;;37262:77;;;:::o;37345:154::-;37429:6;37424:3;37419;37406:30;37491:1;37482:6;37477:3;37473:16;37466:27;37345:154;;;:::o;37505:307::-;37573:1;37583:113;37597:6;37594:1;37591:13;37583:113;;;37682:1;37677:3;37673:11;37667:18;37663:1;37658:3;37654:11;37647:39;37619:2;37616:1;37612:10;37607:15;;37583:113;;;37714:6;37711:1;37708:13;37705:101;;;37794:1;37785:6;37780:3;37776:16;37769:27;37705:101;37554:258;37505:307;;;:::o;37818:320::-;37862:6;37899:1;37893:4;37889:12;37879:22;;37946:1;37940:4;37936:12;37967:18;37957:81;;38023:4;38015:6;38011:17;38001:27;;37957:81;38085:2;38077:6;38074:14;38054:18;38051:38;38048:84;;;38104:18;;:::i;:::-;38048:84;37869:269;37818:320;;;:::o;38144:281::-;38227:27;38249:4;38227:27;:::i;:::-;38219:6;38215:40;38357:6;38345:10;38342:22;38321:18;38309:10;38306:34;38303:62;38300:88;;;38368:18;;:::i;:::-;38300:88;38408:10;38404:2;38397:22;38187:238;38144:281;;:::o;38431:233::-;38470:3;38493:24;38511:5;38493:24;:::i;:::-;38484:33;;38539:66;38532:5;38529:77;38526:103;;;38609:18;;:::i;:::-;38526:103;38656:1;38649:5;38645:13;38638:20;;38431:233;;;:::o;38670:176::-;38702:1;38719:20;38737:1;38719:20;:::i;:::-;38714:25;;38753:20;38771:1;38753:20;:::i;:::-;38748:25;;38792:1;38782:35;;38797:18;;:::i;:::-;38782:35;38838:1;38835;38831:9;38826:14;;38670:176;;;;:::o;38852:180::-;38900:77;38897:1;38890:88;38997:4;38994:1;38987:15;39021:4;39018:1;39011:15;39038:180;39086:77;39083:1;39076:88;39183:4;39180:1;39173:15;39207:4;39204:1;39197:15;39224:180;39272:77;39269:1;39262:88;39369:4;39366:1;39359:15;39393:4;39390:1;39383:15;39410:180;39458:77;39455:1;39448:88;39555:4;39552:1;39545:15;39579:4;39576:1;39569:15;39596:180;39644:77;39641:1;39634:88;39741:4;39738:1;39731:15;39765:4;39762:1;39755:15;39782:180;39830:77;39827:1;39820:88;39927:4;39924:1;39917:15;39951:4;39948:1;39941:15;39968:117;40077:1;40074;40067:12;40091:117;40200:1;40197;40190:12;40214:117;40323:1;40320;40313:12;40337:117;40446:1;40443;40436:12;40460:117;40569:1;40566;40559:12;40583:102;40624:6;40675:2;40671:7;40666:2;40659:5;40655:14;40651:28;40641:38;;40583:102;;;:::o;40691:153::-;40831:5;40827:1;40819:6;40815:14;40808:29;40691:153;:::o;40850:::-;40990:5;40986:1;40978:6;40974:14;40967:29;40850:153;:::o;41009:::-;41149:5;41145:1;41137:6;41133:14;41126:29;41009:153;:::o;41168:230::-;41308:34;41304:1;41296:6;41292:14;41285:58;41377:13;41372:2;41364:6;41360:15;41353:38;41168:230;:::o;41404:165::-;41544:17;41540:1;41532:6;41528:14;41521:41;41404:165;:::o;41575:153::-;41715:5;41711:1;41703:6;41699:14;41692:29;41575:153;:::o;41734:::-;41874:5;41870:1;41862:6;41858:14;41851:29;41734:153;:::o;41893:::-;42033:5;42029:1;42021:6;42017:14;42010:29;41893:153;:::o;42052:::-;42192:5;42188:1;42180:6;42176:14;42169:29;42052:153;:::o;42211:::-;42351:5;42347:1;42339:6;42335:14;42328:29;42211:153;:::o;42370:::-;42510:5;42506:1;42498:6;42494:14;42487:29;42370:153;:::o;42529:::-;42669:5;42665:1;42657:6;42653:14;42646:29;42529:153;:::o;42688:::-;42828:5;42824:1;42816:6;42812:14;42805:29;42688:153;:::o;42847:::-;42987:5;42983:1;42975:6;42971:14;42964:29;42847:153;:::o;43006:::-;43146:5;43142:1;43134:6;43130:14;43123:29;43006:153;:::o;43165:160::-;43305:12;43301:1;43293:6;43289:14;43282:36;43165:160;:::o;43331:153::-;43471:5;43467:1;43459:6;43455:14;43448:29;43331:153;:::o;43490:::-;43630:5;43626:1;43618:6;43614:14;43607:29;43490:153;:::o;43649:::-;43789:5;43785:1;43777:6;43773:14;43766:29;43649:153;:::o;43808:167::-;43948:19;43944:1;43936:6;43932:14;43925:43;43808:167;:::o;43981:231::-;44121:34;44117:1;44109:6;44105:14;44098:58;44190:14;44185:2;44177:6;44173:15;44166:39;43981:231;:::o;44218:153::-;44358:5;44354:1;44346:6;44342:14;44335:29;44218:153;:::o;44377:::-;44517:5;44513:1;44505:6;44501:14;44494:29;44377:153;:::o;44536:::-;44676:5;44672:1;44664:6;44660:14;44653:29;44536:153;:::o;44695:122::-;44768:24;44786:5;44768:24;:::i;:::-;44761:5;44758:35;44748:63;;44807:1;44804;44797:12;44748:63;44695:122;:::o;44823:116::-;44893:21;44908:5;44893:21;:::i;:::-;44886:5;44883:32;44873:60;;44929:1;44926;44919:12;44873:60;44823:116;:::o;44945:120::-;45017:23;45034:5;45017:23;:::i;:::-;45010:5;45007:34;44997:62;;45055:1;45052;45045:12;44997:62;44945:120;:::o;45071:122::-;45144:24;45162:5;45144:24;:::i;:::-;45137:5;45134:35;45124:63;;45183:1;45180;45173:12;45124:63;45071:122;:::o

Swarm Source

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