ERC-1155
Overview
Max Total Supply
3,022 WAGMI
Holders
836
Market
Volume (24H)
N/A
Min Price (24H)
N/A
Max Price (24H)
N/A
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
WAGMI
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-26 */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC1155/IERC1155Receiver.sol) pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** * @dev Handles the receipt of a single ERC1155 token type. This function is * called at the end of a `safeTransferFrom` after the balance has been updated. * * NOTE: To accept the transfer, this must return * `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * (i.e. 0xf23a6e61, or its own function selector). * * @param operator The address which initiated the transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param id The ID of the token being transferred * @param value The amount of tokens being transferred * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** * @dev Handles the receipt of a multiple ERC1155 token types. This function * is called at the end of a `safeBatchTransferFrom` after the balances have * been updated. * * NOTE: To accept the transfer(s), this must return * `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * (i.e. 0xbc197c81, or its own function selector). * * @param operator The address which initiated the batch transfer (i.e. msg.sender) * @param from The address which previously owned the token * @param ids An array containing ids of each token being transferred (order and length must match values array) * @param values An array containing amounts of each token being transferred (order and length must match ids array) * @param data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/IERC1155.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/IERC1155MetadataURI.sol) pragma solidity ^0.8.0; /** * @dev Interface of the optional ERC1155MetadataExtension interface, as defined * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP]. * * _Available since v3.1._ */ interface IERC1155MetadataURI is IERC1155 { /** * @dev Returns the URI for token type `id`. * * If the `\{id\}` substring is present in the URI, it must be replaced by * clients with the actual token type ID. */ function uri(uint256 id) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC1155/ERC1155.sol // OpenZeppelin Contracts v4.4.1 (token/ERC1155/ERC1155.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the basic standard multi-token. * See https://eips.ethereum.org/EIPS/eip-1155 * Originally based on code by Enjin: https://github.com/enjin/erc-1155 * * _Available since v3.1._ */ contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI { using Address for address; // Mapping from token ID to account balances mapping(uint256 => mapping(address => uint256)) private _balances; // Mapping from account to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json string private _uri; /** * @dev See {_setURI}. */ constructor(string memory uri_) { _setURI(uri_); } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155).interfaceId || interfaceId == type(IERC1155MetadataURI).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC1155MetadataURI-uri}. * * This implementation returns the same URI for *all* token types. It relies * on the token type ID substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * Clients calling this function must replace the `\{id\}` substring with the * actual token type ID. */ function uri(uint256) public view virtual override returns (string memory) { return _uri; } /** * @dev See {IERC1155-balanceOf}. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) public view virtual override returns (uint256) { require(account != address(0), "ERC1155: balance query for the zero address"); return _balances[id][account]; } /** * @dev See {IERC1155-balanceOfBatch}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view virtual override returns (uint256[] memory) { require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch"); uint256[] memory batchBalances = new uint256[](accounts.length); for (uint256 i = 0; i < accounts.length; ++i) { batchBalances[i] = balanceOf(accounts[i], ids[i]); } return batchBalances; } /** * @dev See {IERC1155-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC1155-isApprovedForAll}. */ function isApprovedForAll(address account, address operator) public view virtual override returns (bool) { return _operatorApprovals[account][operator]; } /** * @dev See {IERC1155-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: caller is not owner nor approved" ); _safeTransferFrom(from, to, id, amount, data); } /** * @dev See {IERC1155-safeBatchTransferFrom}. */ function safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) public virtual override { require( from == _msgSender() || isApprovedForAll(from, _msgSender()), "ERC1155: transfer caller is not owner nor approved" ); _safeBatchTransferFrom(from, to, ids, amounts, data); } /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; emit TransferSingle(operator, from, to, id, amount); _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _safeBatchTransferFrom( address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); require(to != address(0), "ERC1155: transfer to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, to, ids, amounts, data); for (uint256 i = 0; i < ids.length; ++i) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: insufficient balance for transfer"); unchecked { _balances[id][from] = fromBalance - amount; } _balances[id][to] += amount; } emit TransferBatch(operator, from, to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data); } /** * @dev Sets a new URI for all token types, by relying on the token type ID * substitution mechanism * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. * * By this mechanism, any occurrence of the `\{id\}` substring in either the * URI or any of the amounts in the JSON file at said URI will be replaced by * clients with the token type ID. * * For example, the `https://token-cdn-domain/\{id\}.json` URI would be * interpreted by clients as * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json` * for token type ID 0x4cce0. * * See {uri}. * * Because these URIs cannot be meaningfully represented by the {URI} event, * this function emits no events. */ function _setURI(string memory newuri) internal virtual { _uri = newuri; } /** * @dev Creates `amount` tokens of token type `id`, and assigns them to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function _mint( address to, uint256 id, uint256 amount, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, _asSingletonArray(id), _asSingletonArray(amount), data); _balances[id][to] += amount; emit TransferSingle(operator, address(0), to, id, amount); _doSafeTransferAcceptanceCheck(operator, address(0), to, id, amount, data); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function _mintBatch( address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual { require(to != address(0), "ERC1155: mint to the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, address(0), to, ids, amounts, data); for (uint256 i = 0; i < ids.length; i++) { _balances[ids[i]][to] += amounts[i]; } emit TransferBatch(operator, address(0), to, ids, amounts); _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data); } /** * @dev Destroys `amount` tokens of token type `id` from `from` * * Requirements: * * - `from` cannot be the zero address. * - `from` must have at least `amount` tokens of token type `id`. */ function _burn( address from, uint256 id, uint256 amount ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), ""); uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } emit TransferSingle(operator, from, address(0), id, amount); } /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}. * * Requirements: * * - `ids` and `amounts` must have the same length. */ function _burnBatch( address from, uint256[] memory ids, uint256[] memory amounts ) internal virtual { require(from != address(0), "ERC1155: burn from the zero address"); require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch"); address operator = _msgSender(); _beforeTokenTransfer(operator, from, address(0), ids, amounts, ""); for (uint256 i = 0; i < ids.length; i++) { uint256 id = ids[i]; uint256 amount = amounts[i]; uint256 fromBalance = _balances[id][from]; require(fromBalance >= amount, "ERC1155: burn amount exceeds balance"); unchecked { _balances[id][from] = fromBalance - amount; } } emit TransferBatch(operator, from, address(0), ids, amounts); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC1155: setting approval status for self"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Hook that is called before any token transfer. This includes minting * and burning, as well as batched variants. * * The same hook is called on both single and batched variants. For single * transfers, the length of the `id` and `amount` arrays will be 1. * * Calling conditions (for each `id` and `amount` pair): * * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens * of token type `id` will be transferred to `to`. * - When `from` is zero, `amount` tokens of token type `id` will be minted * for `to`. * - when `to` is zero, `amount` of ``from``'s tokens of token type `id` * will be burned. * - `from` and `to` are never both zero. * - `ids` and `amounts` have the same, non-zero length. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) internal virtual {} function _doSafeTransferAcceptanceCheck( address operator, address from, address to, uint256 id, uint256 amount, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) { if (response != IERC1155Receiver.onERC1155Received.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _doSafeBatchTransferAcceptanceCheck( address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data ) private { if (to.isContract()) { try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns ( bytes4 response ) { if (response != IERC1155Receiver.onERC1155BatchReceived.selector) { revert("ERC1155: ERC1155Receiver rejected tokens"); } } catch Error(string memory reason) { revert(reason); } catch { revert("ERC1155: transfer to non ERC1155Receiver implementer"); } } } function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) { uint256[] memory array = new uint256[](1); array[0] = element; return array; } } // File: contracts/WAGMI.sol pragma solidity ^0.8.0; contract WAGMI is ERC1155, Ownable { string public constant name = "WAGMI"; string public constant symbol = "WAGMI"; uint32 public constant maxSupply = 3022; uint256 public constant unitPrice = 0.125 ether; uint32 public totalSupply = 0; uint32 public saleStart = 1648324800; constructor(string memory uri) ERC1155(uri) {} function setURI(string memory uri) external onlyOwner { _setURI(uri); } function setSaleStart(uint32 timestamp) external onlyOwner { saleStart = timestamp; } function saleIsActive() public view returns (bool) { return saleStart <= block.timestamp; } function mint(address to, uint32 count) internal { totalSupply += count; if (count > 1) { uint256[] memory ids = new uint256[](uint256(count)); uint256[] memory amounts = new uint256[](uint256(count)); for (uint32 i = 0; i < count; i++) { ids[i] = totalSupply - count + i; amounts[i] = 1; } _mintBatch(to, ids, amounts, ""); } else { _mint(to, totalSupply - 1, 1, ""); } } function mint(uint32 count) external payable { require(saleIsActive(), "Public sale is not active."); require(count > 0, "Count must be greater than 0."); require( totalSupply + count <= maxSupply, "Count exceeds the maximum allowed supply." ); require(msg.value >= unitPrice * count, "Not enough ether."); mint(msg.sender, count); } function airdrop(address[] memory addresses) external onlyOwner { require( totalSupply + addresses.length <= maxSupply, "Count exceeds the maximum allowed supply." ); for (uint256 i = 0; i < addresses.length; i++) { mint(addresses[i], 1); } } function withdraw() external onlyOwner { address[2] memory addresses = [ 0xb166139a65fe53162936760aB9596b71b2467E82, 0x6951E3dF5AeE8b018325ce2FBC0c399858d76eE0 ]; uint32[2] memory shares = [uint32(9600), uint32(400)]; uint256 balance = address(this).balance; for (uint32 i = 0; i < addresses.length; i++) { uint256 amount = i == addresses.length - 1 ? address(this).balance : (balance * shares[i]) / 10000; payable(addresses[i]).transfer(amount); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"count","type":"uint32"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleIsActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleStart","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"timestamp","type":"uint32"}],"name":"setSaleStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unitPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600360146101000a81548163ffffffff021916908363ffffffff16021790555063623f70c0600360186101000a81548163ffffffff021916908363ffffffff1602179055503480156200005857600080fd5b506040516200448d3803806200448d83398181016040528101906200007e9190620002d0565b806200009081620000b860201b60201c565b50620000b1620000a5620000d460201b60201c565b620000dc60201b60201c565b50620004a5565b8060029080519060200190620000d0929190620001a2565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001b090620003b6565b90600052602060002090601f016020900481019282620001d4576000855562000220565b82601f10620001ef57805160ff191683800117855562000220565b8280016001018555821562000220579182015b828111156200021f57825182559160200191906001019062000202565b5b5090506200022f919062000233565b5090565b5b808211156200024e57600081600090555060010162000234565b5090565b60006200026962000263846200034a565b62000321565b90508281526020810184848401111562000288576200028762000485565b5b6200029584828562000380565b509392505050565b600082601f830112620002b557620002b462000480565b5b8151620002c784826020860162000252565b91505092915050565b600060208284031215620002e957620002e86200048f565b5b600082015167ffffffffffffffff8111156200030a57620003096200048a565b5b62000318848285016200029d565b91505092915050565b60006200032d62000340565b90506200033b8282620003ec565b919050565b6000604051905090565b600067ffffffffffffffff82111562000368576200036762000451565b5b620003738262000494565b9050602081019050919050565b60005b83811015620003a057808201518184015260208101905062000383565b83811115620003b0576000848401525b50505050565b60006002820490506001821680620003cf57607f821691505b60208210811415620003e657620003e562000422565b5b50919050565b620003f78262000494565b810181811067ffffffffffffffff8211171562000419576200041862000451565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b613fd880620004b56000396000f3fe60806040526004361061013f5760003560e01c80638da5cb5b116100b6578063d5abeb011161006f578063d5abeb0114610426578063e73faa2d14610451578063e985e9c51461047c578063eb8d2444146104b9578063f242432a146104e4578063f2fde38b1461050d5761013f565b80638da5cb5b1461033757806395d89b4114610362578063a22cb4651461038d578063a71bbebe146103b6578063a741ae1e146103d2578063ab0bcc41146103fb5761013f565b806318160ddd1161010857806318160ddd1461024f5780632eb2c2d61461027a5780633ccfd60b146102a35780634e1273f4146102ba578063715018a6146102f7578063729ad39e1461030e5761013f565b8062fdd58e1461014457806301ffc9a71461018157806302fe5305146101be57806306fdde03146101e75780630e89341c14610212575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612ac6565b610536565b60405161017891906133dd565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a39190612bc7565b6105ff565b6040516101b59190613180565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612c21565b6106e1565b005b3480156101f357600080fd5b506101fc610769565b604051610209919061319b565b60405180910390f35b34801561021e57600080fd5b5061023960048036038101906102349190612c6a565b6107a2565b604051610246919061319b565b60405180910390f35b34801561025b57600080fd5b50610264610836565b6040516102719190613421565b60405180910390f35b34801561028657600080fd5b506102a1600480360381019061029c9190612920565b61084c565b005b3480156102af57600080fd5b506102b86108ed565b005b3480156102c657600080fd5b506102e160048036038101906102dc9190612b4f565b610b2d565b6040516102ee9190613127565b60405180910390f35b34801561030357600080fd5b5061030c610c46565b005b34801561031a57600080fd5b5061033560048036038101906103309190612b06565b610cce565b005b34801561034357600080fd5b5061034c610e01565b604051610359919061304a565b60405180910390f35b34801561036e57600080fd5b50610377610e2b565b604051610384919061319b565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612a86565b610e64565b005b6103d060048036038101906103cb9190612c97565b610e7a565b005b3480156103de57600080fd5b506103f960048036038101906103f49190612c97565b610fe1565b005b34801561040757600080fd5b50610410611081565b60405161041d9190613421565b60405180910390f35b34801561043257600080fd5b5061043b611097565b6040516104489190613421565b60405180910390f35b34801561045d57600080fd5b5061046661109d565b60405161047391906133dd565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e91906128e0565b6110a9565b6040516104b09190613180565b60405180910390f35b3480156104c557600080fd5b506104ce61113d565b6040516104db9190613180565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906129ef565b611160565b005b34801561051957600080fd5b50610534600480360381019061052f91906128b3565b611201565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e906131fd565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106ca57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106da57506106d9826112f9565b5b9050919050565b6106e9611363565b73ffffffffffffffffffffffffffffffffffffffff16610707610e01565b73ffffffffffffffffffffffffffffffffffffffff161461075d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107549061333d565b60405180910390fd5b6107668161136b565b50565b6040518060400160405280600581526020017f5741474d4900000000000000000000000000000000000000000000000000000081525081565b6060600280546107b1906137d5565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906137d5565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b50505050509050919050565b600360149054906101000a900463ffffffff1681565b610854611363565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061089a575061089985610894611363565b6110a9565b5b6108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d0906132dd565b60405180910390fd5b6108e68585858585611385565b5050505050565b6108f5611363565b73ffffffffffffffffffffffffffffffffffffffff16610913610e01565b73ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109609061333d565b60405180910390fd5b6000604051806040016040528073b166139a65fe53162936760ab9596b71b2467e8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736951e3df5aee8b018325ce2fbc0c399858d76ee073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525090506000604051806040016040528061258063ffffffff1663ffffffff16815260200161019063ffffffff1663ffffffff168152509050600047905060005b60028163ffffffff161015610b2757600060016002610a5e91906136a7565b8263ffffffff1614610aab57612710848363ffffffff1660028110610a8657610a8561393b565b5b602002015163ffffffff1684610a9c919061364d565b610aa6919061361c565b610aad565b475b9050848263ffffffff1660028110610ac857610ac761393b565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b12573d6000803e3d6000fd5b50508080610b1f90613881565b915050610a3f565b50505050565b60608151835114610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a9061337d565b60405180910390fd5b6000835167ffffffffffffffff811115610b9057610b8f61396a565b5b604051908082528060200260200182016040528015610bbe5781602001602082028036833780820191505090505b50905060005b8451811015610c3b57610c0b858281518110610be357610be261393b565b5b6020026020010151858381518110610bfe57610bfd61393b565b5b6020026020010151610536565b828281518110610c1e57610c1d61393b565b5b60200260200101818152505080610c3490613838565b9050610bc4565b508091505092915050565b610c4e611363565b73ffffffffffffffffffffffffffffffffffffffff16610c6c610e01565b73ffffffffffffffffffffffffffffffffffffffff1614610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb99061333d565b60405180910390fd5b610ccc6000611699565b565b610cd6611363565b73ffffffffffffffffffffffffffffffffffffffff16610cf4610e01565b73ffffffffffffffffffffffffffffffffffffffff1614610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d419061333d565b60405180910390fd5b610bce63ffffffff168151600360149054906101000a900463ffffffff1663ffffffff16610d78919061358c565b1115610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db09061331d565b60405180910390fd5b60005b8151811015610dfd57610dea828281518110610ddb57610dda61393b565b5b6020026020010151600161175f565b8080610df590613838565b915050610dbc565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600581526020017f5741474d4900000000000000000000000000000000000000000000000000000081525081565b610e76610e6f611363565b8383611960565b5050565b610e8261113d565b610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb89061325d565b60405180910390fd5b60008163ffffffff1611610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f019061327d565b60405180910390fd5b610bce63ffffffff1681600360149054906101000a900463ffffffff16610f3191906135e2565b63ffffffff161115610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f9061331d565b60405180910390fd5b8063ffffffff166701bc16d674ec8000610f92919061364d565b341015610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb9061329d565b60405180910390fd5b610fde338261175f565b50565b610fe9611363565b73ffffffffffffffffffffffffffffffffffffffff16611007610e01565b73ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110549061333d565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b600360189054906101000a900463ffffffff1681565b610bce81565b6701bc16d674ec800081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600042600360189054906101000a900463ffffffff1663ffffffff161115905090565b611168611363565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806111ae57506111ad856111a8611363565b6110a9565b5b6111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e49061323d565b60405180910390fd5b6111fa8585858585611acd565b5050505050565b611209611363565b73ffffffffffffffffffffffffffffffffffffffff16611227610e01565b73ffffffffffffffffffffffffffffffffffffffff161461127d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112749061333d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e49061321d565b60405180910390fd5b6112f681611699565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611381929190612576565b5050565b81518351146113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c09061339d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906132bd565b60405180910390fd5b6000611443611363565b9050611453818787878787611d4f565b60005b84518110156116045760008582815181106114745761147361393b565b5b6020026020010151905060008583815181106114935761149261393b565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b906132fd565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115e9919061358c565b92505081905550505050806115fd90613838565b9050611456565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161167b929190613149565b60405180910390a4611691818787878787611d57565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600360148282829054906101000a900463ffffffff1661178091906135e2565b92506101000a81548163ffffffff021916908363ffffffff16021790555060018163ffffffff16111561191b5760008163ffffffff1667ffffffffffffffff8111156117cf576117ce61396a565b5b6040519080825280602002602001820160405280156117fd5781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff8111156118225761182161396a565b5b6040519080825280602002602001820160405280156118505781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff1610156118f8578084600360149054906101000a900463ffffffff1661188991906136db565b61189391906135e2565b63ffffffff16838263ffffffff16815181106118b2576118b161393b565b5b6020026020010181815250506001828263ffffffff16815181106118d9576118d861393b565b5b60200260200101818152505080806118f090613881565b915050611856565b5061191484838360405180602001604052806000815250611f3e565b505061195c565b61195b826001600360149054906101000a900463ffffffff1661193e91906136db565b63ffffffff1660016040518060200160405280600081525061215c565b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c69061335d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ac09190613180565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b34906132bd565b60405180910390fd5b6000611b47611363565b9050611b67818787611b58886122f2565b611b61886122f2565b87611d4f565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf5906132fd565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cb3919061358c565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611d309291906133f8565b60405180910390a4611d4682888888888861236c565b50505050505050565b505050505050565b611d768473ffffffffffffffffffffffffffffffffffffffff16612553565b15611f36578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611dbc959493929190613065565b602060405180830381600087803b158015611dd657600080fd5b505af1925050508015611e0757506040513d601f19601f82011682018060405250810190611e049190612bf4565b60015b611ead57611e13613999565b806308c379a01415611e705750611e28613e99565b80611e335750611e72565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e67919061319b565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea4906131bd565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b906131dd565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa5906133bd565b60405180910390fd5b8151835114611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe99061339d565b60405180910390fd5b6000611ffc611363565b905061200d81600087878787611d4f565b60005b84518110156120c65783818151811061202c5761202b61393b565b5b602002602001015160008087848151811061204a5761204961393b565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120ac919061358c565b9250508190555080806120be90613838565b915050612010565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161213e929190613149565b60405180910390a461215581600087878787611d57565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c3906133bd565b60405180910390fd5b60006121d6611363565b90506121f7816000876121e8886122f2565b6121f1886122f2565b87611d4f565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612256919061358c565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516122d49291906133f8565b60405180910390a46122eb8160008787878761236c565b5050505050565b60606000600167ffffffffffffffff8111156123115761231061396a565b5b60405190808252806020026020018201604052801561233f5781602001602082028036833780820191505090505b50905082816000815181106123575761235661393b565b5b60200260200101818152505080915050919050565b61238b8473ffffffffffffffffffffffffffffffffffffffff16612553565b1561254b578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016123d19594939291906130cd565b602060405180830381600087803b1580156123eb57600080fd5b505af192505050801561241c57506040513d601f19601f820116820180604052508101906124199190612bf4565b60015b6124c257612428613999565b806308c379a01415612485575061243d613e99565b806124485750612487565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c919061319b565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b9906131bd565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612540906131dd565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612582906137d5565b90600052602060002090601f0160209004810192826125a457600085556125eb565b82601f106125bd57805160ff19168380011785556125eb565b828001600101855582156125eb579182015b828111156125ea5782518255916020019190600101906125cf565b5b5090506125f891906125fc565b5090565b5b808211156126155760008160009055506001016125fd565b5090565b600061262c61262784613461565b61343c565b9050808382526020820190508285602086028201111561264f5761264e6139c0565b5b60005b8581101561267f5781612665888261277d565b845260208401935060208301925050600181019050612652565b5050509392505050565b600061269c6126978461348d565b61343c565b905080838252602082019050828560208602820111156126bf576126be6139c0565b5b60005b858110156126ef57816126d58882612889565b8452602084019350602083019250506001810190506126c2565b5050509392505050565b600061270c612707846134b9565b61343c565b905082815260208101848484011115612728576127276139c5565b5b612733848285613793565b509392505050565b600061274e612749846134ea565b61343c565b90508281526020810184848401111561276a576127696139c5565b5b612775848285613793565b509392505050565b60008135905061278c81613f2f565b92915050565b600082601f8301126127a7576127a66139bb565b5b81356127b7848260208601612619565b91505092915050565b600082601f8301126127d5576127d46139bb565b5b81356127e5848260208601612689565b91505092915050565b6000813590506127fd81613f46565b92915050565b60008135905061281281613f5d565b92915050565b60008151905061282781613f5d565b92915050565b600082601f830112612842576128416139bb565b5b81356128528482602086016126f9565b91505092915050565b600082601f8301126128705761286f6139bb565b5b813561288084826020860161273b565b91505092915050565b60008135905061289881613f74565b92915050565b6000813590506128ad81613f8b565b92915050565b6000602082840312156128c9576128c86139cf565b5b60006128d78482850161277d565b91505092915050565b600080604083850312156128f7576128f66139cf565b5b60006129058582860161277d565b92505060206129168582860161277d565b9150509250929050565b600080600080600060a0868803121561293c5761293b6139cf565b5b600061294a8882890161277d565b955050602061295b8882890161277d565b945050604086013567ffffffffffffffff81111561297c5761297b6139ca565b5b612988888289016127c0565b935050606086013567ffffffffffffffff8111156129a9576129a86139ca565b5b6129b5888289016127c0565b925050608086013567ffffffffffffffff8111156129d6576129d56139ca565b5b6129e28882890161282d565b9150509295509295909350565b600080600080600060a08688031215612a0b57612a0a6139cf565b5b6000612a198882890161277d565b9550506020612a2a8882890161277d565b9450506040612a3b88828901612889565b9350506060612a4c88828901612889565b925050608086013567ffffffffffffffff811115612a6d57612a6c6139ca565b5b612a798882890161282d565b9150509295509295909350565b60008060408385031215612a9d57612a9c6139cf565b5b6000612aab8582860161277d565b9250506020612abc858286016127ee565b9150509250929050565b60008060408385031215612add57612adc6139cf565b5b6000612aeb8582860161277d565b9250506020612afc85828601612889565b9150509250929050565b600060208284031215612b1c57612b1b6139cf565b5b600082013567ffffffffffffffff811115612b3a57612b396139ca565b5b612b4684828501612792565b91505092915050565b60008060408385031215612b6657612b656139cf565b5b600083013567ffffffffffffffff811115612b8457612b836139ca565b5b612b9085828601612792565b925050602083013567ffffffffffffffff811115612bb157612bb06139ca565b5b612bbd858286016127c0565b9150509250929050565b600060208284031215612bdd57612bdc6139cf565b5b6000612beb84828501612803565b91505092915050565b600060208284031215612c0a57612c096139cf565b5b6000612c1884828501612818565b91505092915050565b600060208284031215612c3757612c366139cf565b5b600082013567ffffffffffffffff811115612c5557612c546139ca565b5b612c618482850161285b565b91505092915050565b600060208284031215612c8057612c7f6139cf565b5b6000612c8e84828501612889565b91505092915050565b600060208284031215612cad57612cac6139cf565b5b6000612cbb8482850161289e565b91505092915050565b6000612cd0838361301d565b60208301905092915050565b612ce58161370f565b82525050565b6000612cf68261352b565b612d008185613559565b9350612d0b8361351b565b8060005b83811015612d3c578151612d238882612cc4565b9750612d2e8361354c565b925050600181019050612d0f565b5085935050505092915050565b612d5281613721565b82525050565b6000612d6382613536565b612d6d818561356a565b9350612d7d8185602086016137a2565b612d86816139d4565b840191505092915050565b6000612d9c82613541565b612da6818561357b565b9350612db68185602086016137a2565b612dbf816139d4565b840191505092915050565b6000612dd760348361357b565b9150612de2826139f2565b604082019050919050565b6000612dfa60288361357b565b9150612e0582613a41565b604082019050919050565b6000612e1d602b8361357b565b9150612e2882613a90565b604082019050919050565b6000612e4060268361357b565b9150612e4b82613adf565b604082019050919050565b6000612e6360298361357b565b9150612e6e82613b2e565b604082019050919050565b6000612e86601a8361357b565b9150612e9182613b7d565b602082019050919050565b6000612ea9601d8361357b565b9150612eb482613ba6565b602082019050919050565b6000612ecc60118361357b565b9150612ed782613bcf565b602082019050919050565b6000612eef60258361357b565b9150612efa82613bf8565b604082019050919050565b6000612f1260328361357b565b9150612f1d82613c47565b604082019050919050565b6000612f35602a8361357b565b9150612f4082613c96565b604082019050919050565b6000612f5860298361357b565b9150612f6382613ce5565b604082019050919050565b6000612f7b60208361357b565b9150612f8682613d34565b602082019050919050565b6000612f9e60298361357b565b9150612fa982613d5d565b604082019050919050565b6000612fc160298361357b565b9150612fcc82613dac565b604082019050919050565b6000612fe460288361357b565b9150612fef82613dfb565b604082019050919050565b600061300760218361357b565b915061301282613e4a565b604082019050919050565b61302681613779565b82525050565b61303581613779565b82525050565b61304481613783565b82525050565b600060208201905061305f6000830184612cdc565b92915050565b600060a08201905061307a6000830188612cdc565b6130876020830187612cdc565b81810360408301526130998186612ceb565b905081810360608301526130ad8185612ceb565b905081810360808301526130c18184612d58565b90509695505050505050565b600060a0820190506130e26000830188612cdc565b6130ef6020830187612cdc565b6130fc604083018661302c565b613109606083018561302c565b818103608083015261311b8184612d58565b90509695505050505050565b600060208201905081810360008301526131418184612ceb565b905092915050565b600060408201905081810360008301526131638185612ceb565b905081810360208301526131778184612ceb565b90509392505050565b60006020820190506131956000830184612d49565b92915050565b600060208201905081810360008301526131b58184612d91565b905092915050565b600060208201905081810360008301526131d681612dca565b9050919050565b600060208201905081810360008301526131f681612ded565b9050919050565b6000602082019050818103600083015261321681612e10565b9050919050565b6000602082019050818103600083015261323681612e33565b9050919050565b6000602082019050818103600083015261325681612e56565b9050919050565b6000602082019050818103600083015261327681612e79565b9050919050565b6000602082019050818103600083015261329681612e9c565b9050919050565b600060208201905081810360008301526132b681612ebf565b9050919050565b600060208201905081810360008301526132d681612ee2565b9050919050565b600060208201905081810360008301526132f681612f05565b9050919050565b6000602082019050818103600083015261331681612f28565b9050919050565b6000602082019050818103600083015261333681612f4b565b9050919050565b6000602082019050818103600083015261335681612f6e565b9050919050565b6000602082019050818103600083015261337681612f91565b9050919050565b6000602082019050818103600083015261339681612fb4565b9050919050565b600060208201905081810360008301526133b681612fd7565b9050919050565b600060208201905081810360008301526133d681612ffa565b9050919050565b60006020820190506133f2600083018461302c565b92915050565b600060408201905061340d600083018561302c565b61341a602083018461302c565b9392505050565b6000602082019050613436600083018461303b565b92915050565b6000613446613457565b90506134528282613807565b919050565b6000604051905090565b600067ffffffffffffffff82111561347c5761347b61396a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156134a8576134a761396a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156134d4576134d361396a565b5b6134dd826139d4565b9050602081019050919050565b600067ffffffffffffffff8211156135055761350461396a565b5b61350e826139d4565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061359782613779565b91506135a283613779565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135d7576135d66138ae565b5b828201905092915050565b60006135ed82613783565b91506135f883613783565b92508263ffffffff03821115613611576136106138ae565b5b828201905092915050565b600061362782613779565b915061363283613779565b925082613642576136416138dd565b5b828204905092915050565b600061365882613779565b915061366383613779565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561369c5761369b6138ae565b5b828202905092915050565b60006136b282613779565b91506136bd83613779565b9250828210156136d0576136cf6138ae565b5b828203905092915050565b60006136e682613783565b91506136f183613783565b925082821015613704576137036138ae565b5b828203905092915050565b600061371a82613759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b838110156137c05780820151818401526020810190506137a5565b838111156137cf576000848401525b50505050565b600060028204905060018216806137ed57607f821691505b602082108114156138015761380061390c565b5b50919050565b613810826139d4565b810181811067ffffffffffffffff8211171561382f5761382e61396a565b5b80604052505050565b600061384382613779565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613876576138756138ae565b5b600182019050919050565b600061388c82613783565b915063ffffffff8214156138a3576138a26138ae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156139b85760046000803e6139b56000516139e5565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f5075626c69632073616c65206973206e6f74206163746976652e000000000000600082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015613ea957613f2c565b613eb1613457565b60043d036004823e80513d602482011167ffffffffffffffff82111715613ed9575050613f2c565b808201805167ffffffffffffffff811115613ef75750505050613f2c565b80602083010160043d038501811115613f14575050505050613f2c565b613f2382602001850186613807565b82955050505050505b90565b613f388161370f565b8114613f4357600080fd5b50565b613f4f81613721565b8114613f5a57600080fd5b50565b613f668161372d565b8114613f7157600080fd5b50565b613f7d81613779565b8114613f8857600080fd5b50565b613f9481613783565b8114613f9f57600080fd5b5056fea2646970667358221220eef3aa3eb3c9fe77e9b4480797f4b8f630fc2ae3f8f1f7c5805aeeea14ebc64964736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f6275636b6574732e6d7970696e6174612e636c6f75642f697066732f516d51716b654a42353755707347357a6a396378746e75334b4538396750565a6131695261654234515a62544a512f7b69647d2e6a736f6e00000000
Deployed Bytecode
0x60806040526004361061013f5760003560e01c80638da5cb5b116100b6578063d5abeb011161006f578063d5abeb0114610426578063e73faa2d14610451578063e985e9c51461047c578063eb8d2444146104b9578063f242432a146104e4578063f2fde38b1461050d5761013f565b80638da5cb5b1461033757806395d89b4114610362578063a22cb4651461038d578063a71bbebe146103b6578063a741ae1e146103d2578063ab0bcc41146103fb5761013f565b806318160ddd1161010857806318160ddd1461024f5780632eb2c2d61461027a5780633ccfd60b146102a35780634e1273f4146102ba578063715018a6146102f7578063729ad39e1461030e5761013f565b8062fdd58e1461014457806301ffc9a71461018157806302fe5305146101be57806306fdde03146101e75780630e89341c14610212575b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612ac6565b610536565b60405161017891906133dd565b60405180910390f35b34801561018d57600080fd5b506101a860048036038101906101a39190612bc7565b6105ff565b6040516101b59190613180565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190612c21565b6106e1565b005b3480156101f357600080fd5b506101fc610769565b604051610209919061319b565b60405180910390f35b34801561021e57600080fd5b5061023960048036038101906102349190612c6a565b6107a2565b604051610246919061319b565b60405180910390f35b34801561025b57600080fd5b50610264610836565b6040516102719190613421565b60405180910390f35b34801561028657600080fd5b506102a1600480360381019061029c9190612920565b61084c565b005b3480156102af57600080fd5b506102b86108ed565b005b3480156102c657600080fd5b506102e160048036038101906102dc9190612b4f565b610b2d565b6040516102ee9190613127565b60405180910390f35b34801561030357600080fd5b5061030c610c46565b005b34801561031a57600080fd5b5061033560048036038101906103309190612b06565b610cce565b005b34801561034357600080fd5b5061034c610e01565b604051610359919061304a565b60405180910390f35b34801561036e57600080fd5b50610377610e2b565b604051610384919061319b565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190612a86565b610e64565b005b6103d060048036038101906103cb9190612c97565b610e7a565b005b3480156103de57600080fd5b506103f960048036038101906103f49190612c97565b610fe1565b005b34801561040757600080fd5b50610410611081565b60405161041d9190613421565b60405180910390f35b34801561043257600080fd5b5061043b611097565b6040516104489190613421565b60405180910390f35b34801561045d57600080fd5b5061046661109d565b60405161047391906133dd565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e91906128e0565b6110a9565b6040516104b09190613180565b60405180910390f35b3480156104c557600080fd5b506104ce61113d565b6040516104db9190613180565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906129ef565b611160565b005b34801561051957600080fd5b50610534600480360381019061052f91906128b3565b611201565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059e906131fd565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106ca57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106da57506106d9826112f9565b5b9050919050565b6106e9611363565b73ffffffffffffffffffffffffffffffffffffffff16610707610e01565b73ffffffffffffffffffffffffffffffffffffffff161461075d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107549061333d565b60405180910390fd5b6107668161136b565b50565b6040518060400160405280600581526020017f5741474d4900000000000000000000000000000000000000000000000000000081525081565b6060600280546107b1906137d5565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd906137d5565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b50505050509050919050565b600360149054906101000a900463ffffffff1681565b610854611363565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061089a575061089985610894611363565b6110a9565b5b6108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d0906132dd565b60405180910390fd5b6108e68585858585611385565b5050505050565b6108f5611363565b73ffffffffffffffffffffffffffffffffffffffff16610913610e01565b73ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109609061333d565b60405180910390fd5b6000604051806040016040528073b166139a65fe53162936760ab9596b71b2467e8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001736951e3df5aee8b018325ce2fbc0c399858d76ee073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525090506000604051806040016040528061258063ffffffff1663ffffffff16815260200161019063ffffffff1663ffffffff168152509050600047905060005b60028163ffffffff161015610b2757600060016002610a5e91906136a7565b8263ffffffff1614610aab57612710848363ffffffff1660028110610a8657610a8561393b565b5b602002015163ffffffff1684610a9c919061364d565b610aa6919061361c565b610aad565b475b9050848263ffffffff1660028110610ac857610ac761393b565b5b602002015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610b12573d6000803e3d6000fd5b50508080610b1f90613881565b915050610a3f565b50505050565b60608151835114610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a9061337d565b60405180910390fd5b6000835167ffffffffffffffff811115610b9057610b8f61396a565b5b604051908082528060200260200182016040528015610bbe5781602001602082028036833780820191505090505b50905060005b8451811015610c3b57610c0b858281518110610be357610be261393b565b5b6020026020010151858381518110610bfe57610bfd61393b565b5b6020026020010151610536565b828281518110610c1e57610c1d61393b565b5b60200260200101818152505080610c3490613838565b9050610bc4565b508091505092915050565b610c4e611363565b73ffffffffffffffffffffffffffffffffffffffff16610c6c610e01565b73ffffffffffffffffffffffffffffffffffffffff1614610cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb99061333d565b60405180910390fd5b610ccc6000611699565b565b610cd6611363565b73ffffffffffffffffffffffffffffffffffffffff16610cf4610e01565b73ffffffffffffffffffffffffffffffffffffffff1614610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d419061333d565b60405180910390fd5b610bce63ffffffff168151600360149054906101000a900463ffffffff1663ffffffff16610d78919061358c565b1115610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db09061331d565b60405180910390fd5b60005b8151811015610dfd57610dea828281518110610ddb57610dda61393b565b5b6020026020010151600161175f565b8080610df590613838565b915050610dbc565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600581526020017f5741474d4900000000000000000000000000000000000000000000000000000081525081565b610e76610e6f611363565b8383611960565b5050565b610e8261113d565b610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb89061325d565b60405180910390fd5b60008163ffffffff1611610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f019061327d565b60405180910390fd5b610bce63ffffffff1681600360149054906101000a900463ffffffff16610f3191906135e2565b63ffffffff161115610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f9061331d565b60405180910390fd5b8063ffffffff166701bc16d674ec8000610f92919061364d565b341015610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb9061329d565b60405180910390fd5b610fde338261175f565b50565b610fe9611363565b73ffffffffffffffffffffffffffffffffffffffff16611007610e01565b73ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110549061333d565b60405180910390fd5b80600360186101000a81548163ffffffff021916908363ffffffff16021790555050565b600360189054906101000a900463ffffffff1681565b610bce81565b6701bc16d674ec800081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600042600360189054906101000a900463ffffffff1663ffffffff161115905090565b611168611363565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806111ae57506111ad856111a8611363565b6110a9565b5b6111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e49061323d565b60405180910390fd5b6111fa8585858585611acd565b5050505050565b611209611363565b73ffffffffffffffffffffffffffffffffffffffff16611227610e01565b73ffffffffffffffffffffffffffffffffffffffff161461127d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112749061333d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e49061321d565b60405180910390fd5b6112f681611699565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8060029080519060200190611381929190612576565b5050565b81518351146113c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c09061339d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906132bd565b60405180910390fd5b6000611443611363565b9050611453818787878787611d4f565b60005b84518110156116045760008582815181106114745761147361393b565b5b6020026020010151905060008583815181106114935761149261393b565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b906132fd565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115e9919061358c565b92505081905550505050806115fd90613838565b9050611456565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161167b929190613149565b60405180910390a4611691818787878787611d57565b505050505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600360148282829054906101000a900463ffffffff1661178091906135e2565b92506101000a81548163ffffffff021916908363ffffffff16021790555060018163ffffffff16111561191b5760008163ffffffff1667ffffffffffffffff8111156117cf576117ce61396a565b5b6040519080825280602002602001820160405280156117fd5781602001602082028036833780820191505090505b50905060008263ffffffff1667ffffffffffffffff8111156118225761182161396a565b5b6040519080825280602002602001820160405280156118505781602001602082028036833780820191505090505b50905060005b8363ffffffff168163ffffffff1610156118f8578084600360149054906101000a900463ffffffff1661188991906136db565b61189391906135e2565b63ffffffff16838263ffffffff16815181106118b2576118b161393b565b5b6020026020010181815250506001828263ffffffff16815181106118d9576118d861393b565b5b60200260200101818152505080806118f090613881565b915050611856565b5061191484838360405180602001604052806000815250611f3e565b505061195c565b61195b826001600360149054906101000a900463ffffffff1661193e91906136db565b63ffffffff1660016040518060200160405280600081525061215c565b5b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c69061335d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ac09190613180565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b34906132bd565b60405180910390fd5b6000611b47611363565b9050611b67818787611b58886122f2565b611b61886122f2565b87611d4f565b600080600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf5906132fd565b60405180910390fd5b83810360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508360008087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cb3919061358c565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628888604051611d309291906133f8565b60405180910390a4611d4682888888888861236c565b50505050505050565b505050505050565b611d768473ffffffffffffffffffffffffffffffffffffffff16612553565b15611f36578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611dbc959493929190613065565b602060405180830381600087803b158015611dd657600080fd5b505af1925050508015611e0757506040513d601f19601f82011682018060405250810190611e049190612bf4565b60015b611ead57611e13613999565b806308c379a01415611e705750611e28613e99565b80611e335750611e72565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e67919061319b565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea4906131bd565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b906131dd565b60405180910390fd5b505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa5906133bd565b60405180910390fd5b8151835114611ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe99061339d565b60405180910390fd5b6000611ffc611363565b905061200d81600087878787611d4f565b60005b84518110156120c65783818151811061202c5761202b61393b565b5b602002602001015160008087848151811061204a5761204961393b565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120ac919061358c565b9250508190555080806120be90613838565b915050612010565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161213e929190613149565b60405180910390a461215581600087878787611d57565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c3906133bd565b60405180910390fd5b60006121d6611363565b90506121f7816000876121e8886122f2565b6121f1886122f2565b87611d4f565b8260008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612256919061358c565b925050819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516122d49291906133f8565b60405180910390a46122eb8160008787878761236c565b5050505050565b60606000600167ffffffffffffffff8111156123115761231061396a565b5b60405190808252806020026020018201604052801561233f5781602001602082028036833780820191505090505b50905082816000815181106123575761235661393b565b5b60200260200101818152505080915050919050565b61238b8473ffffffffffffffffffffffffffffffffffffffff16612553565b1561254b578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016123d19594939291906130cd565b602060405180830381600087803b1580156123eb57600080fd5b505af192505050801561241c57506040513d601f19601f820116820180604052508101906124199190612bf4565b60015b6124c257612428613999565b806308c379a01415612485575061243d613e99565b806124485750612487565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c919061319b565b60405180910390fd5b505b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b9906131bd565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612549576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612540906131dd565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612582906137d5565b90600052602060002090601f0160209004810192826125a457600085556125eb565b82601f106125bd57805160ff19168380011785556125eb565b828001600101855582156125eb579182015b828111156125ea5782518255916020019190600101906125cf565b5b5090506125f891906125fc565b5090565b5b808211156126155760008160009055506001016125fd565b5090565b600061262c61262784613461565b61343c565b9050808382526020820190508285602086028201111561264f5761264e6139c0565b5b60005b8581101561267f5781612665888261277d565b845260208401935060208301925050600181019050612652565b5050509392505050565b600061269c6126978461348d565b61343c565b905080838252602082019050828560208602820111156126bf576126be6139c0565b5b60005b858110156126ef57816126d58882612889565b8452602084019350602083019250506001810190506126c2565b5050509392505050565b600061270c612707846134b9565b61343c565b905082815260208101848484011115612728576127276139c5565b5b612733848285613793565b509392505050565b600061274e612749846134ea565b61343c565b90508281526020810184848401111561276a576127696139c5565b5b612775848285613793565b509392505050565b60008135905061278c81613f2f565b92915050565b600082601f8301126127a7576127a66139bb565b5b81356127b7848260208601612619565b91505092915050565b600082601f8301126127d5576127d46139bb565b5b81356127e5848260208601612689565b91505092915050565b6000813590506127fd81613f46565b92915050565b60008135905061281281613f5d565b92915050565b60008151905061282781613f5d565b92915050565b600082601f830112612842576128416139bb565b5b81356128528482602086016126f9565b91505092915050565b600082601f8301126128705761286f6139bb565b5b813561288084826020860161273b565b91505092915050565b60008135905061289881613f74565b92915050565b6000813590506128ad81613f8b565b92915050565b6000602082840312156128c9576128c86139cf565b5b60006128d78482850161277d565b91505092915050565b600080604083850312156128f7576128f66139cf565b5b60006129058582860161277d565b92505060206129168582860161277d565b9150509250929050565b600080600080600060a0868803121561293c5761293b6139cf565b5b600061294a8882890161277d565b955050602061295b8882890161277d565b945050604086013567ffffffffffffffff81111561297c5761297b6139ca565b5b612988888289016127c0565b935050606086013567ffffffffffffffff8111156129a9576129a86139ca565b5b6129b5888289016127c0565b925050608086013567ffffffffffffffff8111156129d6576129d56139ca565b5b6129e28882890161282d565b9150509295509295909350565b600080600080600060a08688031215612a0b57612a0a6139cf565b5b6000612a198882890161277d565b9550506020612a2a8882890161277d565b9450506040612a3b88828901612889565b9350506060612a4c88828901612889565b925050608086013567ffffffffffffffff811115612a6d57612a6c6139ca565b5b612a798882890161282d565b9150509295509295909350565b60008060408385031215612a9d57612a9c6139cf565b5b6000612aab8582860161277d565b9250506020612abc858286016127ee565b9150509250929050565b60008060408385031215612add57612adc6139cf565b5b6000612aeb8582860161277d565b9250506020612afc85828601612889565b9150509250929050565b600060208284031215612b1c57612b1b6139cf565b5b600082013567ffffffffffffffff811115612b3a57612b396139ca565b5b612b4684828501612792565b91505092915050565b60008060408385031215612b6657612b656139cf565b5b600083013567ffffffffffffffff811115612b8457612b836139ca565b5b612b9085828601612792565b925050602083013567ffffffffffffffff811115612bb157612bb06139ca565b5b612bbd858286016127c0565b9150509250929050565b600060208284031215612bdd57612bdc6139cf565b5b6000612beb84828501612803565b91505092915050565b600060208284031215612c0a57612c096139cf565b5b6000612c1884828501612818565b91505092915050565b600060208284031215612c3757612c366139cf565b5b600082013567ffffffffffffffff811115612c5557612c546139ca565b5b612c618482850161285b565b91505092915050565b600060208284031215612c8057612c7f6139cf565b5b6000612c8e84828501612889565b91505092915050565b600060208284031215612cad57612cac6139cf565b5b6000612cbb8482850161289e565b91505092915050565b6000612cd0838361301d565b60208301905092915050565b612ce58161370f565b82525050565b6000612cf68261352b565b612d008185613559565b9350612d0b8361351b565b8060005b83811015612d3c578151612d238882612cc4565b9750612d2e8361354c565b925050600181019050612d0f565b5085935050505092915050565b612d5281613721565b82525050565b6000612d6382613536565b612d6d818561356a565b9350612d7d8185602086016137a2565b612d86816139d4565b840191505092915050565b6000612d9c82613541565b612da6818561357b565b9350612db68185602086016137a2565b612dbf816139d4565b840191505092915050565b6000612dd760348361357b565b9150612de2826139f2565b604082019050919050565b6000612dfa60288361357b565b9150612e0582613a41565b604082019050919050565b6000612e1d602b8361357b565b9150612e2882613a90565b604082019050919050565b6000612e4060268361357b565b9150612e4b82613adf565b604082019050919050565b6000612e6360298361357b565b9150612e6e82613b2e565b604082019050919050565b6000612e86601a8361357b565b9150612e9182613b7d565b602082019050919050565b6000612ea9601d8361357b565b9150612eb482613ba6565b602082019050919050565b6000612ecc60118361357b565b9150612ed782613bcf565b602082019050919050565b6000612eef60258361357b565b9150612efa82613bf8565b604082019050919050565b6000612f1260328361357b565b9150612f1d82613c47565b604082019050919050565b6000612f35602a8361357b565b9150612f4082613c96565b604082019050919050565b6000612f5860298361357b565b9150612f6382613ce5565b604082019050919050565b6000612f7b60208361357b565b9150612f8682613d34565b602082019050919050565b6000612f9e60298361357b565b9150612fa982613d5d565b604082019050919050565b6000612fc160298361357b565b9150612fcc82613dac565b604082019050919050565b6000612fe460288361357b565b9150612fef82613dfb565b604082019050919050565b600061300760218361357b565b915061301282613e4a565b604082019050919050565b61302681613779565b82525050565b61303581613779565b82525050565b61304481613783565b82525050565b600060208201905061305f6000830184612cdc565b92915050565b600060a08201905061307a6000830188612cdc565b6130876020830187612cdc565b81810360408301526130998186612ceb565b905081810360608301526130ad8185612ceb565b905081810360808301526130c18184612d58565b90509695505050505050565b600060a0820190506130e26000830188612cdc565b6130ef6020830187612cdc565b6130fc604083018661302c565b613109606083018561302c565b818103608083015261311b8184612d58565b90509695505050505050565b600060208201905081810360008301526131418184612ceb565b905092915050565b600060408201905081810360008301526131638185612ceb565b905081810360208301526131778184612ceb565b90509392505050565b60006020820190506131956000830184612d49565b92915050565b600060208201905081810360008301526131b58184612d91565b905092915050565b600060208201905081810360008301526131d681612dca565b9050919050565b600060208201905081810360008301526131f681612ded565b9050919050565b6000602082019050818103600083015261321681612e10565b9050919050565b6000602082019050818103600083015261323681612e33565b9050919050565b6000602082019050818103600083015261325681612e56565b9050919050565b6000602082019050818103600083015261327681612e79565b9050919050565b6000602082019050818103600083015261329681612e9c565b9050919050565b600060208201905081810360008301526132b681612ebf565b9050919050565b600060208201905081810360008301526132d681612ee2565b9050919050565b600060208201905081810360008301526132f681612f05565b9050919050565b6000602082019050818103600083015261331681612f28565b9050919050565b6000602082019050818103600083015261333681612f4b565b9050919050565b6000602082019050818103600083015261335681612f6e565b9050919050565b6000602082019050818103600083015261337681612f91565b9050919050565b6000602082019050818103600083015261339681612fb4565b9050919050565b600060208201905081810360008301526133b681612fd7565b9050919050565b600060208201905081810360008301526133d681612ffa565b9050919050565b60006020820190506133f2600083018461302c565b92915050565b600060408201905061340d600083018561302c565b61341a602083018461302c565b9392505050565b6000602082019050613436600083018461303b565b92915050565b6000613446613457565b90506134528282613807565b919050565b6000604051905090565b600067ffffffffffffffff82111561347c5761347b61396a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156134a8576134a761396a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156134d4576134d361396a565b5b6134dd826139d4565b9050602081019050919050565b600067ffffffffffffffff8211156135055761350461396a565b5b61350e826139d4565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600061359782613779565b91506135a283613779565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135d7576135d66138ae565b5b828201905092915050565b60006135ed82613783565b91506135f883613783565b92508263ffffffff03821115613611576136106138ae565b5b828201905092915050565b600061362782613779565b915061363283613779565b925082613642576136416138dd565b5b828204905092915050565b600061365882613779565b915061366383613779565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561369c5761369b6138ae565b5b828202905092915050565b60006136b282613779565b91506136bd83613779565b9250828210156136d0576136cf6138ae565b5b828203905092915050565b60006136e682613783565b91506136f183613783565b925082821015613704576137036138ae565b5b828203905092915050565b600061371a82613759565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b82818337600083830152505050565b60005b838110156137c05780820151818401526020810190506137a5565b838111156137cf576000848401525b50505050565b600060028204905060018216806137ed57607f821691505b602082108114156138015761380061390c565b5b50919050565b613810826139d4565b810181811067ffffffffffffffff8211171561382f5761382e61396a565b5b80604052505050565b600061384382613779565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613876576138756138ae565b5b600182019050919050565b600061388c82613783565b915063ffffffff8214156138a3576138a26138ae565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060033d11156139b85760046000803e6139b56000516139e5565b90505b90565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b7f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b7f5075626c69632073616c65206973206e6f74206163746976652e000000000000600082015250565b7f436f756e74206d7573742062652067726561746572207468616e20302e000000600082015250565b7f4e6f7420656e6f7567682065746865722e000000000000000000000000000000600082015250565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b7f436f756e74206578636565647320746865206d6178696d756d20616c6c6f776560008201527f6420737570706c792e0000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600060443d1015613ea957613f2c565b613eb1613457565b60043d036004823e80513d602482011167ffffffffffffffff82111715613ed9575050613f2c565b808201805167ffffffffffffffff811115613ef75750505050613f2c565b80602083010160043d038501811115613f14575050505050613f2c565b613f2382602001850186613807565b82955050505050505b90565b613f388161370f565b8114613f4357600080fd5b50565b613f4f81613721565b8114613f5a57600080fd5b50565b613f668161372d565b8114613f7157600080fd5b50565b613f7d81613779565b8114613f8857600080fd5b50565b613f9481613783565b8114613f9f57600080fd5b5056fea2646970667358221220eef3aa3eb3c9fe77e9b4480797f4b8f630fc2ae3f8f1f7c5805aeeea14ebc64964736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005c68747470733a2f2f6275636b6574732e6d7970696e6174612e636c6f75642f697066732f516d51716b654a42353755707347357a6a396378746e75334b4538396750565a6131695261654234515a62544a512f7b69647d2e6a736f6e00000000
-----Decoded View---------------
Arg [0] : uri (string): https://buckets.mypinata.cloud/ipfs/QmQqkeJB57UpsG5zj9cxtnu3KE89gPVZa1iRaeB4QZbTJQ/{id}.json
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 000000000000000000000000000000000000000000000000000000000000005c
Arg [2] : 68747470733a2f2f6275636b6574732e6d7970696e6174612e636c6f75642f69
Arg [3] : 7066732f516d51716b654a42353755707347357a6a396378746e75334b453839
Arg [4] : 6750565a6131695261654234515a62544a512f7b69647d2e6a736f6e00000000
Deployed Bytecode Sourcemap
36945:2587:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23377:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22400:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37316:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36987:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23121:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37181:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25316:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38928:601;;;;;;;;;;;;;:::i;:::-;;23774:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2606:103;;;;;;;;;;;;;:::i;:::-;;38596:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1955:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37031:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24371:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38168:420;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37409:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37217:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37079:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37125:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24598:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37516:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24838:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2864:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23377:231;23463:7;23510:1;23491:21;;:7;:21;;;;23483:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;23578:9;:13;23588:2;23578:13;;;;;;;;;;;:22;23592:7;23578:22;;;;;;;;;;;;;;;;23571:29;;23377:231;;;;:::o;22400:310::-;22502:4;22554:26;22539:41;;;:11;:41;;;;:110;;;;22612:37;22597:52;;;:11;:52;;;;22539:110;:163;;;;22666:36;22690:11;22666:23;:36::i;:::-;22539:163;22519:183;;22400:310;;;:::o;37316:85::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37381:12:::1;37389:3;37381:7;:12::i;:::-;37316:85:::0;:::o;36987:37::-;;;;;;;;;;;;;;;;;;;:::o;23121:105::-;23181:13;23214:4;23207:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23121:105;;;:::o;37181:29::-;;;;;;;;;;;;;:::o;25316:442::-;25557:12;:10;:12::i;:::-;25549:20;;:4;:20;;;:60;;;;25573:36;25590:4;25596:12;:10;:12::i;:::-;25573:16;:36::i;:::-;25549:60;25527:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25698:52;25721:4;25727:2;25731:3;25736:7;25745:4;25698:22;:52::i;:::-;25316:442;;;;;:::o;38928:601::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;38978:27:::1;:155;;;;;;;;39023:42;38978:155;;;;;;;;39080:42;38978:155;;;;;;::::0;::::1;;39146:23;:53;;;;;;;;39180:4;39146:53;;;;;;;;39194:3;39146:53;;;;;;::::0;::::1;;39212:15;39230:21;39212:39;;39269:8;39264:258;39287:16;39283:1;:20;;;39264:258;;;39325:14;39366:1;39347:16;:20;;;;:::i;:::-;39342:1;:25;;;:115;;39452:5;39439:6;39446:1;39439:9;;;;;;;;;:::i;:::-;;;;;;39429:19;;:7;:19;;;;:::i;:::-;39428:29;;;;:::i;:::-;39342:115;;;39387:21;39342:115;39325:132;;39480:9;39490:1;39480:12;;;;;;;;;:::i;:::-;;;;;;39472:30;;:38;39503:6;39472:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;39310:212;39305:3;;;;;:::i;:::-;;;;39264:258;;;;38967:562;;;38928:601::o:0;23774:524::-;23930:16;23991:3;:10;23972:8;:15;:29;23964:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;24060:30;24107:8;:15;24093:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24060:63;;24141:9;24136:122;24160:8;:15;24156:1;:19;24136:122;;;24216:30;24226:8;24235:1;24226:11;;;;;;;;:::i;:::-;;;;;;;;24239:3;24243:1;24239:6;;;;;;;;:::i;:::-;;;;;;;;24216:9;:30::i;:::-;24197:13;24211:1;24197:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;24177:3;;;;:::i;:::-;;;24136:122;;;;24277:13;24270:20;;;23774:524;;;;:::o;2606:103::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2671:30:::1;2698:1;2671:18;:30::i;:::-;2606:103::o:0;38596:324::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37114:4:::1;38693:43;;38707:9;:16;38693:11;;;;;;;;;;;:30;;;;;;:::i;:::-;:43;;38671:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;38823:9;38818:95;38842:9;:16;38838:1;:20;38818:95;;;38880:21;38885:9;38895:1;38885:12;;;;;;;;:::i;:::-;;;;;;;;38899:1;38880:4;:21::i;:::-;38860:3;;;;;:::i;:::-;;;;38818:95;;;;38596:324:::0;:::o;1955:87::-;2001:7;2028:6;;;;;;;;;;;2021:13;;1955:87;:::o;37031:39::-;;;;;;;;;;;;;;;;;;;:::o;24371:155::-;24466:52;24485:12;:10;:12::i;:::-;24499:8;24509;24466:18;:52::i;:::-;24371:155;;:::o;38168:420::-;38232:14;:12;:14::i;:::-;38224:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;38304:1;38296:5;:9;;;38288:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;37114:4;38372:32;;38386:5;38372:11;;;;;;;;;;;:19;;;;:::i;:::-;:32;;;;38350:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;38517:5;38505:17;;37161:11;38505:17;;;;:::i;:::-;38492:9;:30;;38484:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;38557:23;38562:10;38574:5;38557:4;:23::i;:::-;38168:420;:::o;37409:99::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37491:9:::1;37479;;:21;;;;;;;;;;;;;;;;;;37409:99:::0;:::o;37217:36::-;;;;;;;;;;;;;:::o;37079:39::-;37114:4;37079:39;:::o;37125:47::-;37161:11;37125:47;:::o;24598:168::-;24697:4;24721:18;:27;24740:7;24721:27;;;;;;;;;;;;;;;:37;24749:8;24721:37;;;;;;;;;;;;;;;;;;;;;;;;;24714:44;;24598:168;;;;:::o;37516:105::-;37561:4;37598:15;37585:9;;;;;;;;;;;:28;;;;37578:35;;37516:105;:::o;24838:401::-;25054:12;:10;:12::i;:::-;25046:20;;:4;:20;;;:60;;;;25070:36;25087:4;25093:12;:10;:12::i;:::-;25070:16;:36::i;:::-;25046:60;25024:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;25186:45;25204:4;25210:2;25214;25218:6;25226:4;25186:17;:45::i;:::-;24838:401;;;;;:::o;2864:201::-;2186:12;:10;:12::i;:::-;2175:23;;:7;:5;:7::i;:::-;:23;;;2167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2973:1:::1;2953:22;;:8;:22;;;;2945:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3029:28;3048:8;3029:18;:28::i;:::-;2864:201:::0;:::o;13708:157::-;13793:4;13832:25;13817:40;;;:11;:40;;;;13810:47;;13708:157;;;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;29318:88::-;29392:6;29385:4;:13;;;;;;;;;;;;:::i;:::-;;29318:88;:::o;27400:1074::-;27627:7;:14;27613:3;:10;:28;27605:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;27719:1;27705:16;;:2;:16;;;;27697:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;27776:16;27795:12;:10;:12::i;:::-;27776:31;;27820:60;27841:8;27851:4;27857:2;27861:3;27866:7;27875:4;27820:20;:60::i;:::-;27898:9;27893:421;27917:3;:10;27913:1;:14;27893:421;;;27949:10;27962:3;27966:1;27962:6;;;;;;;;:::i;:::-;;;;;;;;27949:19;;27983:14;28000:7;28008:1;28000:10;;;;;;;;:::i;:::-;;;;;;;;27983:27;;28027:19;28049:9;:13;28059:2;28049:13;;;;;;;;;;;:19;28063:4;28049:19;;;;;;;;;;;;;;;;28027:41;;28106:6;28091:11;:21;;28083:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;28239:6;28225:11;:20;28203:9;:13;28213:2;28203:13;;;;;;;;;;;:19;28217:4;28203:19;;;;;;;;;;;;;;;:42;;;;28296:6;28275:9;:13;28285:2;28275:13;;;;;;;;;;;:17;28289:2;28275:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;27934:380;;;27929:3;;;;:::i;:::-;;;27893:421;;;;28361:2;28331:47;;28355:4;28331:47;;28345:8;28331:47;;;28365:3;28370:7;28331:47;;;;;;;:::i;:::-;;;;;;;;28391:75;28427:8;28437:4;28443:2;28447:3;28452:7;28461:4;28391:35;:75::i;:::-;27594:880;27400:1074;;;;;:::o;3225:191::-;3299:16;3318:6;;;;;;;;;;;3299:25;;3344:8;3335:6;;:17;;;;;;;;;;;;;;;;;;3399:8;3368:40;;3389:8;3368:40;;;;;;;;;;;;3288:128;3225:191;:::o;37629:531::-;37704:5;37689:11;;:20;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37734:1;37726:5;:9;;;37722:431;;;37752:20;37797:5;37789:14;;37775:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37752:52;;37819:24;37868:5;37860:14;;37846:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37819:56;;37897:8;37892:135;37915:5;37911:9;;:1;:9;;;37892:135;;;37977:1;37969:5;37955:11;;;;;;;;;;;:19;;;;:::i;:::-;:23;;;;:::i;:::-;37946:32;;:3;37950:1;37946:6;;;;;;;;;;:::i;:::-;;;;;;;:32;;;;;38010:1;37997:7;38005:1;37997:10;;;;;;;;;;:::i;:::-;;;;;;;:14;;;;;37922:3;;;;;:::i;:::-;;;;37892:135;;;;38043:32;38054:2;38058:3;38063:7;38043:32;;;;;;;;;;;;:10;:32::i;:::-;37737:350;;37722:431;;;38108:33;38114:2;38132:1;38118:11;;;;;;;;;;;:15;;;;:::i;:::-;38108:33;;38135:1;38108:33;;;;;;;;;;;;:5;:33::i;:::-;37722:431;37629:531;;:::o;33586:331::-;33741:8;33732:17;;:5;:17;;;;33724:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;33844:8;33806:18;:25;33825:5;33806:25;;;;;;;;;;;;;;;:35;33832:8;33806:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33890:8;33868:41;;33883:5;33868:41;;;33900:8;33868:41;;;;;;:::i;:::-;;;;;;;;33586:331;;;:::o;26222:820::-;26424:1;26410:16;;:2;:16;;;;26402:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;26481:16;26500:12;:10;:12::i;:::-;26481:31;;26525:96;26546:8;26556:4;26562:2;26566:21;26584:2;26566:17;:21::i;:::-;26589:25;26607:6;26589:17;:25::i;:::-;26616:4;26525:20;:96::i;:::-;26634:19;26656:9;:13;26666:2;26656:13;;;;;;;;;;;:19;26670:4;26656:19;;;;;;;;;;;;;;;;26634:41;;26709:6;26694:11;:21;;26686:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;26834:6;26820:11;:20;26798:9;:13;26808:2;26798:13;;;;;;;;;;;:19;26812:4;26798:19;;;;;;;;;;;;;;;:42;;;;26883:6;26862:9;:13;26872:2;26862:13;;;;;;;;;;;:17;26876:2;26862:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;26938:2;26907:46;;26932:4;26907:46;;26922:8;26907:46;;;26942:2;26946:6;26907:46;;;;;;;:::i;:::-;;;;;;;;26966:68;26997:8;27007:4;27013:2;27017;27021:6;27029:4;26966:30;:68::i;:::-;26391:651;;26222:820;;;;;:::o;34873:221::-;;;;;;;:::o;35854:813::-;36094:15;:2;:13;;;:15::i;:::-;36090:570;;;36147:2;36130:43;;;36174:8;36184:4;36190:3;36195:7;36204:4;36130:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;36126:523;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;36522:6;36515:14;;;;;;;;;;;:::i;:::-;;;;;;;;36126:523;;;36571:62;;;;;;;;;;:::i;:::-;;;;;;;;36126:523;36303:48;;;36291:60;;;:8;:60;;;;36287:159;;36376:50;;;;;;;;;;:::i;:::-;;;;;;;;36287:159;36210:251;36090:570;35854:813;;;;;;:::o;30717:735::-;30909:1;30895:16;;:2;:16;;;;30887:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;30982:7;:14;30968:3;:10;:28;30960:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31054:16;31073:12;:10;:12::i;:::-;31054:31;;31098:66;31119:8;31137:1;31141:2;31145:3;31150:7;31159:4;31098:20;:66::i;:::-;31182:9;31177:103;31201:3;:10;31197:1;:14;31177:103;;;31258:7;31266:1;31258:10;;;;;;;;:::i;:::-;;;;;;;;31233:9;:17;31243:3;31247:1;31243:6;;;;;;;;:::i;:::-;;;;;;;;31233:17;;;;;;;;;;;:21;31251:2;31233:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;31213:3;;;;;:::i;:::-;;;;31177:103;;;;31333:2;31297:53;;31329:1;31297:53;;31311:8;31297:53;;;31337:3;31342:7;31297:53;;;;;;;:::i;:::-;;;;;;;;31363:81;31399:8;31417:1;31421:2;31425:3;31430:7;31439:4;31363:35;:81::i;:::-;30876:576;30717:735;;;;:::o;29792:569::-;29959:1;29945:16;;:2;:16;;;;29937:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;30012:16;30031:12;:10;:12::i;:::-;30012:31;;30056:102;30077:8;30095:1;30099:2;30103:21;30121:2;30103:17;:21::i;:::-;30126:25;30144:6;30126:17;:25::i;:::-;30153:4;30056:20;:102::i;:::-;30192:6;30171:9;:13;30181:2;30171:13;;;;;;;;;;;:17;30185:2;30171:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;30251:2;30214:52;;30247:1;30214:52;;30229:8;30214:52;;;30255:2;30259:6;30214:52;;;;;;;:::i;:::-;;;;;;;;30279:74;30310:8;30328:1;30332:2;30336;30340:6;30348:4;30279:30;:74::i;:::-;29926:435;29792:569;;;;:::o;36675:198::-;36741:16;36770:22;36809:1;36795:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36770:41;;36833:7;36822:5;36828:1;36822:8;;;;;;;;:::i;:::-;;;;;;;:18;;;;;36860:5;36853:12;;;36675:198;;;:::o;35102:744::-;35317:15;:2;:13;;;:15::i;:::-;35313:526;;;35370:2;35353:38;;;35392:8;35402:4;35408:2;35412:6;35420:4;35353:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;35349:479;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;35701:6;35694:14;;;;;;;;;;;:::i;:::-;;;;;;;;35349:479;;;35750:62;;;;;;;;;;:::i;:::-;;;;;;;;35349:479;35487:43;;;35475:55;;;:8;:55;;;;35471:154;;35555:50;;;;;;;;;;:::i;:::-;;;;;;;;35471:154;35426:214;35313:526;35102:744;;;;;;:::o;4656:326::-;4716:4;4973:1;4951:7;:19;;;:23;4944:30;;4656:326;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;769:::-;865:5;890:81;906:64;963:6;906:64;:::i;:::-;890:81;:::i;:::-;881:90;;991:5;1020:6;1013:5;1006:21;1054:4;1047:5;1043:16;1036:23;;1080:6;1130:3;1122:4;1114:6;1110:17;1105:3;1101:27;1098:36;1095:143;;;1149:79;;:::i;:::-;1095:143;1262:1;1247:238;1272:6;1269:1;1266:13;1247:238;;;1340:3;1369:37;1402:3;1390:10;1369:37;:::i;:::-;1364:3;1357:50;1436:4;1431:3;1427:14;1420:21;;1470:4;1465:3;1461:14;1454:21;;1307:178;1294:1;1291;1287:9;1282:14;;1247:238;;;1251:14;871:620;;769:722;;;;;:::o;1497:410::-;1574:5;1599:65;1615:48;1656:6;1615:48;:::i;:::-;1599:65;:::i;:::-;1590:74;;1687:6;1680:5;1673:21;1725:4;1718:5;1714:16;1763:3;1754:6;1749:3;1745:16;1742:25;1739:112;;;1770:79;;:::i;:::-;1739:112;1860:41;1894:6;1889:3;1884;1860:41;:::i;:::-;1580:327;1497:410;;;;;:::o;1913:412::-;1991:5;2016:66;2032:49;2074:6;2032:49;:::i;:::-;2016:66;:::i;:::-;2007:75;;2105:6;2098:5;2091:21;2143:4;2136:5;2132:16;2181:3;2172:6;2167:3;2163:16;2160:25;2157:112;;;2188:79;;:::i;:::-;2157:112;2278:41;2312:6;2307:3;2302;2278:41;:::i;:::-;1997:328;1913:412;;;;;:::o;2331:139::-;2377:5;2415:6;2402:20;2393:29;;2431:33;2458:5;2431:33;:::i;:::-;2331:139;;;;:::o;2493:370::-;2564:5;2613:3;2606:4;2598:6;2594:17;2590:27;2580:122;;2621:79;;:::i;:::-;2580:122;2738:6;2725:20;2763:94;2853:3;2845:6;2838:4;2830:6;2826:17;2763:94;:::i;:::-;2754:103;;2570:293;2493:370;;;;:::o;2886:::-;2957:5;3006:3;2999:4;2991:6;2987:17;2983:27;2973:122;;3014:79;;:::i;:::-;2973:122;3131:6;3118:20;3156:94;3246:3;3238:6;3231:4;3223:6;3219:17;3156:94;:::i;:::-;3147:103;;2963:293;2886:370;;;;:::o;3262:133::-;3305:5;3343:6;3330:20;3321:29;;3359:30;3383:5;3359:30;:::i;:::-;3262:133;;;;:::o;3401:137::-;3446:5;3484:6;3471:20;3462:29;;3500:32;3526:5;3500:32;:::i;:::-;3401:137;;;;:::o;3544:141::-;3600:5;3631:6;3625:13;3616:22;;3647:32;3673:5;3647:32;:::i;:::-;3544:141;;;;:::o;3704:338::-;3759:5;3808:3;3801:4;3793:6;3789:17;3785:27;3775:122;;3816:79;;:::i;:::-;3775:122;3933:6;3920:20;3958:78;4032:3;4024:6;4017:4;4009:6;4005:17;3958:78;:::i;:::-;3949:87;;3765:277;3704:338;;;;:::o;4062:340::-;4118:5;4167:3;4160:4;4152:6;4148:17;4144:27;4134:122;;4175:79;;:::i;:::-;4134:122;4292:6;4279:20;4317:79;4392:3;4384:6;4377:4;4369:6;4365:17;4317:79;:::i;:::-;4308:88;;4124:278;4062:340;;;;:::o;4408:139::-;4454:5;4492:6;4479:20;4470:29;;4508:33;4535:5;4508:33;:::i;:::-;4408:139;;;;:::o;4553:137::-;4598:5;4636:6;4623:20;4614:29;;4652:32;4678:5;4652:32;:::i;:::-;4553:137;;;;:::o;4696:329::-;4755:6;4804:2;4792:9;4783:7;4779:23;4775:32;4772:119;;;4810:79;;:::i;:::-;4772:119;4930:1;4955:53;5000:7;4991:6;4980:9;4976:22;4955:53;:::i;:::-;4945:63;;4901:117;4696:329;;;;:::o;5031:474::-;5099:6;5107;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5253:117;5409:2;5435:53;5480:7;5471:6;5460:9;5456:22;5435:53;:::i;:::-;5425:63;;5380:118;5031:474;;;;;:::o;5511:1509::-;5665:6;5673;5681;5689;5697;5746:3;5734:9;5725:7;5721:23;5717:33;5714:120;;;5753:79;;:::i;:::-;5714:120;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;6000:2;6026:53;6071:7;6062:6;6051:9;6047:22;6026:53;:::i;:::-;6016:63;;5971:118;6156:2;6145:9;6141:18;6128:32;6187:18;6179:6;6176:30;6173:117;;;6209:79;;:::i;:::-;6173:117;6314:78;6384:7;6375:6;6364:9;6360:22;6314:78;:::i;:::-;6304:88;;6099:303;6469:2;6458:9;6454:18;6441:32;6500:18;6492:6;6489:30;6486:117;;;6522:79;;:::i;:::-;6486:117;6627:78;6697:7;6688:6;6677:9;6673:22;6627:78;:::i;:::-;6617:88;;6412:303;6782:3;6771:9;6767:19;6754:33;6814:18;6806:6;6803:30;6800:117;;;6836:79;;:::i;:::-;6800:117;6941:62;6995:7;6986:6;6975:9;6971:22;6941:62;:::i;:::-;6931:72;;6725:288;5511:1509;;;;;;;;:::o;7026:1089::-;7130:6;7138;7146;7154;7162;7211:3;7199:9;7190:7;7186:23;7182:33;7179:120;;;7218:79;;:::i;:::-;7179:120;7338:1;7363:53;7408:7;7399:6;7388:9;7384:22;7363:53;:::i;:::-;7353:63;;7309:117;7465:2;7491:53;7536:7;7527:6;7516:9;7512:22;7491:53;:::i;:::-;7481:63;;7436:118;7593:2;7619:53;7664:7;7655:6;7644:9;7640:22;7619:53;:::i;:::-;7609:63;;7564:118;7721:2;7747:53;7792:7;7783:6;7772:9;7768:22;7747:53;:::i;:::-;7737:63;;7692:118;7877:3;7866:9;7862:19;7849:33;7909:18;7901:6;7898:30;7895:117;;;7931:79;;:::i;:::-;7895:117;8036:62;8090:7;8081:6;8070:9;8066:22;8036:62;:::i;:::-;8026:72;;7820:288;7026:1089;;;;;;;;:::o;8121:468::-;8186:6;8194;8243:2;8231:9;8222:7;8218:23;8214:32;8211:119;;;8249:79;;:::i;:::-;8211:119;8369:1;8394:53;8439:7;8430:6;8419:9;8415:22;8394:53;:::i;:::-;8384:63;;8340:117;8496:2;8522:50;8564:7;8555:6;8544:9;8540:22;8522:50;:::i;:::-;8512:60;;8467:115;8121:468;;;;;:::o;8595:474::-;8663:6;8671;8720:2;8708:9;8699:7;8695:23;8691:32;8688:119;;;8726:79;;:::i;:::-;8688:119;8846:1;8871:53;8916:7;8907:6;8896:9;8892:22;8871:53;:::i;:::-;8861:63;;8817:117;8973:2;8999:53;9044:7;9035:6;9024:9;9020:22;8999:53;:::i;:::-;8989:63;;8944:118;8595:474;;;;;:::o;9075:539::-;9159:6;9208:2;9196:9;9187:7;9183:23;9179:32;9176:119;;;9214:79;;:::i;:::-;9176:119;9362:1;9351:9;9347:17;9334:31;9392:18;9384:6;9381:30;9378:117;;;9414:79;;:::i;:::-;9378:117;9519:78;9589:7;9580:6;9569:9;9565:22;9519:78;:::i;:::-;9509:88;;9305:302;9075:539;;;;:::o;9620:894::-;9738:6;9746;9795:2;9783:9;9774:7;9770:23;9766:32;9763:119;;;9801:79;;:::i;:::-;9763:119;9949:1;9938:9;9934:17;9921:31;9979:18;9971:6;9968:30;9965:117;;;10001:79;;:::i;:::-;9965:117;10106:78;10176:7;10167:6;10156:9;10152:22;10106:78;:::i;:::-;10096:88;;9892:302;10261:2;10250:9;10246:18;10233:32;10292:18;10284:6;10281:30;10278:117;;;10314:79;;:::i;:::-;10278:117;10419:78;10489:7;10480:6;10469:9;10465:22;10419:78;:::i;:::-;10409:88;;10204:303;9620:894;;;;;:::o;10520:327::-;10578:6;10627:2;10615:9;10606:7;10602:23;10598:32;10595:119;;;10633:79;;:::i;:::-;10595:119;10753:1;10778:52;10822:7;10813:6;10802:9;10798:22;10778:52;:::i;:::-;10768:62;;10724:116;10520:327;;;;:::o;10853:349::-;10922:6;10971:2;10959:9;10950:7;10946:23;10942:32;10939:119;;;10977:79;;:::i;:::-;10939:119;11097:1;11122:63;11177:7;11168:6;11157:9;11153:22;11122:63;:::i;:::-;11112:73;;11068:127;10853:349;;;;:::o;11208:509::-;11277:6;11326:2;11314:9;11305:7;11301:23;11297:32;11294:119;;;11332:79;;:::i;:::-;11294:119;11480:1;11469:9;11465:17;11452:31;11510:18;11502:6;11499:30;11496:117;;;11532:79;;:::i;:::-;11496:117;11637:63;11692:7;11683:6;11672:9;11668:22;11637:63;:::i;:::-;11627:73;;11423:287;11208:509;;;;:::o;11723:329::-;11782:6;11831:2;11819:9;11810:7;11806:23;11802:32;11799:119;;;11837:79;;:::i;:::-;11799:119;11957:1;11982:53;12027:7;12018:6;12007:9;12003:22;11982:53;:::i;:::-;11972:63;;11928:117;11723:329;;;;:::o;12058:327::-;12116:6;12165:2;12153:9;12144:7;12140:23;12136:32;12133:119;;;12171:79;;:::i;:::-;12133:119;12291:1;12316:52;12360:7;12351:6;12340:9;12336:22;12316:52;:::i;:::-;12306:62;;12262:116;12058:327;;;;:::o;12391:179::-;12460:10;12481:46;12523:3;12515:6;12481:46;:::i;:::-;12559:4;12554:3;12550:14;12536:28;;12391:179;;;;:::o;12576:118::-;12663:24;12681:5;12663:24;:::i;:::-;12658:3;12651:37;12576:118;;:::o;12730:732::-;12849:3;12878:54;12926:5;12878:54;:::i;:::-;12948:86;13027:6;13022:3;12948:86;:::i;:::-;12941:93;;13058:56;13108:5;13058:56;:::i;:::-;13137:7;13168:1;13153:284;13178:6;13175:1;13172:13;13153:284;;;13254:6;13248:13;13281:63;13340:3;13325:13;13281:63;:::i;:::-;13274:70;;13367:60;13420:6;13367:60;:::i;:::-;13357:70;;13213:224;13200:1;13197;13193:9;13188:14;;13153:284;;;13157:14;13453:3;13446:10;;12854:608;;;12730:732;;;;:::o;13468:109::-;13549:21;13564:5;13549:21;:::i;:::-;13544:3;13537:34;13468:109;;:::o;13583:360::-;13669:3;13697:38;13729:5;13697:38;:::i;:::-;13751:70;13814:6;13809:3;13751:70;:::i;:::-;13744:77;;13830:52;13875:6;13870:3;13863:4;13856:5;13852:16;13830:52;:::i;:::-;13907:29;13929:6;13907:29;:::i;:::-;13902:3;13898:39;13891:46;;13673:270;13583:360;;;;:::o;13949:364::-;14037:3;14065:39;14098:5;14065:39;:::i;:::-;14120:71;14184:6;14179:3;14120:71;:::i;:::-;14113:78;;14200:52;14245:6;14240:3;14233:4;14226:5;14222:16;14200:52;:::i;:::-;14277:29;14299:6;14277:29;:::i;:::-;14272:3;14268:39;14261:46;;14041:272;13949:364;;;;:::o;14319:366::-;14461:3;14482:67;14546:2;14541:3;14482:67;:::i;:::-;14475:74;;14558:93;14647:3;14558:93;:::i;:::-;14676:2;14671:3;14667:12;14660:19;;14319:366;;;:::o;14691:::-;14833:3;14854:67;14918:2;14913:3;14854:67;:::i;:::-;14847:74;;14930:93;15019:3;14930:93;:::i;:::-;15048:2;15043:3;15039:12;15032:19;;14691:366;;;:::o;15063:::-;15205:3;15226:67;15290:2;15285:3;15226:67;:::i;:::-;15219:74;;15302:93;15391:3;15302:93;:::i;:::-;15420:2;15415:3;15411:12;15404:19;;15063:366;;;:::o;15435:::-;15577:3;15598:67;15662:2;15657:3;15598:67;:::i;:::-;15591:74;;15674:93;15763:3;15674:93;:::i;:::-;15792:2;15787:3;15783:12;15776:19;;15435:366;;;:::o;15807:::-;15949:3;15970:67;16034:2;16029:3;15970:67;:::i;:::-;15963:74;;16046:93;16135:3;16046:93;:::i;:::-;16164:2;16159:3;16155:12;16148:19;;15807:366;;;:::o;16179:::-;16321:3;16342:67;16406:2;16401:3;16342:67;:::i;:::-;16335:74;;16418:93;16507:3;16418:93;:::i;:::-;16536:2;16531:3;16527:12;16520:19;;16179:366;;;:::o;16551:::-;16693:3;16714:67;16778:2;16773:3;16714:67;:::i;:::-;16707:74;;16790:93;16879:3;16790:93;:::i;:::-;16908:2;16903:3;16899:12;16892:19;;16551:366;;;:::o;16923:::-;17065:3;17086:67;17150:2;17145:3;17086:67;:::i;:::-;17079:74;;17162:93;17251:3;17162:93;:::i;:::-;17280:2;17275:3;17271:12;17264:19;;16923:366;;;:::o;17295:::-;17437:3;17458:67;17522:2;17517:3;17458:67;:::i;:::-;17451:74;;17534:93;17623:3;17534:93;:::i;:::-;17652:2;17647:3;17643:12;17636:19;;17295:366;;;:::o;17667:::-;17809:3;17830:67;17894:2;17889:3;17830:67;:::i;:::-;17823:74;;17906:93;17995:3;17906:93;:::i;:::-;18024:2;18019:3;18015:12;18008:19;;17667:366;;;:::o;18039:::-;18181:3;18202:67;18266:2;18261:3;18202:67;:::i;:::-;18195:74;;18278:93;18367:3;18278:93;:::i;:::-;18396:2;18391:3;18387:12;18380:19;;18039:366;;;:::o;18411:::-;18553:3;18574:67;18638:2;18633:3;18574:67;:::i;:::-;18567:74;;18650:93;18739:3;18650:93;:::i;:::-;18768:2;18763:3;18759:12;18752:19;;18411:366;;;:::o;18783:::-;18925:3;18946:67;19010:2;19005:3;18946:67;:::i;:::-;18939:74;;19022:93;19111:3;19022:93;:::i;:::-;19140:2;19135:3;19131:12;19124:19;;18783:366;;;:::o;19155:::-;19297:3;19318:67;19382:2;19377:3;19318:67;:::i;:::-;19311:74;;19394:93;19483:3;19394:93;:::i;:::-;19512:2;19507:3;19503:12;19496:19;;19155:366;;;:::o;19527:::-;19669:3;19690:67;19754:2;19749:3;19690:67;:::i;:::-;19683:74;;19766:93;19855:3;19766:93;:::i;:::-;19884:2;19879:3;19875:12;19868:19;;19527:366;;;:::o;19899:::-;20041:3;20062:67;20126:2;20121:3;20062:67;:::i;:::-;20055:74;;20138:93;20227:3;20138:93;:::i;:::-;20256:2;20251:3;20247:12;20240:19;;19899:366;;;:::o;20271:::-;20413:3;20434:67;20498:2;20493:3;20434:67;:::i;:::-;20427:74;;20510:93;20599:3;20510:93;:::i;:::-;20628:2;20623:3;20619:12;20612:19;;20271:366;;;:::o;20643:108::-;20720:24;20738:5;20720:24;:::i;:::-;20715:3;20708:37;20643:108;;:::o;20757:118::-;20844:24;20862:5;20844:24;:::i;:::-;20839:3;20832:37;20757:118;;:::o;20881:115::-;20966:23;20983:5;20966:23;:::i;:::-;20961:3;20954:36;20881:115;;:::o;21002:222::-;21095:4;21133:2;21122:9;21118:18;21110:26;;21146:71;21214:1;21203:9;21199:17;21190:6;21146:71;:::i;:::-;21002:222;;;;:::o;21230:1053::-;21553:4;21591:3;21580:9;21576:19;21568:27;;21605:71;21673:1;21662:9;21658:17;21649:6;21605:71;:::i;:::-;21686:72;21754:2;21743:9;21739:18;21730:6;21686:72;:::i;:::-;21805:9;21799:4;21795:20;21790:2;21779:9;21775:18;21768:48;21833:108;21936:4;21927:6;21833:108;:::i;:::-;21825:116;;21988:9;21982:4;21978:20;21973:2;21962:9;21958:18;21951:48;22016:108;22119:4;22110:6;22016:108;:::i;:::-;22008:116;;22172:9;22166:4;22162:20;22156:3;22145:9;22141:19;22134:49;22200:76;22271:4;22262:6;22200:76;:::i;:::-;22192:84;;21230:1053;;;;;;;;:::o;22289:751::-;22512:4;22550:3;22539:9;22535:19;22527:27;;22564:71;22632:1;22621:9;22617:17;22608:6;22564:71;:::i;:::-;22645:72;22713:2;22702:9;22698:18;22689:6;22645:72;:::i;:::-;22727;22795:2;22784:9;22780:18;22771:6;22727:72;:::i;:::-;22809;22877:2;22866:9;22862:18;22853:6;22809:72;:::i;:::-;22929:9;22923:4;22919:20;22913:3;22902:9;22898:19;22891:49;22957:76;23028:4;23019:6;22957:76;:::i;:::-;22949:84;;22289:751;;;;;;;;:::o;23046:373::-;23189:4;23227:2;23216:9;23212:18;23204:26;;23276:9;23270:4;23266:20;23262:1;23251:9;23247:17;23240:47;23304:108;23407:4;23398:6;23304:108;:::i;:::-;23296:116;;23046:373;;;;:::o;23425:634::-;23646:4;23684:2;23673:9;23669:18;23661:26;;23733:9;23727:4;23723:20;23719:1;23708:9;23704:17;23697:47;23761:108;23864:4;23855:6;23761:108;:::i;:::-;23753:116;;23916:9;23910:4;23906:20;23901:2;23890:9;23886:18;23879:48;23944:108;24047:4;24038:6;23944:108;:::i;:::-;23936:116;;23425:634;;;;;:::o;24065:210::-;24152:4;24190:2;24179:9;24175:18;24167:26;;24203:65;24265:1;24254:9;24250:17;24241:6;24203:65;:::i;:::-;24065:210;;;;:::o;24281:313::-;24394:4;24432:2;24421:9;24417:18;24409:26;;24481:9;24475:4;24471:20;24467:1;24456:9;24452:17;24445:47;24509:78;24582:4;24573:6;24509:78;:::i;:::-;24501:86;;24281:313;;;;:::o;24600:419::-;24766:4;24804:2;24793:9;24789:18;24781:26;;24853:9;24847:4;24843:20;24839:1;24828:9;24824:17;24817:47;24881:131;25007:4;24881:131;:::i;:::-;24873:139;;24600:419;;;:::o;25025:::-;25191:4;25229:2;25218:9;25214:18;25206:26;;25278:9;25272:4;25268:20;25264:1;25253:9;25249:17;25242:47;25306:131;25432:4;25306:131;:::i;:::-;25298:139;;25025:419;;;:::o;25450:::-;25616:4;25654:2;25643:9;25639:18;25631:26;;25703:9;25697:4;25693:20;25689:1;25678:9;25674:17;25667:47;25731:131;25857:4;25731:131;:::i;:::-;25723:139;;25450:419;;;:::o;25875:::-;26041:4;26079:2;26068:9;26064:18;26056:26;;26128:9;26122:4;26118:20;26114:1;26103:9;26099:17;26092:47;26156:131;26282:4;26156:131;:::i;:::-;26148:139;;25875:419;;;:::o;26300:::-;26466:4;26504:2;26493:9;26489:18;26481:26;;26553:9;26547:4;26543:20;26539:1;26528:9;26524:17;26517:47;26581:131;26707:4;26581:131;:::i;:::-;26573:139;;26300:419;;;:::o;26725:::-;26891:4;26929:2;26918:9;26914:18;26906:26;;26978:9;26972:4;26968:20;26964:1;26953:9;26949:17;26942:47;27006:131;27132:4;27006:131;:::i;:::-;26998:139;;26725:419;;;:::o;27150:::-;27316:4;27354:2;27343:9;27339:18;27331:26;;27403:9;27397:4;27393:20;27389:1;27378:9;27374:17;27367:47;27431:131;27557:4;27431:131;:::i;:::-;27423:139;;27150:419;;;:::o;27575:::-;27741:4;27779:2;27768:9;27764:18;27756:26;;27828:9;27822:4;27818:20;27814:1;27803:9;27799:17;27792:47;27856:131;27982:4;27856:131;:::i;:::-;27848:139;;27575:419;;;:::o;28000:::-;28166:4;28204:2;28193:9;28189:18;28181:26;;28253:9;28247:4;28243:20;28239:1;28228:9;28224:17;28217:47;28281:131;28407:4;28281:131;:::i;:::-;28273:139;;28000:419;;;:::o;28425:::-;28591:4;28629:2;28618:9;28614:18;28606:26;;28678:9;28672:4;28668:20;28664:1;28653:9;28649:17;28642:47;28706:131;28832:4;28706:131;:::i;:::-;28698:139;;28425:419;;;:::o;28850:::-;29016:4;29054:2;29043:9;29039:18;29031:26;;29103:9;29097:4;29093:20;29089:1;29078:9;29074:17;29067:47;29131:131;29257:4;29131:131;:::i;:::-;29123:139;;28850:419;;;:::o;29275:::-;29441:4;29479:2;29468:9;29464:18;29456:26;;29528:9;29522:4;29518:20;29514:1;29503:9;29499:17;29492:47;29556:131;29682:4;29556:131;:::i;:::-;29548:139;;29275:419;;;:::o;29700:::-;29866:4;29904:2;29893:9;29889:18;29881:26;;29953:9;29947:4;29943:20;29939:1;29928:9;29924:17;29917:47;29981:131;30107:4;29981:131;:::i;:::-;29973:139;;29700:419;;;:::o;30125:::-;30291:4;30329:2;30318:9;30314:18;30306:26;;30378:9;30372:4;30368:20;30364:1;30353:9;30349:17;30342:47;30406:131;30532:4;30406:131;:::i;:::-;30398:139;;30125:419;;;:::o;30550:::-;30716:4;30754:2;30743:9;30739:18;30731:26;;30803:9;30797:4;30793:20;30789:1;30778:9;30774:17;30767:47;30831:131;30957:4;30831:131;:::i;:::-;30823:139;;30550:419;;;:::o;30975:::-;31141:4;31179:2;31168:9;31164:18;31156:26;;31228:9;31222:4;31218:20;31214:1;31203:9;31199:17;31192:47;31256:131;31382:4;31256:131;:::i;:::-;31248:139;;30975:419;;;:::o;31400:::-;31566:4;31604:2;31593:9;31589:18;31581:26;;31653:9;31647:4;31643:20;31639:1;31628:9;31624:17;31617:47;31681:131;31807:4;31681:131;:::i;:::-;31673:139;;31400:419;;;:::o;31825:222::-;31918:4;31956:2;31945:9;31941:18;31933:26;;31969:71;32037:1;32026:9;32022:17;32013:6;31969:71;:::i;:::-;31825:222;;;;:::o;32053:332::-;32174:4;32212:2;32201:9;32197:18;32189:26;;32225:71;32293:1;32282:9;32278:17;32269:6;32225:71;:::i;:::-;32306:72;32374:2;32363:9;32359:18;32350:6;32306:72;:::i;:::-;32053:332;;;;;:::o;32391:218::-;32482:4;32520:2;32509:9;32505:18;32497:26;;32533:69;32599:1;32588:9;32584:17;32575:6;32533:69;:::i;:::-;32391:218;;;;:::o;32615:129::-;32649:6;32676:20;;:::i;:::-;32666:30;;32705:33;32733:4;32725:6;32705:33;:::i;:::-;32615:129;;;:::o;32750:75::-;32783:6;32816:2;32810:9;32800:19;;32750:75;:::o;32831:311::-;32908:4;32998:18;32990:6;32987:30;32984:56;;;33020:18;;:::i;:::-;32984:56;33070:4;33062:6;33058:17;33050:25;;33130:4;33124;33120:15;33112:23;;32831:311;;;:::o;33148:::-;33225:4;33315:18;33307:6;33304:30;33301:56;;;33337:18;;:::i;:::-;33301:56;33387:4;33379:6;33375:17;33367:25;;33447:4;33441;33437:15;33429:23;;33148:311;;;:::o;33465:307::-;33526:4;33616:18;33608:6;33605:30;33602:56;;;33638:18;;:::i;:::-;33602:56;33676:29;33698:6;33676:29;:::i;:::-;33668:37;;33760:4;33754;33750:15;33742:23;;33465:307;;;:::o;33778:308::-;33840:4;33930:18;33922:6;33919:30;33916:56;;;33952:18;;:::i;:::-;33916:56;33990:29;34012:6;33990:29;:::i;:::-;33982:37;;34074:4;34068;34064:15;34056:23;;33778:308;;;:::o;34092:132::-;34159:4;34182:3;34174:11;;34212:4;34207:3;34203:14;34195:22;;34092:132;;;:::o;34230:114::-;34297:6;34331:5;34325:12;34315:22;;34230:114;;;:::o;34350:98::-;34401:6;34435:5;34429:12;34419:22;;34350:98;;;:::o;34454:99::-;34506:6;34540:5;34534:12;34524:22;;34454:99;;;:::o;34559:113::-;34629:4;34661;34656:3;34652:14;34644:22;;34559:113;;;:::o;34678:184::-;34777:11;34811:6;34806:3;34799:19;34851:4;34846:3;34842:14;34827:29;;34678:184;;;;:::o;34868:168::-;34951:11;34985:6;34980:3;34973:19;35025:4;35020:3;35016:14;35001:29;;34868:168;;;;:::o;35042:169::-;35126:11;35160:6;35155:3;35148:19;35200:4;35195:3;35191:14;35176:29;;35042:169;;;;:::o;35217:305::-;35257:3;35276:20;35294:1;35276:20;:::i;:::-;35271:25;;35310:20;35328:1;35310:20;:::i;:::-;35305:25;;35464:1;35396:66;35392:74;35389:1;35386:81;35383:107;;;35470:18;;:::i;:::-;35383:107;35514:1;35511;35507:9;35500:16;;35217:305;;;;:::o;35528:246::-;35567:3;35586:19;35603:1;35586:19;:::i;:::-;35581:24;;35619:19;35636:1;35619:19;:::i;:::-;35614:24;;35716:1;35704:10;35700:18;35697:1;35694:25;35691:51;;;35722:18;;:::i;:::-;35691:51;35766:1;35763;35759:9;35752:16;;35528:246;;;;:::o;35780:185::-;35820:1;35837:20;35855:1;35837:20;:::i;:::-;35832:25;;35871:20;35889:1;35871:20;:::i;:::-;35866:25;;35910:1;35900:35;;35915:18;;:::i;:::-;35900:35;35957:1;35954;35950:9;35945:14;;35780:185;;;;:::o;35971:348::-;36011:7;36034:20;36052:1;36034:20;:::i;:::-;36029:25;;36068:20;36086:1;36068:20;:::i;:::-;36063:25;;36256:1;36188:66;36184:74;36181:1;36178:81;36173:1;36166:9;36159:17;36155:105;36152:131;;;36263:18;;:::i;:::-;36152:131;36311:1;36308;36304:9;36293:20;;35971:348;;;;:::o;36325:191::-;36365:4;36385:20;36403:1;36385:20;:::i;:::-;36380:25;;36419:20;36437:1;36419:20;:::i;:::-;36414:25;;36458:1;36455;36452:8;36449:34;;;36463:18;;:::i;:::-;36449:34;36508:1;36505;36501:9;36493:17;;36325:191;;;;:::o;36522:188::-;36561:4;36581:19;36598:1;36581:19;:::i;:::-;36576:24;;36614:19;36631:1;36614:19;:::i;:::-;36609:24;;36652:1;36649;36646:8;36643:34;;;36657:18;;:::i;:::-;36643:34;36702:1;36699;36695:9;36687:17;;36522:188;;;;:::o;36716:96::-;36753:7;36782:24;36800:5;36782:24;:::i;:::-;36771:35;;36716:96;;;:::o;36818:90::-;36852:7;36895:5;36888:13;36881:21;36870:32;;36818:90;;;:::o;36914:149::-;36950:7;36990:66;36983:5;36979:78;36968:89;;36914:149;;;:::o;37069:126::-;37106:7;37146:42;37139:5;37135:54;37124:65;;37069:126;;;:::o;37201:77::-;37238:7;37267:5;37256:16;;37201:77;;;:::o;37284:93::-;37320:7;37360:10;37353:5;37349:22;37338:33;;37284:93;;;:::o;37383:154::-;37467:6;37462:3;37457;37444:30;37529:1;37520:6;37515:3;37511:16;37504:27;37383:154;;;:::o;37543:307::-;37611:1;37621:113;37635:6;37632:1;37629:13;37621:113;;;37720:1;37715:3;37711:11;37705:18;37701:1;37696:3;37692:11;37685:39;37657:2;37654:1;37650:10;37645:15;;37621:113;;;37752:6;37749:1;37746:13;37743:101;;;37832:1;37823:6;37818:3;37814:16;37807:27;37743:101;37592:258;37543:307;;;:::o;37856:320::-;37900:6;37937:1;37931:4;37927:12;37917:22;;37984:1;37978:4;37974:12;38005:18;37995:81;;38061:4;38053:6;38049:17;38039:27;;37995:81;38123:2;38115:6;38112:14;38092:18;38089:38;38086:84;;;38142:18;;:::i;:::-;38086:84;37907:269;37856:320;;;:::o;38182:281::-;38265:27;38287:4;38265:27;:::i;:::-;38257:6;38253:40;38395:6;38383:10;38380:22;38359:18;38347:10;38344:34;38341:62;38338:88;;;38406:18;;:::i;:::-;38338:88;38446:10;38442:2;38435:22;38225:238;38182:281;;:::o;38469:233::-;38508:3;38531:24;38549:5;38531:24;:::i;:::-;38522:33;;38577:66;38570:5;38567:77;38564:103;;;38647:18;;:::i;:::-;38564:103;38694:1;38687:5;38683:13;38676:20;;38469:233;;;:::o;38708:175::-;38746:3;38769:23;38786:5;38769:23;:::i;:::-;38760:32;;38814:10;38807:5;38804:21;38801:47;;;38828:18;;:::i;:::-;38801:47;38875:1;38868:5;38864:13;38857:20;;38708:175;;;:::o;38889:180::-;38937:77;38934:1;38927:88;39034:4;39031:1;39024:15;39058:4;39055:1;39048:15;39075:180;39123:77;39120:1;39113:88;39220:4;39217:1;39210:15;39244:4;39241:1;39234:15;39261:180;39309:77;39306:1;39299:88;39406:4;39403:1;39396:15;39430:4;39427:1;39420:15;39447:180;39495:77;39492:1;39485:88;39592:4;39589:1;39582:15;39616:4;39613:1;39606:15;39633:180;39681:77;39678:1;39671:88;39778:4;39775:1;39768:15;39802:4;39799:1;39792:15;39819:183;39854:3;39892:1;39874:16;39871:23;39868:128;;;39930:1;39927;39924;39909:23;39952:34;39983:1;39977:8;39952:34;:::i;:::-;39945:41;;39868:128;39819:183;:::o;40008:117::-;40117:1;40114;40107:12;40131:117;40240:1;40237;40230:12;40254:117;40363:1;40360;40353:12;40377:117;40486:1;40483;40476:12;40500:117;40609:1;40606;40599:12;40623:102;40664:6;40715:2;40711:7;40706:2;40699:5;40695:14;40691:28;40681:38;;40623:102;;;:::o;40731:106::-;40775:8;40824:5;40819:3;40815:15;40794:36;;40731:106;;;:::o;40843:239::-;40983:34;40979:1;40971:6;40967:14;40960:58;41052:22;41047:2;41039:6;41035:15;41028:47;40843:239;:::o;41088:227::-;41228:34;41224:1;41216:6;41212:14;41205:58;41297:10;41292:2;41284:6;41280:15;41273:35;41088:227;:::o;41321:230::-;41461:34;41457:1;41449:6;41445:14;41438:58;41530:13;41525:2;41517:6;41513:15;41506:38;41321:230;:::o;41557:225::-;41697:34;41693:1;41685:6;41681:14;41674:58;41766:8;41761:2;41753:6;41749:15;41742:33;41557:225;:::o;41788:228::-;41928:34;41924:1;41916:6;41912:14;41905:58;41997:11;41992:2;41984:6;41980:15;41973:36;41788:228;:::o;42022:176::-;42162:28;42158:1;42150:6;42146:14;42139:52;42022:176;:::o;42204:179::-;42344:31;42340:1;42332:6;42328:14;42321:55;42204:179;:::o;42389:167::-;42529:19;42525:1;42517:6;42513:14;42506:43;42389:167;:::o;42562:224::-;42702:34;42698:1;42690:6;42686:14;42679:58;42771:7;42766:2;42758:6;42754:15;42747:32;42562:224;:::o;42792:237::-;42932:34;42928:1;42920:6;42916:14;42909:58;43001:20;42996:2;42988:6;42984:15;42977:45;42792:237;:::o;43035:229::-;43175:34;43171:1;43163:6;43159:14;43152:58;43244:12;43239:2;43231:6;43227:15;43220:37;43035:229;:::o;43270:228::-;43410:34;43406:1;43398:6;43394:14;43387:58;43479:11;43474:2;43466:6;43462:15;43455:36;43270:228;:::o;43504:182::-;43644:34;43640:1;43632:6;43628:14;43621:58;43504:182;:::o;43692:228::-;43832:34;43828:1;43820:6;43816:14;43809:58;43901:11;43896:2;43888:6;43884:15;43877:36;43692:228;:::o;43926:::-;44066:34;44062:1;44054:6;44050:14;44043:58;44135:11;44130:2;44122:6;44118:15;44111:36;43926:228;:::o;44160:227::-;44300:34;44296:1;44288:6;44284:14;44277:58;44369:10;44364:2;44356:6;44352:15;44345:35;44160:227;:::o;44393:220::-;44533:34;44529:1;44521:6;44517:14;44510:58;44602:3;44597:2;44589:6;44585:15;44578:28;44393:220;:::o;44619:711::-;44658:3;44696:4;44678:16;44675:26;44672:39;;;44704:5;;44672:39;44733:20;;:::i;:::-;44808:1;44790:16;44786:24;44783:1;44777:4;44762:49;44841:4;44835:11;44940:16;44933:4;44925:6;44921:17;44918:39;44885:18;44877:6;44874:30;44858:113;44855:146;;;44986:5;;;;44855:146;45032:6;45026:4;45022:17;45068:3;45062:10;45095:18;45087:6;45084:30;45081:43;;;45117:5;;;;;;45081:43;45165:6;45158:4;45153:3;45149:14;45145:27;45224:1;45206:16;45202:24;45196:4;45192:35;45187:3;45184:44;45181:57;;;45231:5;;;;;;;45181:57;45248;45296:6;45290:4;45286:17;45278:6;45274:30;45268:4;45248:57;:::i;:::-;45321:3;45314:10;;44662:668;;;;;44619:711;;:::o;45336:122::-;45409:24;45427:5;45409:24;:::i;:::-;45402:5;45399:35;45389:63;;45448:1;45445;45438:12;45389:63;45336:122;:::o;45464:116::-;45534:21;45549:5;45534:21;:::i;:::-;45527:5;45524:32;45514:60;;45570:1;45567;45560:12;45514:60;45464:116;:::o;45586:120::-;45658:23;45675:5;45658:23;:::i;:::-;45651:5;45648:34;45638:62;;45696:1;45693;45686:12;45638:62;45586:120;:::o;45712:122::-;45785:24;45803:5;45785:24;:::i;:::-;45778:5;45775:35;45765:63;;45824:1;45821;45814:12;45765:63;45712:122;:::o;45840:120::-;45912:23;45929:5;45912:23;:::i;:::-;45905:5;45902:34;45892:62;;45950:1;45947;45940:12;45892:62;45840:120;:::o
Swarm Source
ipfs://eef3aa3eb3c9fe77e9b4480797f4b8f630fc2ae3f8f1f7c5805aeeea14ebc649
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.