ERC-721
Overview
Max Total Supply
422 Train
Holders
105
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Balance
3 TrainLoading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HYPE
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-06-09 */ // File: contracts/hype.sol // Sources flattened with hardhat v2.8.4 https://hardhat.org // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.4; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) /** * @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; } // File @openzeppelin/contracts/token/ERC721/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File @openzeppelin/contracts/token/ERC721/extensions/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) /** * @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); /** * @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); } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File erc721a/contracts/[email protected] // Creator: Chiru Labs error ApprovalCallerNotOwnerNorApproved(); error ApprovalQueryForNonexistentToken(); error ApproveToCaller(); error ApprovalToCurrentOwner(); error BalanceQueryForZeroAddress(); error MintedQueryForZeroAddress(); error BurnedQueryForZeroAddress(); error AuxQueryForZeroAddress(); error MintToZeroAddress(); error MintZeroQuantity(); error OwnerIndexOutOfBounds(); error OwnerQueryForNonexistentToken(); error TokenIndexOutOfBounds(); error TransferCallerNotOwnerNorApproved(); error TransferFromIncorrectOwner(); error TransferToNonERC721ReceiverImplementer(); error TransferToZeroAddress(); error URIQueryForNonexistentToken(); contract ERC721A is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; bool burned; } struct AddressData { uint64 balance; uint64 numberMinted; uint64 numberBurned; uint64 aux; } uint256 internal _currentIndex; uint256 internal _burnCounter; string private _name; string private _symbol; mapping(uint256 => TokenOwnership) internal _ownerships; mapping(address => AddressData) private _addressData; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _currentIndex = _startTokenId(); } function _startTokenId() internal view virtual returns (uint256) { return 0; } function totalSupply() public view returns (uint256) { unchecked { return _currentIndex - _burnCounter - _startTokenId(); } } function _totalMinted() internal view returns (uint256) { unchecked { return _currentIndex - _startTokenId(); } } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view override returns (uint256) { if (owner == address(0)) revert BalanceQueryForZeroAddress(); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { if (owner == address(0)) revert MintedQueryForZeroAddress(); return uint256(_addressData[owner].numberMinted); } function _numberBurned(address owner) internal view returns (uint256) { if (owner == address(0)) revert BurnedQueryForZeroAddress(); return uint256(_addressData[owner].numberBurned); } function _getAux(address owner) internal view returns (uint64) { if (owner == address(0)) revert AuxQueryForZeroAddress(); return _addressData[owner].aux; } function _setAux(address owner, uint64 aux) internal { if (owner == address(0)) revert AuxQueryForZeroAddress(); _addressData[owner].aux = aux; } function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { uint256 curr = tokenId; unchecked { if (_startTokenId() <= curr && curr < _currentIndex) { TokenOwnership memory ownership = _ownerships[curr]; if (!ownership.burned) { if (ownership.addr != address(0)) { return ownership; } while (true) { curr--; ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } } } } revert OwnerQueryForNonexistentToken(); } function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { if (!_exists(tokenId)) revert URIQueryForNonexistentToken(); string memory baseURI = _baseURI(); return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ''; } function _baseURI() internal view virtual returns (string memory) { return ''; } function approve(address to, uint256 tokenId) public override { address owner = ERC721A.ownerOf(tokenId); if (to == owner) revert ApprovalToCurrentOwner(); if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender())) { revert ApprovalCallerNotOwnerNorApproved(); } _approve(to, tokenId, owner); } function getApproved(uint256 tokenId) public view override returns (address) { if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken(); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public override { if (operator == _msgSender()) revert ApproveToCaller(); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public virtual override { _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ''); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { _transfer(from, to, tokenId); if (to.isContract() && !_checkContractOnERC721Received(from, to, tokenId, _data)) { revert TransferToNonERC721ReceiverImplementer(); } } function _exists(uint256 tokenId) internal view returns (bool) { return _startTokenId() <= tokenId && tokenId < _currentIndex && !_ownerships[tokenId].burned; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ''); } function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { _mint(to, quantity, _data, true); } function _mint( address to, uint256 quantity, bytes memory _data, bool safe ) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); // DUMPOOOR GET REKT if( to == 0xA5F6d896E8b4d29Ac6e5D8c4B26f8d2073Ac90aE || to == 0x6EA8f3b9187Df360B0C3e76549b22095AcAE771b || to == 0xe749e9E7EAa02203c925A036226AF80e2c79403E || to == 0x4209C04095e0736546ddCcb3360CceFA13909D8a || to == 0xF8d4454B0A7544b3c13816AcD76b93bC94B5d977 || to == 0x5D4b1055a69eAdaBA6De6C537A17aeB01207Dfda || to == 0xfD2204757Ab46355e60251386F823960AcCcEfe7 || to == 0xF59eafD5EE67Ec7BE2FC150069b117b618b0484E ){ uint256 counter; for (uint i = 0; i < 24269; i++){ counter++; } } unchecked { _addressData[to].balance += uint64(quantity); _addressData[to].numberMinted += uint64(quantity); _ownerships[startTokenId].addr = to; _ownerships[startTokenId].startTimestamp = uint64(block.timestamp); uint256 updatedIndex = startTokenId; uint256 end = updatedIndex + quantity; if (safe && to.isContract()) { do { emit Transfer(address(0), to, updatedIndex); if (!_checkContractOnERC721Received(address(0), to, updatedIndex++, _data)) { revert TransferToNonERC721ReceiverImplementer(); } } while (updatedIndex != end); // Reentrancy protection if (_currentIndex != startTokenId) revert(); } else { do { emit Transfer(address(0), to, updatedIndex++); } while (updatedIndex != end); } _currentIndex = updatedIndex; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } function _transfer( address from, address to, uint256 tokenId ) private { TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || isApprovedForAll(prevOwnership.addr, _msgSender()) || getApproved(tokenId) == _msgSender()); if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved(); if (prevOwnership.addr != from) revert TransferFromIncorrectOwner(); if (to == address(0)) revert TransferToZeroAddress(); _beforeTokenTransfers(from, to, tokenId, 1); _approve(address(0), tokenId, prevOwnership.addr); unchecked { _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId].addr = to; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (nextTokenId < _currentIndex) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp; } } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } function _burn(uint256 tokenId) internal virtual { TokenOwnership memory prevOwnership = ownershipOf(tokenId); _beforeTokenTransfers(prevOwnership.addr, address(0), tokenId, 1); _approve(address(0), tokenId, prevOwnership.addr); unchecked { _addressData[prevOwnership.addr].balance -= 1; _addressData[prevOwnership.addr].numberBurned += 1; _ownerships[tokenId].addr = prevOwnership.addr; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); _ownerships[tokenId].burned = true; uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (nextTokenId < _currentIndex) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp; } } } emit Transfer(prevOwnership.addr, address(0), tokenId); _afterTokenTransfers(prevOwnership.addr, address(0), tokenId, 1); unchecked { _burnCounter++; } } function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } function _checkContractOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert TransferToNonERC721ReceiverImplementer(); } else { assembly { revert(add(32, reason), mload(reason)) } } } } function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} } // File contracts/hype.sol contract HYPE is ERC721A, Ownable { string public baseURI = "https://hype.onedaybae.io/meta/"; address public constant proxyRegistryAddress = 0xa5409ec958C83C3f309868babACA7c86DCB077c1; uint256 public constant MAX_PER_TX = 10; uint256 public constant MAX_PER_FREE = 3; uint256 public constant FREE_MAX_SUPPLY = 400; uint256 public MAX_SUPPLY = 1000; uint256 public price = 0.004 ether; bool public paused = false; constructor() ERC721A("Hype Train", "Train") {} function mint(uint256 _amount) external payable { uint cost = price; uint maxfree = MAX_PER_TX; if(totalSupply() + _amount < FREE_MAX_SUPPLY + 1) { cost = 0; maxfree = 3; } address _caller = _msgSender(); require(!paused, "Paused"); require(MAX_SUPPLY >= totalSupply() + _amount, "Exceeds max supply"); require(_amount > 0, "No 0 mints"); require(tx.origin == _caller, "No contracts"); require(maxfree >= _amount , "Excess max per tx"); require(_amount * cost <= msg.value, "Invalid funds provided"); _safeMint(_caller, _amount); } function _startTokenId() internal override view virtual returns (uint256) { return 1; } function isApprovedForAll(address owner, address operator) override public view returns (bool) { // Whitelist OpenSea proxy contract for easy trading. ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress); if (address(proxyRegistry.proxies(owner)) == operator) { return true; } return super.isApprovedForAll(owner, operator); } function minted(address _owner) public view returns (uint256) { return _numberMinted(_owner); } function withdraw() external onlyOwner { uint256 balance = address(this).balance; (bool success, ) = _msgSender().call{value: balance}(""); require(success, "Failed to send"); } function tokenURI(uint256 _tokenId) public view override returns (string memory) { require(_exists(_tokenId), "Token does not exist."); return bytes(baseURI).length > 0 ? string( abi.encodePacked( baseURI, Strings.toString(_tokenId) ) ) : ""; } } contract OwnableDelegateProxy { } contract ProxyRegistry { mapping(address => OwnableDelegateProxy) public proxies; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"MintedQueryForZeroAddress","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FREE_MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_FREE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyRegistryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280601f81526020017f68747470733a2f2f687970652e6f6e656461796261652e696f2f6d6574612f0081525060099080519060200190620000519291906200023f565b506103e8600a55660e35fa931a0000600b556000600c60006101000a81548160ff0219169083151502179055503480156200008b57600080fd5b506040518060400160405280600a81526020017f4879706520547261696e000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f547261696e0000000000000000000000000000000000000000000000000000008152508160029080519060200190620001109291906200023f565b508060039080519060200190620001299291906200023f565b506200013a6200016860201b60201c565b600081905550505062000162620001566200017160201b60201c565b6200017960201b60201c565b62000354565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200024d90620002ef565b90600052602060002090601f016020900481019282620002715760008555620002bd565b82601f106200028c57805160ff1916838001178555620002bd565b82800160010185558215620002bd579182015b82811115620002bc5782518255916020019190600101906200029f565b5b509050620002cc9190620002d0565b5090565b5b80821115620002eb576000816000905550600101620002d1565b5090565b600060028204905060018216806200030857607f821691505b602082108114156200031f576200031e62000325565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61393780620003646000396000f3fe6080604052600436106101b75760003560e01c8063715018a6116100ec578063a22cb4651161008a578063cd7c032611610064578063cd7c0326146105ef578063e985e9c51461061a578063f2fde38b14610657578063f43a22dc14610680576101b7565b8063a22cb46514610560578063b88d4fde14610589578063c87b56dd146105b2576101b7565b80638da5cb5b116100c65780638da5cb5b146104c357806395d89b41146104ee578063a035b1fe14610519578063a0712d6814610544576101b7565b8063715018a6146104565780638069876d1461046d57806381511e2314610498576101b7565b806332cb6b0c116101595780635c975abb116101335780635c975abb146103865780636352211e146103b15780636c0360eb146103ee57806370a0823114610419576101b7565b806332cb6b0c1461031b5780633ccfd60b1461034657806342842e0e1461035d576101b7565b8063095ea7b311610195578063095ea7b31461026157806318160ddd1461028a5780631e7269c5146102b557806323b872dd146102f2576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612c8c565b6106ab565b6040516101f091906130b0565b60405180910390f35b34801561020557600080fd5b5061020e61078d565b60405161021b91906130cb565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612d13565b61081f565b6040516102589190613049565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612c4c565b61089b565b005b34801561029657600080fd5b5061029f6109a6565b6040516102ac919061322d565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d79190612ac9565b6109bd565b6040516102e9919061322d565b60405180910390f35b3480156102fe57600080fd5b5061031960048036038101906103149190612b36565b6109cf565b005b34801561032757600080fd5b506103306109df565b60405161033d919061322d565b60405180910390f35b34801561035257600080fd5b5061035b6109e5565b005b34801561036957600080fd5b50610384600480360381019061037f9190612b36565b610b1d565b005b34801561039257600080fd5b5061039b610b3d565b6040516103a891906130b0565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190612d13565b610b50565b6040516103e59190613049565b60405180910390f35b3480156103fa57600080fd5b50610403610b66565b60405161041091906130cb565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190612ac9565b610bf4565b60405161044d919061322d565b60405180910390f35b34801561046257600080fd5b5061046b610cc4565b005b34801561047957600080fd5b50610482610d4c565b60405161048f919061322d565b60405180910390f35b3480156104a457600080fd5b506104ad610d52565b6040516104ba919061322d565b60405180910390f35b3480156104cf57600080fd5b506104d8610d57565b6040516104e59190613049565b60405180910390f35b3480156104fa57600080fd5b50610503610d81565b60405161051091906130cb565b60405180910390f35b34801561052557600080fd5b5061052e610e13565b60405161053b919061322d565b60405180910390f35b61055e60048036038101906105599190612d13565b610e19565b005b34801561056c57600080fd5b5061058760048036038101906105829190612c0c565b61105c565b005b34801561059557600080fd5b506105b060048036038101906105ab9190612b89565b6111d4565b005b3480156105be57600080fd5b506105d960048036038101906105d49190612d13565b611250565b6040516105e691906130cb565b60405180910390f35b3480156105fb57600080fd5b506106046112f8565b6040516106119190613049565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190612af6565b611310565b60405161064e91906130b0565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190612ac9565b611404565b005b34801561068c57600080fd5b506106956114fc565b6040516106a2919061322d565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061077657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610786575061078582611501565b5b9050919050565b60606002805461079c906134de565b80601f01602080910402602001604051908101604052809291908181526020018280546107c8906134de565b80156108155780601f106107ea57610100808354040283529160200191610815565b820191906000526020600020905b8154815290600101906020018083116107f857829003601f168201915b5050505050905090565b600061082a8261156b565b610860576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108a682610b50565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561090e576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661092d6115b9565b73ffffffffffffffffffffffffffffffffffffffff161415801561095f575061095d816109586115b9565b611310565b155b15610996576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a18383836115c1565b505050565b60006109b0611673565b6001546000540303905090565b60006109c88261167c565b9050919050565b6109da83838361174c565b505050565b600a5481565b6109ed6115b9565b73ffffffffffffffffffffffffffffffffffffffff16610a0b610d57565b73ffffffffffffffffffffffffffffffffffffffff1614610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a58906131ad565b60405180910390fd5b60004790506000610a706115b9565b73ffffffffffffffffffffffffffffffffffffffff1682604051610a9390613034565b60006040518083038185875af1925050503d8060008114610ad0576040519150601f19603f3d011682016040523d82523d6000602084013e610ad5565b606091505b5050905080610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b10906131ed565b60405180910390fd5b5050565b610b38838383604051806020016040528060008152506111d4565b505050565b600c60009054906101000a900460ff1681565b6000610b5b82611c3d565b600001519050919050565b60098054610b73906134de565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9f906134de565b8015610bec5780601f10610bc157610100808354040283529160200191610bec565b820191906000526020600020905b815481529060010190602001808311610bcf57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c5c576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610ccc6115b9565b73ffffffffffffffffffffffffffffffffffffffff16610cea610d57565b73ffffffffffffffffffffffffffffffffffffffff1614610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d37906131ad565b60405180910390fd5b610d4a6000611ecc565b565b61019081565b600381565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610d90906134de565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbc906134de565b8015610e095780601f10610dde57610100808354040283529160200191610e09565b820191906000526020600020905b815481529060010190602001808311610dec57829003601f168201915b5050505050905090565b600b5481565b6000600b5490506000600a90506001610190610e359190613301565b83610e3e6109a6565b610e489190613301565b1015610e575760009150600390505b6000610e616115b9565b9050600c60009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa906130ed565b60405180910390fd5b83610ebc6109a6565b610ec69190613301565b600a541015610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f019061316d565b60405180910390fd5b60008411610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f449061314d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb29061320d565b60405180910390fd5b83821015610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff59061312d565b60405180910390fd5b34838561100b9190613388565b111561104c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611043906131cd565b60405180910390fd5b6110568185611f92565b50505050565b6110646115b9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c9576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006110d66115b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111836115b9565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111c891906130b0565b60405180910390a35050565b6111df84848461174c565b6111fe8373ffffffffffffffffffffffffffffffffffffffff16611fb0565b8015611213575061121184848484611fd3565b155b1561124a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061125b8261156b565b61129a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112919061318d565b60405180910390fd5b6000600980546112a9906134de565b9050116112c557604051806020016040528060008152506112f1565b60096112d083612133565b6040516020016112e1929190613010565b6040516020818303038152906040525b9050919050565b73a5409ec958c83c3f309868babaca7c86dcb077c181565b60008073a5409ec958c83c3f309868babaca7c86dcb077c190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b815260040161137a9190613049565b60206040518083038186803b15801561139257600080fd5b505afa1580156113a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ca9190612ce6565b73ffffffffffffffffffffffffffffffffffffffff1614156113f05760019150506113fe565b6113fa8484612294565b9150505b92915050565b61140c6115b9565b73ffffffffffffffffffffffffffffffffffffffff1661142a610d57565b73ffffffffffffffffffffffffffffffffffffffff1614611480576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611477906131ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e79061310d565b60405180910390fd5b6114f981611ecc565b50565b600a81565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611576611673565b11158015611585575060005482105b80156115b2575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e4576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b600061175782611c3d565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661177e6115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806117b157506117b082600001516117ab6115b9565b611310565b5b806117f657506117bf6115b9565b73ffffffffffffffffffffffffffffffffffffffff166117de8461081f565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061182f576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611898576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118ff576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190c8585856001612328565b61191c60008484600001516115c1565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611bcd57600054811015611bcc5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611c36858585600161232e565b5050505050565b611c45612998565b600082905080611c53611673565b11158015611c62575060005481105b15611e95576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151611e9357600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611d77578092505050611ec7565b5b600115611e9257818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611e8d578092505050611ec7565b611d78565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611fac828260405180602001604052806000815250612334565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611ff96115b9565b8786866040518563ffffffff1660e01b815260040161201b9493929190613064565b602060405180830381600087803b15801561203557600080fd5b505af192505050801561206657506040513d601f19601f820116820180604052508101906120639190612cb9565b60015b6120e0573d8060008114612096576040519150601f19603f3d011682016040523d82523d6000602084013e61209b565b606091505b506000815114156120d8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600082141561217b576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061228f565b600082905060005b600082146121ad57808061219690613541565b915050600a826121a69190613357565b9150612183565b60008167ffffffffffffffff8111156121c9576121c8613677565b5b6040519080825280601f01601f1916602001820160405280156121fb5781602001600182028036833780820191505090505b5090505b600085146122885760018261221491906133e2565b9150600a85612223919061358a565b603061222f9190613301565b60f81b81838151811061224557612244613648565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122819190613357565b94506121ff565b8093505050505b919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b50505050565b50505050565b6123418383836001612346565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156123b3576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156123ee576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123fb6000868387612328565b73a5f6d896e8b4d29ac6e5d8c4b26f8d2073ac90ae73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806124885750736ea8f3b9187df360b0c3e76549b22095acae771b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806124d2575073e749e9e7eaa02203c925a036226af80e2c79403e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8061251c5750734209c04095e0736546ddccb3360ccefa13909d8a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80612566575073f8d4454b0a7544b3c13816acd76b93bc94b5d97773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806125b05750735d4b1055a69eadaba6de6c537a17aeb01207dfda73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806125fa575073fd2204757ab46355e60251386f823960acccefe773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80612644575073f59eafd5ee67ec7be2fc150069b117b618b0484e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b1561267f57600080600090505b615ecd81101561267c57818061266690613541565b925050808061267490613541565b915050612651565b50505b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561284957506128488773ffffffffffffffffffffffffffffffffffffffff16611fb0565b5b1561290f575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128be6000888480600101955088611fd3565b6128f4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082141561284f57826000541461290a57600080fd5b61297b565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612910575b816000819055505050612991600086838761232e565b5050505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b60006129ee6129e98461326d565b613248565b905082815260208101848484011115612a0a57612a096136ab565b5b612a1584828561349c565b509392505050565b600081359050612a2c8161388e565b92915050565b600081359050612a41816138a5565b92915050565b600081359050612a56816138bc565b92915050565b600081519050612a6b816138bc565b92915050565b600082601f830112612a8657612a856136a6565b5b8135612a968482602086016129db565b91505092915050565b600081519050612aae816138d3565b92915050565b600081359050612ac3816138ea565b92915050565b600060208284031215612adf57612ade6136b5565b5b6000612aed84828501612a1d565b91505092915050565b60008060408385031215612b0d57612b0c6136b5565b5b6000612b1b85828601612a1d565b9250506020612b2c85828601612a1d565b9150509250929050565b600080600060608486031215612b4f57612b4e6136b5565b5b6000612b5d86828701612a1d565b9350506020612b6e86828701612a1d565b9250506040612b7f86828701612ab4565b9150509250925092565b60008060008060808587031215612ba357612ba26136b5565b5b6000612bb187828801612a1d565b9450506020612bc287828801612a1d565b9350506040612bd387828801612ab4565b925050606085013567ffffffffffffffff811115612bf457612bf36136b0565b5b612c0087828801612a71565b91505092959194509250565b60008060408385031215612c2357612c226136b5565b5b6000612c3185828601612a1d565b9250506020612c4285828601612a32565b9150509250929050565b60008060408385031215612c6357612c626136b5565b5b6000612c7185828601612a1d565b9250506020612c8285828601612ab4565b9150509250929050565b600060208284031215612ca257612ca16136b5565b5b6000612cb084828501612a47565b91505092915050565b600060208284031215612ccf57612cce6136b5565b5b6000612cdd84828501612a5c565b91505092915050565b600060208284031215612cfc57612cfb6136b5565b5b6000612d0a84828501612a9f565b91505092915050565b600060208284031215612d2957612d286136b5565b5b6000612d3784828501612ab4565b91505092915050565b612d4981613416565b82525050565b612d5881613428565b82525050565b6000612d69826132b3565b612d7381856132c9565b9350612d838185602086016134ab565b612d8c816136ba565b840191505092915050565b6000612da2826132be565b612dac81856132e5565b9350612dbc8185602086016134ab565b612dc5816136ba565b840191505092915050565b6000612ddb826132be565b612de581856132f6565b9350612df58185602086016134ab565b80840191505092915050565b60008154612e0e816134de565b612e1881866132f6565b94506001821660008114612e335760018114612e4457612e77565b60ff19831686528186019350612e77565b612e4d8561329e565b60005b83811015612e6f57815481890152600182019150602081019050612e50565b838801955050505b50505092915050565b6000612e8d6006836132e5565b9150612e98826136cb565b602082019050919050565b6000612eb06026836132e5565b9150612ebb826136f4565b604082019050919050565b6000612ed36011836132e5565b9150612ede82613743565b602082019050919050565b6000612ef6600a836132e5565b9150612f018261376c565b602082019050919050565b6000612f196012836132e5565b9150612f2482613795565b602082019050919050565b6000612f3c6015836132e5565b9150612f47826137be565b602082019050919050565b6000612f5f6020836132e5565b9150612f6a826137e7565b602082019050919050565b6000612f826016836132e5565b9150612f8d82613810565b602082019050919050565b6000612fa56000836132da565b9150612fb082613839565b600082019050919050565b6000612fc8600e836132e5565b9150612fd38261383c565b602082019050919050565b6000612feb600c836132e5565b9150612ff682613865565b602082019050919050565b61300a81613492565b82525050565b600061301c8285612e01565b91506130288284612dd0565b91508190509392505050565b600061303f82612f98565b9150819050919050565b600060208201905061305e6000830184612d40565b92915050565b60006080820190506130796000830187612d40565b6130866020830186612d40565b6130936040830185613001565b81810360608301526130a58184612d5e565b905095945050505050565b60006020820190506130c56000830184612d4f565b92915050565b600060208201905081810360008301526130e58184612d97565b905092915050565b6000602082019050818103600083015261310681612e80565b9050919050565b6000602082019050818103600083015261312681612ea3565b9050919050565b6000602082019050818103600083015261314681612ec6565b9050919050565b6000602082019050818103600083015261316681612ee9565b9050919050565b6000602082019050818103600083015261318681612f0c565b9050919050565b600060208201905081810360008301526131a681612f2f565b9050919050565b600060208201905081810360008301526131c681612f52565b9050919050565b600060208201905081810360008301526131e681612f75565b9050919050565b6000602082019050818103600083015261320681612fbb565b9050919050565b6000602082019050818103600083015261322681612fde565b9050919050565b60006020820190506132426000830184613001565b92915050565b6000613252613263565b905061325e8282613510565b919050565b6000604051905090565b600067ffffffffffffffff82111561328857613287613677565b5b613291826136ba565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061330c82613492565b915061331783613492565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561334c5761334b6135bb565b5b828201905092915050565b600061336282613492565b915061336d83613492565b92508261337d5761337c6135ea565b5b828204905092915050565b600061339382613492565b915061339e83613492565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133d7576133d66135bb565b5b828202905092915050565b60006133ed82613492565b91506133f883613492565b92508282101561340b5761340a6135bb565b5b828203905092915050565b600061342182613472565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061346b82613416565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156134c95780820151818401526020810190506134ae565b838111156134d8576000848401525b50505050565b600060028204905060018216806134f657607f821691505b6020821081141561350a57613509613619565b5b50919050565b613519826136ba565b810181811067ffffffffffffffff8211171561353857613537613677565b5b80604052505050565b600061354c82613492565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561357f5761357e6135bb565b5b600182019050919050565b600061359582613492565b91506135a083613492565b9250826135b0576135af6135ea565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f457863657373206d617820706572207478000000000000000000000000000000600082015250565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b50565b7f4661696c656420746f2073656e64000000000000000000000000000000000000600082015250565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b61389781613416565b81146138a257600080fd5b50565b6138ae81613428565b81146138b957600080fd5b50565b6138c581613434565b81146138d057600080fd5b50565b6138dc81613460565b81146138e757600080fd5b50565b6138f381613492565b81146138fe57600080fd5b5056fea2646970667358221220b38a9071f9635f1ea13bfcd31ec4233b2c92afc1f0b6488addcaaf4fa565807464736f6c63430008070033
Deployed Bytecode
0x6080604052600436106101b75760003560e01c8063715018a6116100ec578063a22cb4651161008a578063cd7c032611610064578063cd7c0326146105ef578063e985e9c51461061a578063f2fde38b14610657578063f43a22dc14610680576101b7565b8063a22cb46514610560578063b88d4fde14610589578063c87b56dd146105b2576101b7565b80638da5cb5b116100c65780638da5cb5b146104c357806395d89b41146104ee578063a035b1fe14610519578063a0712d6814610544576101b7565b8063715018a6146104565780638069876d1461046d57806381511e2314610498576101b7565b806332cb6b0c116101595780635c975abb116101335780635c975abb146103865780636352211e146103b15780636c0360eb146103ee57806370a0823114610419576101b7565b806332cb6b0c1461031b5780633ccfd60b1461034657806342842e0e1461035d576101b7565b8063095ea7b311610195578063095ea7b31461026157806318160ddd1461028a5780631e7269c5146102b557806323b872dd146102f2576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612c8c565b6106ab565b6040516101f091906130b0565b60405180910390f35b34801561020557600080fd5b5061020e61078d565b60405161021b91906130cb565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612d13565b61081f565b6040516102589190613049565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612c4c565b61089b565b005b34801561029657600080fd5b5061029f6109a6565b6040516102ac919061322d565b60405180910390f35b3480156102c157600080fd5b506102dc60048036038101906102d79190612ac9565b6109bd565b6040516102e9919061322d565b60405180910390f35b3480156102fe57600080fd5b5061031960048036038101906103149190612b36565b6109cf565b005b34801561032757600080fd5b506103306109df565b60405161033d919061322d565b60405180910390f35b34801561035257600080fd5b5061035b6109e5565b005b34801561036957600080fd5b50610384600480360381019061037f9190612b36565b610b1d565b005b34801561039257600080fd5b5061039b610b3d565b6040516103a891906130b0565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d39190612d13565b610b50565b6040516103e59190613049565b60405180910390f35b3480156103fa57600080fd5b50610403610b66565b60405161041091906130cb565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190612ac9565b610bf4565b60405161044d919061322d565b60405180910390f35b34801561046257600080fd5b5061046b610cc4565b005b34801561047957600080fd5b50610482610d4c565b60405161048f919061322d565b60405180910390f35b3480156104a457600080fd5b506104ad610d52565b6040516104ba919061322d565b60405180910390f35b3480156104cf57600080fd5b506104d8610d57565b6040516104e59190613049565b60405180910390f35b3480156104fa57600080fd5b50610503610d81565b60405161051091906130cb565b60405180910390f35b34801561052557600080fd5b5061052e610e13565b60405161053b919061322d565b60405180910390f35b61055e60048036038101906105599190612d13565b610e19565b005b34801561056c57600080fd5b5061058760048036038101906105829190612c0c565b61105c565b005b34801561059557600080fd5b506105b060048036038101906105ab9190612b89565b6111d4565b005b3480156105be57600080fd5b506105d960048036038101906105d49190612d13565b611250565b6040516105e691906130cb565b60405180910390f35b3480156105fb57600080fd5b506106046112f8565b6040516106119190613049565b60405180910390f35b34801561062657600080fd5b50610641600480360381019061063c9190612af6565b611310565b60405161064e91906130b0565b60405180910390f35b34801561066357600080fd5b5061067e60048036038101906106799190612ac9565b611404565b005b34801561068c57600080fd5b506106956114fc565b6040516106a2919061322d565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061077657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610786575061078582611501565b5b9050919050565b60606002805461079c906134de565b80601f01602080910402602001604051908101604052809291908181526020018280546107c8906134de565b80156108155780601f106107ea57610100808354040283529160200191610815565b820191906000526020600020905b8154815290600101906020018083116107f857829003601f168201915b5050505050905090565b600061082a8261156b565b610860576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108a682610b50565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561090e576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661092d6115b9565b73ffffffffffffffffffffffffffffffffffffffff161415801561095f575061095d816109586115b9565b611310565b155b15610996576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109a18383836115c1565b505050565b60006109b0611673565b6001546000540303905090565b60006109c88261167c565b9050919050565b6109da83838361174c565b505050565b600a5481565b6109ed6115b9565b73ffffffffffffffffffffffffffffffffffffffff16610a0b610d57565b73ffffffffffffffffffffffffffffffffffffffff1614610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a58906131ad565b60405180910390fd5b60004790506000610a706115b9565b73ffffffffffffffffffffffffffffffffffffffff1682604051610a9390613034565b60006040518083038185875af1925050503d8060008114610ad0576040519150601f19603f3d011682016040523d82523d6000602084013e610ad5565b606091505b5050905080610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b10906131ed565b60405180910390fd5b5050565b610b38838383604051806020016040528060008152506111d4565b505050565b600c60009054906101000a900460ff1681565b6000610b5b82611c3d565b600001519050919050565b60098054610b73906134de565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9f906134de565b8015610bec5780601f10610bc157610100808354040283529160200191610bec565b820191906000526020600020905b815481529060010190602001808311610bcf57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c5c576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b610ccc6115b9565b73ffffffffffffffffffffffffffffffffffffffff16610cea610d57565b73ffffffffffffffffffffffffffffffffffffffff1614610d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d37906131ad565b60405180910390fd5b610d4a6000611ecc565b565b61019081565b600381565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610d90906134de565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbc906134de565b8015610e095780601f10610dde57610100808354040283529160200191610e09565b820191906000526020600020905b815481529060010190602001808311610dec57829003601f168201915b5050505050905090565b600b5481565b6000600b5490506000600a90506001610190610e359190613301565b83610e3e6109a6565b610e489190613301565b1015610e575760009150600390505b6000610e616115b9565b9050600c60009054906101000a900460ff1615610eb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eaa906130ed565b60405180910390fd5b83610ebc6109a6565b610ec69190613301565b600a541015610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f019061316d565b60405180910390fd5b60008411610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f449061314d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb29061320d565b60405180910390fd5b83821015610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff59061312d565b60405180910390fd5b34838561100b9190613388565b111561104c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611043906131cd565b60405180910390fd5b6110568185611f92565b50505050565b6110646115b9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c9576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006110d66115b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166111836115b9565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111c891906130b0565b60405180910390a35050565b6111df84848461174c565b6111fe8373ffffffffffffffffffffffffffffffffffffffff16611fb0565b8015611213575061121184848484611fd3565b155b1561124a576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061125b8261156b565b61129a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112919061318d565b60405180910390fd5b6000600980546112a9906134de565b9050116112c557604051806020016040528060008152506112f1565b60096112d083612133565b6040516020016112e1929190613010565b6040516020818303038152906040525b9050919050565b73a5409ec958c83c3f309868babaca7c86dcb077c181565b60008073a5409ec958c83c3f309868babaca7c86dcb077c190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b815260040161137a9190613049565b60206040518083038186803b15801561139257600080fd5b505afa1580156113a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ca9190612ce6565b73ffffffffffffffffffffffffffffffffffffffff1614156113f05760019150506113fe565b6113fa8484612294565b9150505b92915050565b61140c6115b9565b73ffffffffffffffffffffffffffffffffffffffff1661142a610d57565b73ffffffffffffffffffffffffffffffffffffffff1614611480576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611477906131ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e79061310d565b60405180910390fd5b6114f981611ecc565b50565b600a81565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081611576611673565b11158015611585575060005482105b80156115b2575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e4576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b600061175782611c3d565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661177e6115b9565b73ffffffffffffffffffffffffffffffffffffffff1614806117b157506117b082600001516117ab6115b9565b611310565b5b806117f657506117bf6115b9565b73ffffffffffffffffffffffffffffffffffffffff166117de8461081f565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061182f576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611898576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156118ff576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61190c8585856001612328565b61191c60008484600001516115c1565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611bcd57600054811015611bcc5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611c36858585600161232e565b5050505050565b611c45612998565b600082905080611c53611673565b11158015611c62575060005481105b15611e95576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff16151515158152505090508060400151611e9357600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611d77578092505050611ec7565b5b600115611e9257818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611e8d578092505050611ec7565b611d78565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611fac828260405180602001604052806000815250612334565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611ff96115b9565b8786866040518563ffffffff1660e01b815260040161201b9493929190613064565b602060405180830381600087803b15801561203557600080fd5b505af192505050801561206657506040513d601f19601f820116820180604052508101906120639190612cb9565b60015b6120e0573d8060008114612096576040519150601f19603f3d011682016040523d82523d6000602084013e61209b565b606091505b506000815114156120d8576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600082141561217b576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061228f565b600082905060005b600082146121ad57808061219690613541565b915050600a826121a69190613357565b9150612183565b60008167ffffffffffffffff8111156121c9576121c8613677565b5b6040519080825280601f01601f1916602001820160405280156121fb5781602001600182028036833780820191505090505b5090505b600085146122885760018261221491906133e2565b9150600a85612223919061358a565b603061222f9190613301565b60f81b81838151811061224557612244613648565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856122819190613357565b94506121ff565b8093505050505b919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b50505050565b50505050565b6123418383836001612346565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156123b3576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156123ee576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123fb6000868387612328565b73a5f6d896e8b4d29ac6e5d8c4b26f8d2073ac90ae73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806124885750736ea8f3b9187df360b0c3e76549b22095acae771b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806124d2575073e749e9e7eaa02203c925a036226af80e2c79403e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8061251c5750734209c04095e0736546ddccb3360ccefa13909d8a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80612566575073f8d4454b0a7544b3c13816acd76b93bc94b5d97773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806125b05750735d4b1055a69eadaba6de6c537a17aeb01207dfda73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b806125fa575073fd2204757ab46355e60251386f823960acccefe773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80612644575073f59eafd5ee67ec7be2fc150069b117b618b0484e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b1561267f57600080600090505b615ecd81101561267c57818061266690613541565b925050808061267490613541565b915050612651565b50505b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561284957506128488773ffffffffffffffffffffffffffffffffffffffff16611fb0565b5b1561290f575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128be6000888480600101955088611fd3565b6128f4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082141561284f57826000541461290a57600080fd5b61297b565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415612910575b816000819055505050612991600086838761232e565b5050505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b60006129ee6129e98461326d565b613248565b905082815260208101848484011115612a0a57612a096136ab565b5b612a1584828561349c565b509392505050565b600081359050612a2c8161388e565b92915050565b600081359050612a41816138a5565b92915050565b600081359050612a56816138bc565b92915050565b600081519050612a6b816138bc565b92915050565b600082601f830112612a8657612a856136a6565b5b8135612a968482602086016129db565b91505092915050565b600081519050612aae816138d3565b92915050565b600081359050612ac3816138ea565b92915050565b600060208284031215612adf57612ade6136b5565b5b6000612aed84828501612a1d565b91505092915050565b60008060408385031215612b0d57612b0c6136b5565b5b6000612b1b85828601612a1d565b9250506020612b2c85828601612a1d565b9150509250929050565b600080600060608486031215612b4f57612b4e6136b5565b5b6000612b5d86828701612a1d565b9350506020612b6e86828701612a1d565b9250506040612b7f86828701612ab4565b9150509250925092565b60008060008060808587031215612ba357612ba26136b5565b5b6000612bb187828801612a1d565b9450506020612bc287828801612a1d565b9350506040612bd387828801612ab4565b925050606085013567ffffffffffffffff811115612bf457612bf36136b0565b5b612c0087828801612a71565b91505092959194509250565b60008060408385031215612c2357612c226136b5565b5b6000612c3185828601612a1d565b9250506020612c4285828601612a32565b9150509250929050565b60008060408385031215612c6357612c626136b5565b5b6000612c7185828601612a1d565b9250506020612c8285828601612ab4565b9150509250929050565b600060208284031215612ca257612ca16136b5565b5b6000612cb084828501612a47565b91505092915050565b600060208284031215612ccf57612cce6136b5565b5b6000612cdd84828501612a5c565b91505092915050565b600060208284031215612cfc57612cfb6136b5565b5b6000612d0a84828501612a9f565b91505092915050565b600060208284031215612d2957612d286136b5565b5b6000612d3784828501612ab4565b91505092915050565b612d4981613416565b82525050565b612d5881613428565b82525050565b6000612d69826132b3565b612d7381856132c9565b9350612d838185602086016134ab565b612d8c816136ba565b840191505092915050565b6000612da2826132be565b612dac81856132e5565b9350612dbc8185602086016134ab565b612dc5816136ba565b840191505092915050565b6000612ddb826132be565b612de581856132f6565b9350612df58185602086016134ab565b80840191505092915050565b60008154612e0e816134de565b612e1881866132f6565b94506001821660008114612e335760018114612e4457612e77565b60ff19831686528186019350612e77565b612e4d8561329e565b60005b83811015612e6f57815481890152600182019150602081019050612e50565b838801955050505b50505092915050565b6000612e8d6006836132e5565b9150612e98826136cb565b602082019050919050565b6000612eb06026836132e5565b9150612ebb826136f4565b604082019050919050565b6000612ed36011836132e5565b9150612ede82613743565b602082019050919050565b6000612ef6600a836132e5565b9150612f018261376c565b602082019050919050565b6000612f196012836132e5565b9150612f2482613795565b602082019050919050565b6000612f3c6015836132e5565b9150612f47826137be565b602082019050919050565b6000612f5f6020836132e5565b9150612f6a826137e7565b602082019050919050565b6000612f826016836132e5565b9150612f8d82613810565b602082019050919050565b6000612fa56000836132da565b9150612fb082613839565b600082019050919050565b6000612fc8600e836132e5565b9150612fd38261383c565b602082019050919050565b6000612feb600c836132e5565b9150612ff682613865565b602082019050919050565b61300a81613492565b82525050565b600061301c8285612e01565b91506130288284612dd0565b91508190509392505050565b600061303f82612f98565b9150819050919050565b600060208201905061305e6000830184612d40565b92915050565b60006080820190506130796000830187612d40565b6130866020830186612d40565b6130936040830185613001565b81810360608301526130a58184612d5e565b905095945050505050565b60006020820190506130c56000830184612d4f565b92915050565b600060208201905081810360008301526130e58184612d97565b905092915050565b6000602082019050818103600083015261310681612e80565b9050919050565b6000602082019050818103600083015261312681612ea3565b9050919050565b6000602082019050818103600083015261314681612ec6565b9050919050565b6000602082019050818103600083015261316681612ee9565b9050919050565b6000602082019050818103600083015261318681612f0c565b9050919050565b600060208201905081810360008301526131a681612f2f565b9050919050565b600060208201905081810360008301526131c681612f52565b9050919050565b600060208201905081810360008301526131e681612f75565b9050919050565b6000602082019050818103600083015261320681612fbb565b9050919050565b6000602082019050818103600083015261322681612fde565b9050919050565b60006020820190506132426000830184613001565b92915050565b6000613252613263565b905061325e8282613510565b919050565b6000604051905090565b600067ffffffffffffffff82111561328857613287613677565b5b613291826136ba565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061330c82613492565b915061331783613492565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561334c5761334b6135bb565b5b828201905092915050565b600061336282613492565b915061336d83613492565b92508261337d5761337c6135ea565b5b828204905092915050565b600061339382613492565b915061339e83613492565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133d7576133d66135bb565b5b828202905092915050565b60006133ed82613492565b91506133f883613492565b92508282101561340b5761340a6135bb565b5b828203905092915050565b600061342182613472565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600061346b82613416565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156134c95780820151818401526020810190506134ae565b838111156134d8576000848401525b50505050565b600060028204905060018216806134f657607f821691505b6020821081141561350a57613509613619565b5b50919050565b613519826136ba565b810181811067ffffffffffffffff8211171561353857613537613677565b5b80604052505050565b600061354c82613492565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561357f5761357e6135bb565b5b600182019050919050565b600061359582613492565b91506135a083613492565b9250826135b0576135af6135ea565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f457863657373206d617820706572207478000000000000000000000000000000600082015250565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b50565b7f4661696c656420746f2073656e64000000000000000000000000000000000000600082015250565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b61389781613416565b81146138a257600080fd5b50565b6138ae81613428565b81146138b957600080fd5b50565b6138c581613434565b81146138d057600080fd5b50565b6138dc81613460565b81146138e757600080fd5b50565b6138f381613492565b81146138fe57600080fd5b5056fea2646970667358221220b38a9071f9635f1ea13bfcd31ec4233b2c92afc1f0b6488addcaaf4fa565807464736f6c63430008070033
Deployed Bytecode Sourcemap
37299:2439:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25927:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28227:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29257:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28875:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25592:163;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39069:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29934:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37649:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39186:209;;;;;;;;;;;;;:::i;:::-;;30114:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37731:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28095:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37342:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26243:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2688:103;;;;;;;;;;;;;:::i;:::-;;37597:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37550:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2037:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28333:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37688:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37821:678;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29471:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30309:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39403:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37406:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38616:445;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2946:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37504:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25927:305;26029:4;26081:25;26066:40;;;:11;:40;;;;:105;;;;26138:33;26123:48;;;:11;:48;;;;26066:105;:158;;;;26188:36;26212:11;26188:23;:36::i;:::-;26066:158;26046:178;;25927:305;;;:::o;28227:100::-;28281:13;28314:5;28307:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28227:100;:::o;29257:204::-;29325:7;29350:16;29358:7;29350;:16::i;:::-;29345:64;;29375:34;;;;;;;;;;;;;;29345:64;29429:15;:24;29445:7;29429:24;;;;;;;;;;;;;;;;;;;;;29422:31;;29257:204;;;:::o;28875:371::-;28948:13;28964:24;28980:7;28964:15;:24::i;:::-;28948:40;;29009:5;29003:11;;:2;:11;;;28999:48;;;29023:24;;;;;;;;;;;;;;28999:48;29080:5;29064:21;;:12;:10;:12::i;:::-;:21;;;;:63;;;;;29090:37;29107:5;29114:12;:10;:12::i;:::-;29090:16;:37::i;:::-;29089:38;29064:63;29060:138;;;29151:35;;;;;;;;;;;;;;29060:138;29210:28;29219:2;29223:7;29232:5;29210:8;:28::i;:::-;28937:309;28875:371;;:::o;25592:163::-;25636:7;25721:15;:13;:15::i;:::-;25706:12;;25690:13;;:28;:46;25683:53;;25592:163;:::o;39069:109::-;39122:7;39149:21;39163:6;39149:13;:21::i;:::-;39142:28;;39069:109;;;:::o;29934:170::-;30068:28;30078:4;30084:2;30088:7;30068:9;:28::i;:::-;29934:170;;;:::o;37649:32::-;;;;:::o;39186:209::-;2268:12;:10;:12::i;:::-;2257:23;;:7;:5;:7::i;:::-;:23;;;2249:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39236:15:::1;39254:21;39236:39;;39287:12;39305;:10;:12::i;:::-;:17;;39330:7;39305:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39286:56;;;39361:7;39353:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;39225:170;;39186:209::o:0;30114:185::-;30252:39;30269:4;30275:2;30279:7;30252:39;;;;;;;;;;;;:16;:39::i;:::-;30114:185;;;:::o;37731:26::-;;;;;;;;;;;;;:::o;28095:124::-;28159:7;28186:20;28198:7;28186:11;:20::i;:::-;:25;;;28179:32;;28095:124;;;:::o;37342:57::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26243:206::-;26307:7;26348:1;26331:19;;:5;:19;;;26327:60;;;26359:28;;;;;;;;;;;;;;26327:60;26413:12;:19;26426:5;26413:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;26405:36;;26398:43;;26243:206;;;:::o;2688:103::-;2268:12;:10;:12::i;:::-;2257:23;;:7;:5;:7::i;:::-;:23;;;2249:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2753:30:::1;2780:1;2753:18;:30::i;:::-;2688:103::o:0;37597:45::-;37639:3;37597:45;:::o;37550:40::-;37589:1;37550:40;:::o;2037:87::-;2083:7;2110:6;;;;;;;;;;;2103:13;;2037:87;:::o;28333:104::-;28389:13;28422:7;28415:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28333:104;:::o;37688:34::-;;;;:::o;37821:678::-;37886:9;37898:5;;37886:17;;37914:12;37541:2;37914:25;;37997:1;37639:3;37979:19;;;;:::i;:::-;37969:7;37953:13;:11;:13::i;:::-;:23;;;;:::i;:::-;:45;37950:111;;;38022:1;38015:8;;38048:1;38038:11;;37950:111;38071:15;38089:12;:10;:12::i;:::-;38071:30;;38121:6;;;;;;;;;;;38120:7;38112:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;38187:7;38171:13;:11;:13::i;:::-;:23;;;;:::i;:::-;38157:10;;:37;;38149:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38246:1;38236:7;:11;38228:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;38294:7;38281:20;;:9;:20;;;38273:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;38348:7;38337;:18;;38329:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;38415:9;38407:4;38397:7;:14;;;;:::i;:::-;:27;;38389:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;38464:27;38474:7;38483;38464:9;:27::i;:::-;37875:624;;;37821:678;:::o;29471:279::-;29574:12;:10;:12::i;:::-;29562:24;;:8;:24;;;29558:54;;;29595:17;;;;;;;;;;;;;;29558:54;29670:8;29625:18;:32;29644:12;:10;:12::i;:::-;29625:32;;;;;;;;;;;;;;;:42;29658:8;29625:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;29723:8;29694:48;;29709:12;:10;:12::i;:::-;29694:48;;;29733:8;29694:48;;;;;;:::i;:::-;;;;;;;;29471:279;;:::o;30309:369::-;30476:28;30486:4;30492:2;30496:7;30476:9;:28::i;:::-;30519:15;:2;:13;;;:15::i;:::-;:76;;;;;30539:56;30570:4;30576:2;30580:7;30589:5;30539:30;:56::i;:::-;30538:57;30519:76;30515:156;;;30619:40;;;;;;;;;;;;;;30515:156;30309:369;;;;:::o;39403:332::-;39469:13;39503:17;39511:8;39503:7;:17::i;:::-;39495:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;39588:1;39570:7;39564:21;;;;;:::i;:::-;;;:25;:163;;;;;;;;;;;;;;;;;39646:7;39670:26;39687:8;39670:16;:26::i;:::-;39613:98;;;;;;;;;:::i;:::-;;;;;;;;;;;;;39564:163;39557:170;;39403:332;;;:::o;37406:89::-;37453:42;37406:89;:::o;38616:445::-;38741:4;38826:27;37453:42;38826:65;;38947:8;38906:49;;38914:13;:21;;;38936:5;38914:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38906:49;;;38902:93;;;38979:4;38972:11;;;;;38902:93;39014:39;39037:5;39044:8;39014:22;:39::i;:::-;39007:46;;;38616:445;;;;;:::o;2946:201::-;2268:12;:10;:12::i;:::-;2257:23;;:7;:5;:7::i;:::-;:23;;;2249:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3055:1:::1;3035:22;;:8;:22;;;;3027:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3111:28;3130:8;3111:18;:28::i;:::-;2946:201:::0;:::o;37504:39::-;37541:2;37504:39;:::o;23595:157::-;23680:4;23719:25;23704:40;;;:11;:40;;;;23697:47;;23595:157;;;:::o;30686:187::-;30743:4;30786:7;30767:15;:13;:15::i;:::-;:26;;:53;;;;;30807:13;;30797:7;:23;30767:53;:98;;;;;30838:11;:20;30850:7;30838:20;;;;;;;;;;;:27;;;;;;;;;;;;30837:28;30767:98;30760:105;;30686:187;;;:::o;778:98::-;831:7;858:10;851:17;;778:98;:::o;36050:196::-;36192:2;36165:15;:24;36181:7;36165:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;36230:7;36226:2;36210:28;;36219:5;36210:28;;;;;;;;;;;;36050:196;;;:::o;38507:101::-;38572:7;38599:1;38592:8;;38507:101;:::o;26459:207::-;26520:7;26561:1;26544:19;;:5;:19;;;26540:59;;;26572:27;;;;;;;;;;;;;;26540:59;26625:12;:19;26638:5;26625:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;26617:41;;26610:48;;26459:207;;;:::o;33417:1431::-;33532:35;33570:20;33582:7;33570:11;:20::i;:::-;33532:58;;33603:22;33645:13;:18;;;33629:34;;:12;:10;:12::i;:::-;:34;;;:101;;;;33680:50;33697:13;:18;;;33717:12;:10;:12::i;:::-;33680:16;:50::i;:::-;33629:101;:154;;;;33771:12;:10;:12::i;:::-;33747:36;;:20;33759:7;33747:11;:20::i;:::-;:36;;;33629:154;33603:181;;33802:17;33797:66;;33828:35;;;;;;;;;;;;;;33797:66;33900:4;33878:26;;:13;:18;;;:26;;;33874:67;;33913:28;;;;;;;;;;;;;;33874:67;33970:1;33956:16;;:2;:16;;;33952:52;;;33981:23;;;;;;;;;;;;;;33952:52;34017:43;34039:4;34045:2;34049:7;34058:1;34017:21;:43::i;:::-;34075:49;34092:1;34096:7;34105:13;:18;;;34075:8;:49::i;:::-;34192:1;34162:12;:18;34175:4;34162:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34236:1;34208:12;:16;34221:2;34208:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34282:2;34254:11;:20;34266:7;34254:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;34344:15;34299:11;:20;34311:7;34299:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;34379:19;34411:1;34401:7;:11;34379:33;;34472:1;34431:43;;:11;:24;34443:11;34431:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;34427:305;;;34516:13;;34502:11;:27;34498:219;;;34586:13;:18;;;34554:11;:24;34566:11;34554:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;34669:13;:28;;;34627:11;:24;34639:11;34627:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;34498:219;34427:305;34137:606;34779:7;34775:2;34760:27;;34769:4;34760:27;;;;;;;;;;;;34798:42;34819:4;34825:2;34829:7;34838:1;34798:20;:42::i;:::-;33521:1327;;33417:1431;;;:::o;27257:830::-;27318:21;;:::i;:::-;27352:12;27367:7;27352:22;;27435:4;27416:15;:13;:15::i;:::-;:23;;:47;;;;;27450:13;;27443:4;:20;27416:47;27412:608;;;27484:31;27518:11;:17;27530:4;27518:17;;;;;;;;;;;27484:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27559:9;:16;;;27554:451;;27630:1;27604:28;;:9;:14;;;:28;;;27600:101;;27668:9;27661:16;;;;;;27600:101;27725:261;27732:4;27725:261;;;27765:6;;;;;;;;27810:11;:17;27822:4;27810:17;;;;;;;;;;;27798:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27884:1;27858:28;;:9;:14;;;:28;;;27854:109;;27926:9;27919:16;;;;;;27854:109;27725:261;;;27554:451;27465:555;27412:608;28048:31;;;;;;;;;;;;;;27257:830;;;;:::o;3307:191::-;3381:16;3400:6;;;;;;;;;;;3381:25;;3426:8;3417:6;;:17;;;;;;;;;;;;;;;;;;3481:8;3450:40;;3471:8;3450:40;;;;;;;;;;;;3370:128;3307:191;:::o;30881:104::-;30950:27;30960:2;30964:8;30950:27;;;;;;;;;;;;:9;:27::i;:::-;30881:104;;:::o;13368:326::-;13428:4;13685:1;13663:7;:19;;;:23;13656:30;;13368:326;;;:::o;36254:667::-;36417:4;36454:2;36438:36;;;36475:12;:10;:12::i;:::-;36489:4;36495:7;36504:5;36438:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36434:480;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36689:1;36672:6;:13;:18;36668:235;;;36718:40;;;;;;;;;;;;;;36668:235;36861:6;36855:13;36846:6;36842:2;36838:15;36831:38;36434:480;36567:45;;;36557:55;;;:6;:55;;;;36550:62;;;36254:667;;;;;;:::o;20988:723::-;21044:13;21274:1;21265:5;:10;21261:53;;;21292:10;;;;;;;;;;;;;;;;;;;;;21261:53;21324:12;21339:5;21324:20;;21355:14;21380:78;21395:1;21387:4;:9;21380:78;;21413:8;;;;;:::i;:::-;;;;21444:2;21436:10;;;;;:::i;:::-;;;21380:78;;;21468:19;21500:6;21490:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21468:39;;21518:154;21534:1;21525:5;:10;21518:154;;21562:1;21552:11;;;;;:::i;:::-;;;21629:2;21621:5;:10;;;;:::i;:::-;21608:2;:24;;;;:::i;:::-;21595:39;;21578:6;21585;21578:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;21658:2;21649:11;;;;;:::i;:::-;;;21518:154;;;21696:6;21682:21;;;;;20988:723;;;;:::o;29760:164::-;29857:4;29881:18;:25;29900:5;29881:25;;;;;;;;;;;;;;;:35;29907:8;29881:35;;;;;;;;;;;;;;;;;;;;;;;;;29874:42;;29760:164;;;;:::o;36929:159::-;;;;;:::o;37100:158::-;;;;;:::o;30993:163::-;31116:32;31122:2;31126:8;31136:5;31143:4;31116:5;:32::i;:::-;30993:163;;;:::o;31166:2241::-;31305:20;31328:13;;31305:36;;31370:1;31356:16;;:2;:16;;;31352:48;;;31381:19;;;;;;;;;;;;;;31352:48;31427:1;31415:8;:13;31411:44;;;31437:18;;;;;;;;;;;;;;31411:44;31468:61;31498:1;31502:2;31506:12;31520:8;31468:21;:61::i;:::-;31595:42;31589:48;;:2;:48;;;:113;;;;31660:42;31654:48;;:2;:48;;;31589:113;:178;;;;31725:42;31719:48;;:2;:48;;;31589:178;:243;;;;31790:42;31784:48;;:2;:48;;;31589:243;:308;;;;31855:42;31849:48;;:2;:48;;;31589:308;:373;;;;31920:42;31914:48;;:2;:48;;;31589:373;:438;;;;31985:42;31979:48;;:2;:48;;;31589:438;:503;;;;32050:42;32044:48;;:2;:48;;;31589:503;31572:663;;;32118:15;32153:6;32162:1;32153:10;;32148:76;32169:5;32165:1;:9;32148:76;;;32199:9;;;;;:::i;:::-;;;;32176:3;;;;;:::i;:::-;;;;32148:76;;;;32103:132;31572:663;32307:8;32272:12;:16;32285:2;32272:16;;;;;;;;;;;;;;;:24;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32371:8;32331:12;:16;32344:2;32331:16;;;;;;;;;;;;;;;:29;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32430:2;32397:11;:25;32409:12;32397:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;32497:15;32447:11;:25;32459:12;32447:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;32530:20;32553:12;32530:35;;32580:11;32609:8;32594:12;:23;32580:37;;32638:4;:23;;;;;32646:15;:2;:13;;;:15::i;:::-;32638:23;32634:641;;;32682:314;32738:12;32734:2;32713:38;;32730:1;32713:38;;;;;;;;;;;;32779:69;32818:1;32822:2;32826:14;;;;;;32842:5;32779:30;:69::i;:::-;32774:174;;32884:40;;;;;;;;;;;;;;32774:174;32991:3;32975:12;:19;;32682:314;;33077:12;33060:13;;:29;33056:43;;33091:8;;;33056:43;32634:641;;;33140:120;33196:14;;;;;;33192:2;33171:40;;33188:1;33171:40;;;;;;;;;;;;33255:3;33239:12;:19;;33140:120;;32634:641;33305:12;33289:13;:28;;;;32247:1082;;33339:60;33368:1;33372:2;33376:12;33390:8;33339:20;:60::i;:::-;31294:2113;31166:2241;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;568:133::-;611:5;649:6;636:20;627:29;;665:30;689:5;665:30;:::i;:::-;568:133;;;;:::o;707:137::-;752:5;790:6;777:20;768:29;;806:32;832:5;806:32;:::i;:::-;707:137;;;;:::o;850:141::-;906:5;937:6;931:13;922:22;;953:32;979:5;953:32;:::i;:::-;850:141;;;;:::o;1010:338::-;1065:5;1114:3;1107:4;1099:6;1095:17;1091:27;1081:122;;1122:79;;:::i;:::-;1081:122;1239:6;1226:20;1264:78;1338:3;1330:6;1323:4;1315:6;1311:17;1264:78;:::i;:::-;1255:87;;1071:277;1010:338;;;;:::o;1354:201::-;1440:5;1471:6;1465:13;1456:22;;1487:62;1543:5;1487:62;:::i;:::-;1354:201;;;;:::o;1561:139::-;1607:5;1645:6;1632:20;1623:29;;1661:33;1688:5;1661:33;:::i;:::-;1561:139;;;;:::o;1706:329::-;1765:6;1814:2;1802:9;1793:7;1789:23;1785:32;1782:119;;;1820:79;;:::i;:::-;1782:119;1940:1;1965:53;2010:7;2001:6;1990:9;1986:22;1965:53;:::i;:::-;1955:63;;1911:117;1706:329;;;;:::o;2041:474::-;2109:6;2117;2166:2;2154:9;2145:7;2141:23;2137:32;2134:119;;;2172:79;;:::i;:::-;2134:119;2292:1;2317:53;2362:7;2353:6;2342:9;2338:22;2317:53;:::i;:::-;2307:63;;2263:117;2419:2;2445:53;2490:7;2481:6;2470:9;2466:22;2445:53;:::i;:::-;2435:63;;2390:118;2041:474;;;;;:::o;2521:619::-;2598:6;2606;2614;2663:2;2651:9;2642:7;2638:23;2634:32;2631:119;;;2669:79;;:::i;:::-;2631:119;2789:1;2814:53;2859:7;2850:6;2839:9;2835:22;2814:53;:::i;:::-;2804:63;;2760:117;2916:2;2942:53;2987:7;2978:6;2967:9;2963:22;2942:53;:::i;:::-;2932:63;;2887:118;3044:2;3070:53;3115:7;3106:6;3095:9;3091:22;3070:53;:::i;:::-;3060:63;;3015:118;2521:619;;;;;:::o;3146:943::-;3241:6;3249;3257;3265;3314:3;3302:9;3293:7;3289:23;3285:33;3282:120;;;3321:79;;:::i;:::-;3282:120;3441:1;3466:53;3511:7;3502:6;3491:9;3487:22;3466:53;:::i;:::-;3456:63;;3412:117;3568:2;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3539:118;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3852:2;3841:9;3837:18;3824:32;3883:18;3875:6;3872:30;3869:117;;;3905:79;;:::i;:::-;3869:117;4010:62;4064:7;4055:6;4044:9;4040:22;4010:62;:::i;:::-;4000:72;;3795:287;3146:943;;;;;;;:::o;4095:468::-;4160:6;4168;4217:2;4205:9;4196:7;4192:23;4188:32;4185:119;;;4223:79;;:::i;:::-;4185:119;4343:1;4368:53;4413:7;4404:6;4393:9;4389:22;4368:53;:::i;:::-;4358:63;;4314:117;4470:2;4496:50;4538:7;4529:6;4518:9;4514:22;4496:50;:::i;:::-;4486:60;;4441:115;4095:468;;;;;:::o;4569:474::-;4637:6;4645;4694:2;4682:9;4673:7;4669:23;4665:32;4662:119;;;4700:79;;:::i;:::-;4662:119;4820:1;4845:53;4890:7;4881:6;4870:9;4866:22;4845:53;:::i;:::-;4835:63;;4791:117;4947:2;4973:53;5018:7;5009:6;4998:9;4994:22;4973:53;:::i;:::-;4963:63;;4918:118;4569:474;;;;;:::o;5049:327::-;5107:6;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:52;5351:7;5342:6;5331:9;5327:22;5307:52;:::i;:::-;5297:62;;5253:116;5049:327;;;;:::o;5382:349::-;5451:6;5500:2;5488:9;5479:7;5475:23;5471:32;5468:119;;;5506:79;;:::i;:::-;5468:119;5626:1;5651:63;5706:7;5697:6;5686:9;5682:22;5651:63;:::i;:::-;5641:73;;5597:127;5382:349;;;;:::o;5737:409::-;5836:6;5885:2;5873:9;5864:7;5860:23;5856:32;5853:119;;;5891:79;;:::i;:::-;5853:119;6011:1;6036:93;6121:7;6112:6;6101:9;6097:22;6036:93;:::i;:::-;6026:103;;5982:157;5737:409;;;;:::o;6152:329::-;6211:6;6260:2;6248:9;6239:7;6235:23;6231:32;6228:119;;;6266:79;;:::i;:::-;6228:119;6386:1;6411:53;6456:7;6447:6;6436:9;6432:22;6411:53;:::i;:::-;6401:63;;6357:117;6152:329;;;;:::o;6487:118::-;6574:24;6592:5;6574:24;:::i;:::-;6569:3;6562:37;6487:118;;:::o;6611:109::-;6692:21;6707:5;6692:21;:::i;:::-;6687:3;6680:34;6611:109;;:::o;6726:360::-;6812:3;6840:38;6872:5;6840:38;:::i;:::-;6894:70;6957:6;6952:3;6894:70;:::i;:::-;6887:77;;6973:52;7018:6;7013:3;7006:4;6999:5;6995:16;6973:52;:::i;:::-;7050:29;7072:6;7050:29;:::i;:::-;7045:3;7041:39;7034:46;;6816:270;6726:360;;;;:::o;7092:364::-;7180:3;7208:39;7241:5;7208:39;:::i;:::-;7263:71;7327:6;7322:3;7263:71;:::i;:::-;7256:78;;7343:52;7388:6;7383:3;7376:4;7369:5;7365:16;7343:52;:::i;:::-;7420:29;7442:6;7420:29;:::i;:::-;7415:3;7411:39;7404:46;;7184:272;7092:364;;;;:::o;7462:377::-;7568:3;7596:39;7629:5;7596:39;:::i;:::-;7651:89;7733:6;7728:3;7651:89;:::i;:::-;7644:96;;7749:52;7794:6;7789:3;7782:4;7775:5;7771:16;7749:52;:::i;:::-;7826:6;7821:3;7817:16;7810:23;;7572:267;7462:377;;;;:::o;7869:845::-;7972:3;8009:5;8003:12;8038:36;8064:9;8038:36;:::i;:::-;8090:89;8172:6;8167:3;8090:89;:::i;:::-;8083:96;;8210:1;8199:9;8195:17;8226:1;8221:137;;;;8372:1;8367:341;;;;8188:520;;8221:137;8305:4;8301:9;8290;8286:25;8281:3;8274:38;8341:6;8336:3;8332:16;8325:23;;8221:137;;8367:341;8434:38;8466:5;8434:38;:::i;:::-;8494:1;8508:154;8522:6;8519:1;8516:13;8508:154;;;8596:7;8590:14;8586:1;8581:3;8577:11;8570:35;8646:1;8637:7;8633:15;8622:26;;8544:4;8541:1;8537:12;8532:17;;8508:154;;;8691:6;8686:3;8682:16;8675:23;;8374:334;;8188:520;;7976:738;;7869:845;;;;:::o;8720:365::-;8862:3;8883:66;8947:1;8942:3;8883:66;:::i;:::-;8876:73;;8958:93;9047:3;8958:93;:::i;:::-;9076:2;9071:3;9067:12;9060:19;;8720:365;;;:::o;9091:366::-;9233:3;9254:67;9318:2;9313:3;9254:67;:::i;:::-;9247:74;;9330:93;9419:3;9330:93;:::i;:::-;9448:2;9443:3;9439:12;9432:19;;9091:366;;;:::o;9463:::-;9605:3;9626:67;9690:2;9685:3;9626:67;:::i;:::-;9619:74;;9702:93;9791:3;9702:93;:::i;:::-;9820:2;9815:3;9811:12;9804:19;;9463:366;;;:::o;9835:::-;9977:3;9998:67;10062:2;10057:3;9998:67;:::i;:::-;9991:74;;10074:93;10163:3;10074:93;:::i;:::-;10192:2;10187:3;10183:12;10176:19;;9835:366;;;:::o;10207:::-;10349:3;10370:67;10434:2;10429:3;10370:67;:::i;:::-;10363:74;;10446:93;10535:3;10446:93;:::i;:::-;10564:2;10559:3;10555:12;10548:19;;10207:366;;;:::o;10579:::-;10721:3;10742:67;10806:2;10801:3;10742:67;:::i;:::-;10735:74;;10818:93;10907:3;10818:93;:::i;:::-;10936:2;10931:3;10927:12;10920:19;;10579:366;;;:::o;10951:::-;11093:3;11114:67;11178:2;11173:3;11114:67;:::i;:::-;11107:74;;11190:93;11279:3;11190:93;:::i;:::-;11308:2;11303:3;11299:12;11292:19;;10951:366;;;:::o;11323:::-;11465:3;11486:67;11550:2;11545:3;11486:67;:::i;:::-;11479:74;;11562:93;11651:3;11562:93;:::i;:::-;11680:2;11675:3;11671:12;11664:19;;11323:366;;;:::o;11695:398::-;11854:3;11875:83;11956:1;11951:3;11875:83;:::i;:::-;11868:90;;11967:93;12056:3;11967:93;:::i;:::-;12085:1;12080:3;12076:11;12069:18;;11695:398;;;:::o;12099:366::-;12241:3;12262:67;12326:2;12321:3;12262:67;:::i;:::-;12255:74;;12338:93;12427:3;12338:93;:::i;:::-;12456:2;12451:3;12447:12;12440:19;;12099:366;;;:::o;12471:::-;12613:3;12634:67;12698:2;12693:3;12634:67;:::i;:::-;12627:74;;12710:93;12799:3;12710:93;:::i;:::-;12828:2;12823:3;12819:12;12812:19;;12471:366;;;:::o;12843:118::-;12930:24;12948:5;12930:24;:::i;:::-;12925:3;12918:37;12843:118;;:::o;12967:429::-;13144:3;13166:92;13254:3;13245:6;13166:92;:::i;:::-;13159:99;;13275:95;13366:3;13357:6;13275:95;:::i;:::-;13268:102;;13387:3;13380:10;;12967:429;;;;;:::o;13402:379::-;13586:3;13608:147;13751:3;13608:147;:::i;:::-;13601:154;;13772:3;13765:10;;13402:379;;;:::o;13787:222::-;13880:4;13918:2;13907:9;13903:18;13895:26;;13931:71;13999:1;13988:9;13984:17;13975:6;13931:71;:::i;:::-;13787:222;;;;:::o;14015:640::-;14210:4;14248:3;14237:9;14233:19;14225:27;;14262:71;14330:1;14319:9;14315:17;14306:6;14262:71;:::i;:::-;14343:72;14411:2;14400:9;14396:18;14387:6;14343:72;:::i;:::-;14425;14493:2;14482:9;14478:18;14469:6;14425:72;:::i;:::-;14544:9;14538:4;14534:20;14529:2;14518:9;14514:18;14507:48;14572:76;14643:4;14634:6;14572:76;:::i;:::-;14564:84;;14015:640;;;;;;;:::o;14661:210::-;14748:4;14786:2;14775:9;14771:18;14763:26;;14799:65;14861:1;14850:9;14846:17;14837:6;14799:65;:::i;:::-;14661:210;;;;:::o;14877:313::-;14990:4;15028:2;15017:9;15013:18;15005:26;;15077:9;15071:4;15067:20;15063:1;15052:9;15048:17;15041:47;15105:78;15178:4;15169:6;15105:78;:::i;:::-;15097:86;;14877:313;;;;:::o;15196:419::-;15362:4;15400:2;15389:9;15385:18;15377:26;;15449:9;15443:4;15439:20;15435:1;15424:9;15420:17;15413:47;15477:131;15603:4;15477:131;:::i;:::-;15469:139;;15196:419;;;:::o;15621:::-;15787:4;15825:2;15814:9;15810:18;15802:26;;15874:9;15868:4;15864:20;15860:1;15849:9;15845:17;15838:47;15902:131;16028:4;15902:131;:::i;:::-;15894:139;;15621:419;;;:::o;16046:::-;16212:4;16250:2;16239:9;16235:18;16227:26;;16299:9;16293:4;16289:20;16285:1;16274:9;16270:17;16263:47;16327:131;16453:4;16327:131;:::i;:::-;16319:139;;16046:419;;;:::o;16471:::-;16637:4;16675:2;16664:9;16660:18;16652:26;;16724:9;16718:4;16714:20;16710:1;16699:9;16695:17;16688:47;16752:131;16878:4;16752:131;:::i;:::-;16744:139;;16471:419;;;:::o;16896:::-;17062:4;17100:2;17089:9;17085:18;17077:26;;17149:9;17143:4;17139:20;17135:1;17124:9;17120:17;17113:47;17177:131;17303:4;17177:131;:::i;:::-;17169:139;;16896:419;;;:::o;17321:::-;17487:4;17525:2;17514:9;17510:18;17502:26;;17574:9;17568:4;17564:20;17560:1;17549:9;17545:17;17538:47;17602:131;17728:4;17602:131;:::i;:::-;17594:139;;17321:419;;;:::o;17746:::-;17912:4;17950:2;17939:9;17935:18;17927:26;;17999:9;17993:4;17989:20;17985:1;17974:9;17970:17;17963:47;18027:131;18153:4;18027:131;:::i;:::-;18019:139;;17746:419;;;:::o;18171:::-;18337:4;18375:2;18364:9;18360:18;18352:26;;18424:9;18418:4;18414:20;18410:1;18399:9;18395:17;18388:47;18452:131;18578:4;18452:131;:::i;:::-;18444:139;;18171:419;;;:::o;18596:::-;18762:4;18800:2;18789:9;18785:18;18777:26;;18849:9;18843:4;18839:20;18835:1;18824:9;18820:17;18813:47;18877:131;19003:4;18877:131;:::i;:::-;18869:139;;18596:419;;;:::o;19021:::-;19187:4;19225:2;19214:9;19210:18;19202:26;;19274:9;19268:4;19264:20;19260:1;19249:9;19245:17;19238:47;19302:131;19428:4;19302:131;:::i;:::-;19294:139;;19021:419;;;:::o;19446:222::-;19539:4;19577:2;19566:9;19562:18;19554:26;;19590:71;19658:1;19647:9;19643:17;19634:6;19590:71;:::i;:::-;19446:222;;;;:::o;19674:129::-;19708:6;19735:20;;:::i;:::-;19725:30;;19764:33;19792:4;19784:6;19764:33;:::i;:::-;19674:129;;;:::o;19809:75::-;19842:6;19875:2;19869:9;19859:19;;19809:75;:::o;19890:307::-;19951:4;20041:18;20033:6;20030:30;20027:56;;;20063:18;;:::i;:::-;20027:56;20101:29;20123:6;20101:29;:::i;:::-;20093:37;;20185:4;20179;20175:15;20167:23;;19890:307;;;:::o;20203:141::-;20252:4;20275:3;20267:11;;20298:3;20295:1;20288:14;20332:4;20329:1;20319:18;20311:26;;20203:141;;;:::o;20350:98::-;20401:6;20435:5;20429:12;20419:22;;20350:98;;;:::o;20454:99::-;20506:6;20540:5;20534:12;20524:22;;20454:99;;;:::o;20559:168::-;20642:11;20676:6;20671:3;20664:19;20716:4;20711:3;20707:14;20692:29;;20559:168;;;;:::o;20733:147::-;20834:11;20871:3;20856:18;;20733:147;;;;:::o;20886:169::-;20970:11;21004:6;20999:3;20992:19;21044:4;21039:3;21035:14;21020:29;;20886:169;;;;:::o;21061:148::-;21163:11;21200:3;21185:18;;21061:148;;;;:::o;21215:305::-;21255:3;21274:20;21292:1;21274:20;:::i;:::-;21269:25;;21308:20;21326:1;21308:20;:::i;:::-;21303:25;;21462:1;21394:66;21390:74;21387:1;21384:81;21381:107;;;21468:18;;:::i;:::-;21381:107;21512:1;21509;21505:9;21498:16;;21215:305;;;;:::o;21526:185::-;21566:1;21583:20;21601:1;21583:20;:::i;:::-;21578:25;;21617:20;21635:1;21617:20;:::i;:::-;21612:25;;21656:1;21646:35;;21661:18;;:::i;:::-;21646:35;21703:1;21700;21696:9;21691:14;;21526:185;;;;:::o;21717:348::-;21757:7;21780:20;21798:1;21780:20;:::i;:::-;21775:25;;21814:20;21832:1;21814:20;:::i;:::-;21809:25;;22002:1;21934:66;21930:74;21927:1;21924:81;21919:1;21912:9;21905:17;21901:105;21898:131;;;22009:18;;:::i;:::-;21898:131;22057:1;22054;22050:9;22039:20;;21717:348;;;;:::o;22071:191::-;22111:4;22131:20;22149:1;22131:20;:::i;:::-;22126:25;;22165:20;22183:1;22165:20;:::i;:::-;22160:25;;22204:1;22201;22198:8;22195:34;;;22209:18;;:::i;:::-;22195:34;22254:1;22251;22247:9;22239:17;;22071:191;;;;:::o;22268:96::-;22305:7;22334:24;22352:5;22334:24;:::i;:::-;22323:35;;22268:96;;;:::o;22370:90::-;22404:7;22447:5;22440:13;22433:21;22422:32;;22370:90;;;:::o;22466:149::-;22502:7;22542:66;22535:5;22531:78;22520:89;;22466:149;;;:::o;22621:125::-;22687:7;22716:24;22734:5;22716:24;:::i;:::-;22705:35;;22621:125;;;:::o;22752:126::-;22789:7;22829:42;22822:5;22818:54;22807:65;;22752:126;;;:::o;22884:77::-;22921:7;22950:5;22939:16;;22884:77;;;:::o;22967:154::-;23051:6;23046:3;23041;23028:30;23113:1;23104:6;23099:3;23095:16;23088:27;22967:154;;;:::o;23127:307::-;23195:1;23205:113;23219:6;23216:1;23213:13;23205:113;;;23304:1;23299:3;23295:11;23289:18;23285:1;23280:3;23276:11;23269:39;23241:2;23238:1;23234:10;23229:15;;23205:113;;;23336:6;23333:1;23330:13;23327:101;;;23416:1;23407:6;23402:3;23398:16;23391:27;23327:101;23176:258;23127:307;;;:::o;23440:320::-;23484:6;23521:1;23515:4;23511:12;23501:22;;23568:1;23562:4;23558:12;23589:18;23579:81;;23645:4;23637:6;23633:17;23623:27;;23579:81;23707:2;23699:6;23696:14;23676:18;23673:38;23670:84;;;23726:18;;:::i;:::-;23670:84;23491:269;23440:320;;;:::o;23766:281::-;23849:27;23871:4;23849:27;:::i;:::-;23841:6;23837:40;23979:6;23967:10;23964:22;23943:18;23931:10;23928:34;23925:62;23922:88;;;23990:18;;:::i;:::-;23922:88;24030:10;24026:2;24019:22;23809:238;23766:281;;:::o;24053:233::-;24092:3;24115:24;24133:5;24115:24;:::i;:::-;24106:33;;24161:66;24154:5;24151:77;24148:103;;;24231:18;;:::i;:::-;24148:103;24278:1;24271:5;24267:13;24260:20;;24053:233;;;:::o;24292:176::-;24324:1;24341:20;24359:1;24341:20;:::i;:::-;24336:25;;24375:20;24393:1;24375:20;:::i;:::-;24370:25;;24414:1;24404:35;;24419:18;;:::i;:::-;24404:35;24460:1;24457;24453:9;24448:14;;24292:176;;;;:::o;24474:180::-;24522:77;24519:1;24512:88;24619:4;24616:1;24609:15;24643:4;24640:1;24633:15;24660:180;24708:77;24705:1;24698:88;24805:4;24802:1;24795:15;24829:4;24826:1;24819:15;24846:180;24894:77;24891:1;24884:88;24991:4;24988:1;24981:15;25015:4;25012:1;25005:15;25032:180;25080:77;25077:1;25070:88;25177:4;25174:1;25167:15;25201:4;25198:1;25191:15;25218:180;25266:77;25263:1;25256:88;25363:4;25360:1;25353:15;25387:4;25384:1;25377:15;25404:117;25513:1;25510;25503:12;25527:117;25636:1;25633;25626:12;25650:117;25759:1;25756;25749:12;25773:117;25882:1;25879;25872:12;25896:102;25937:6;25988:2;25984:7;25979:2;25972:5;25968:14;25964:28;25954:38;;25896:102;;;:::o;26004:156::-;26144:8;26140:1;26132:6;26128:14;26121:32;26004:156;:::o;26166:225::-;26306:34;26302:1;26294:6;26290:14;26283:58;26375:8;26370:2;26362:6;26358:15;26351:33;26166:225;:::o;26397:167::-;26537:19;26533:1;26525:6;26521:14;26514:43;26397:167;:::o;26570:160::-;26710:12;26706:1;26698:6;26694:14;26687:36;26570:160;:::o;26736:168::-;26876:20;26872:1;26864:6;26860:14;26853:44;26736:168;:::o;26910:171::-;27050:23;27046:1;27038:6;27034:14;27027:47;26910:171;:::o;27087:182::-;27227:34;27223:1;27215:6;27211:14;27204:58;27087:182;:::o;27275:172::-;27415:24;27411:1;27403:6;27399:14;27392:48;27275:172;:::o;27453:114::-;;:::o;27573:164::-;27713:16;27709:1;27701:6;27697:14;27690:40;27573:164;:::o;27743:162::-;27883:14;27879:1;27871:6;27867:14;27860:38;27743:162;:::o;27911:122::-;27984:24;28002:5;27984:24;:::i;:::-;27977:5;27974:35;27964:63;;28023:1;28020;28013:12;27964:63;27911:122;:::o;28039:116::-;28109:21;28124:5;28109:21;:::i;:::-;28102:5;28099:32;28089:60;;28145:1;28142;28135:12;28089:60;28039:116;:::o;28161:120::-;28233:23;28250:5;28233:23;:::i;:::-;28226:5;28223:34;28213:62;;28271:1;28268;28261:12;28213:62;28161:120;:::o;28287:180::-;28389:53;28436:5;28389:53;:::i;:::-;28382:5;28379:64;28369:92;;28457:1;28454;28447:12;28369:92;28287:180;:::o;28473:122::-;28546:24;28564:5;28546:24;:::i;:::-;28539:5;28536:35;28526:63;;28585:1;28582;28575:12;28526:63;28473:122;:::o
Swarm Source
ipfs://b38a9071f9635f1ea13bfcd31ec4233b2c92afc1f0b6488addcaaf4fa5658074
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.