From 53fc6cfe4174e86d8eae364d368c7f4045034948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ti=E1=BA=BFn=20Nguy=E1=BB=85n=20Kh=E1=BA=AFc?= Date: Mon, 19 Jun 2023 15:11:58 +1200 Subject: [PATCH 1/3] feat: psp34 support --- apps/web/src/domains/nfts/core.ts | 3 +- apps/web/src/domains/nfts/worker.ts | 4 + .../web/src/routes/portfolio/collectibles.tsx | 5 +- .../generated/gql/rmrk1/fragment-masking.ts | 50 - packages/nft/generated/gql/rmrk1/gql.ts | 50 - packages/nft/generated/gql/rmrk1/graphql.ts | 5737 ----------------- packages/nft/generated/gql/rmrk1/index.ts | 2 - .../generated/ink/build-extrinsic/psp34.ts | 186 + .../nft/generated/ink/constructors/psp34.ts | 45 + .../nft/generated/ink/contract-info/psp34.ts | 2 + packages/nft/generated/ink/contracts/psp34.ts | 102 + packages/nft/generated/ink/data/psp34.json | 462 ++ .../nft/generated/ink/event-data/psp34.json | 1 + .../nft/generated/ink/event-types/psp34.ts | 2 + packages/nft/generated/ink/events/psp34.ts | 38 + .../nft/generated/ink/mixed-methods/psp34.ts | 304 + packages/nft/generated/ink/query/psp34.ts | 314 + packages/nft/generated/ink/shared/utils.ts | 40 + .../generated/ink/tx-sign-and-send/psp34.ts | 266 + .../generated/ink/types-arguments/psp34.ts | 91 + .../nft/generated/ink/types-returns/psp34.ts | 92 + packages/nft/package.json | 5 +- packages/nft/scripts/codegen.sh | 14 + packages/nft/src/generators/evm/index.ts | 21 +- packages/nft/src/generators/index.ts | 1 + packages/nft/src/generators/ink/chains.ts | 62 + .../generators/ink/contracts/psp34.contract | 1 + .../src/generators/ink/contracts/psp34.json | 1500 +++++ packages/nft/src/generators/ink/index.ts | 1 + packages/nft/src/generators/ink/psp34.ts | 102 + packages/nft/src/generators/orml/index.ts | 18 +- packages/nft/src/generators/orml/orml.ts | 5 +- packages/nft/src/generators/rmrk2.ts | 3 +- packages/nft/src/generators/statemine.ts | 7 +- packages/nft/src/types.ts | 11 +- packages/nft/tsconfig.codegen.json | 9 +- packages/tsconfig/library.json | 3 +- yarn.lock | 344 +- 38 files changed, 4024 insertions(+), 5879 deletions(-) delete mode 100644 packages/nft/generated/gql/rmrk1/fragment-masking.ts delete mode 100644 packages/nft/generated/gql/rmrk1/gql.ts delete mode 100644 packages/nft/generated/gql/rmrk1/graphql.ts delete mode 100644 packages/nft/generated/gql/rmrk1/index.ts create mode 100644 packages/nft/generated/ink/build-extrinsic/psp34.ts create mode 100644 packages/nft/generated/ink/constructors/psp34.ts create mode 100644 packages/nft/generated/ink/contract-info/psp34.ts create mode 100644 packages/nft/generated/ink/contracts/psp34.ts create mode 100644 packages/nft/generated/ink/data/psp34.json create mode 100644 packages/nft/generated/ink/event-data/psp34.json create mode 100644 packages/nft/generated/ink/event-types/psp34.ts create mode 100644 packages/nft/generated/ink/events/psp34.ts create mode 100644 packages/nft/generated/ink/mixed-methods/psp34.ts create mode 100644 packages/nft/generated/ink/query/psp34.ts create mode 100644 packages/nft/generated/ink/shared/utils.ts create mode 100644 packages/nft/generated/ink/tx-sign-and-send/psp34.ts create mode 100644 packages/nft/generated/ink/types-arguments/psp34.ts create mode 100644 packages/nft/generated/ink/types-returns/psp34.ts create mode 100644 packages/nft/scripts/codegen.sh create mode 100644 packages/nft/src/generators/ink/chains.ts create mode 100644 packages/nft/src/generators/ink/contracts/psp34.contract create mode 100644 packages/nft/src/generators/ink/contracts/psp34.json create mode 100644 packages/nft/src/generators/ink/index.ts create mode 100644 packages/nft/src/generators/ink/psp34.ts diff --git a/apps/web/src/domains/nfts/core.ts b/apps/web/src/domains/nfts/core.ts index 1284382e5..346392301 100644 --- a/apps/web/src/domains/nfts/core.ts +++ b/apps/web/src/domains/nfts/core.ts @@ -17,7 +17,7 @@ const _nftsState = atomFamily({ key: '_Nfts', effects: (address: string) => [ ({ setSelf }) => { - const batchSize = 100 + const batchSize = 50 let initialResolve = (_value: BaseNft[]) => {} let initialReject = (_reason?: any) => {} @@ -42,6 +42,7 @@ const _nftsState = atomFamily({ const nfts = nftsOrErrors.filter((nft): nft is BaseNft => !('error' in nft)) errors.forEach(error => Sentry.captureException(error)) + errors.forEach(console.error) return { nfts: [...prev.nfts, ...nfts], errors: [...prev.errors, ...errors] } }, diff --git a/apps/web/src/domains/nfts/worker.ts b/apps/web/src/domains/nfts/worker.ts index 9c4fc10a0..7dfe275a6 100644 --- a/apps/web/src/domains/nfts/worker.ts +++ b/apps/web/src/domains/nfts/worker.ts @@ -1,7 +1,9 @@ import { createAcalaNftAsyncGenerator, + createArtZeroNftsAsyncGenerator, createBitCountryNftAsyncGenerator, createEvmNftAsyncGenerator, + createParasNftsAsyncGenerator, createRmrk2NftAsyncGenerator, createStatemineNftAsyncGenerator, createUniqueNetworkNftAsyncGenerator, @@ -17,7 +19,9 @@ const subscribeNfts = (address: string, options: { batchSize: number }) => ? [createEvmNftAsyncGenerator] : [ createAcalaNftAsyncGenerator, + createArtZeroNftsAsyncGenerator, createBitCountryNftAsyncGenerator, + createParasNftsAsyncGenerator, createRmrk2NftAsyncGenerator, createStatemineNftAsyncGenerator, createUniqueNetworkNftAsyncGenerator, diff --git a/apps/web/src/routes/portfolio/collectibles.tsx b/apps/web/src/routes/portfolio/collectibles.tsx index 7d0d9a8f4..1ebe30ddd 100644 --- a/apps/web/src/routes/portfolio/collectibles.tsx +++ b/apps/web/src/routes/portfolio/collectibles.tsx @@ -185,8 +185,9 @@ const NftCard = ({ nft }: { nft: Nft }) => {
Edition - #{nft.serialNumber} - {nft.collection?.totalSupply && ` / ${nft.collection.totalSupply}`} + #{nft.serialNumber.toString()} + {Number(nft.collection?.totalSupply ?? 0) > 0 && + ` / ${nft.collection?.totalSupply?.toString() ?? ''}`}
)} diff --git a/packages/nft/generated/gql/rmrk1/fragment-masking.ts b/packages/nft/generated/gql/rmrk1/fragment-masking.ts deleted file mode 100644 index 0f1e69d16..000000000 --- a/packages/nft/generated/gql/rmrk1/fragment-masking.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { ResultOf, TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core' - -export type FragmentType> = TDocumentType extends DocumentNode< - infer TType, - any -> - ? TType extends { ' $fragmentName'?: infer TKey } - ? TKey extends string - ? { ' $fragmentRefs'?: { [key in TKey]: TType } } - : never - : never - : never - -// return non-nullable if `fragmentType` is non-nullable -export function useFragment( - _documentNode: DocumentNode, - fragmentType: FragmentType> -): TType -// return nullable if `fragmentType` is nullable -export function useFragment( - _documentNode: DocumentNode, - fragmentType: FragmentType> | null | undefined -): TType | null | undefined -// return array of non-nullable if `fragmentType` is array of non-nullable -export function useFragment( - _documentNode: DocumentNode, - fragmentType: ReadonlyArray>> -): ReadonlyArray -// return array of nullable if `fragmentType` is array of nullable -export function useFragment( - _documentNode: DocumentNode, - fragmentType: ReadonlyArray>> | null | undefined -): ReadonlyArray | null | undefined -export function useFragment( - _documentNode: DocumentNode, - fragmentType: - | FragmentType> - | ReadonlyArray>> - | null - | undefined -): TType | ReadonlyArray | null | undefined { - return fragmentType as any -} - -export function makeFragmentData>( - data: FT, - _fragment: F -): FragmentType { - return data as FragmentType -} diff --git a/packages/nft/generated/gql/rmrk1/gql.ts b/packages/nft/generated/gql/rmrk1/gql.ts deleted file mode 100644 index 024a56002..000000000 --- a/packages/nft/generated/gql/rmrk1/gql.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* eslint-disable */ -import * as types from './graphql.js' -import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core' - -/** - * Map of all GraphQL operations in the project. - * - * This map has several performance disadvantages: - * 1. It is not tree-shakeable, so it will include all operations in the project. - * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle. - * 3. It does not support dead code elimination, so it will add unused operations. - * - * Therefore it is highly recommended to use the babel-plugin for production. - */ -const documents = { - '\n query nfts($addresses: [String!], $limit: Int, $offset: Int) {\n nfts(limit: $limit, offset: $offset, where: { owner: { _in: $addresses }, burned: { _eq: "" } }) {\n id\n metadata_name\n metadata_description\n metadata_animation_url\n metadata_image\n sn\n collection {\n id\n name\n max\n }\n }\n }\n ': - types.NftsDocument, -} - -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - * - * - * @example - * ```ts - * const query = gql(`query GetUser($id: ID!) { user(id: $id) { name } }`); - * ``` - * - * The query argument is unknown! - * Please regenerate the types. - */ -export function graphql(source: string): unknown - -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql( - source: '\n query nfts($addresses: [String!], $limit: Int, $offset: Int) {\n nfts(limit: $limit, offset: $offset, where: { owner: { _in: $addresses }, burned: { _eq: "" } }) {\n id\n metadata_name\n metadata_description\n metadata_animation_url\n metadata_image\n sn\n collection {\n id\n name\n max\n }\n }\n }\n ' -): (typeof documents)['\n query nfts($addresses: [String!], $limit: Int, $offset: Int) {\n nfts(limit: $limit, offset: $offset, where: { owner: { _in: $addresses }, burned: { _eq: "" } }) {\n id\n metadata_name\n metadata_description\n metadata_animation_url\n metadata_image\n sn\n collection {\n id\n name\n max\n }\n }\n }\n '] - -export function graphql(source: string) { - return (documents as any)[source] ?? {} -} - -export type DocumentType> = TDocumentNode extends DocumentNode< - infer TType, - any -> - ? TType - : never diff --git a/packages/nft/generated/gql/rmrk1/graphql.ts b/packages/nft/generated/gql/rmrk1/graphql.ts deleted file mode 100644 index 46526a84a..000000000 --- a/packages/nft/generated/gql/rmrk1/graphql.ts +++ /dev/null @@ -1,5737 +0,0 @@ -/* eslint-disable */ -import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core' -export type Maybe = T | null -export type InputMaybe = Maybe -export type Exact = { [K in keyof T]: T[K] } -export type MakeOptional = Omit & { [SubKey in K]?: Maybe } -export type MakeMaybe = Omit & { [SubKey in K]: Maybe } -/** All built-in and custom scalars, mapped to their actual values */ -export type Scalars = { - ID: string - String: string - Boolean: boolean - Int: number - Float: number - bigint: any - jsonb: any - timestamptz: any -} - -/** expression to compare columns of type Boolean. All fields are combined with logical 'AND'. */ -export type Boolean_Comparison_Exp = { - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - _in?: InputMaybe> - _is_null?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - _nin?: InputMaybe> -} - -/** expression to compare columns of type Int. All fields are combined with logical 'AND'. */ -export type Int_Comparison_Exp = { - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - _in?: InputMaybe> - _is_null?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - _nin?: InputMaybe> -} - -/** expression to compare columns of type String. All fields are combined with logical 'AND'. */ -export type String_Comparison_Exp = { - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - _ilike?: InputMaybe - _in?: InputMaybe> - _is_null?: InputMaybe - _like?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - _nilike?: InputMaybe - _nin?: InputMaybe> - _nlike?: InputMaybe - _nsimilar?: InputMaybe - _similar?: InputMaybe -} - -/** columns and relationships of "art_contest_nfts" */ -export type Art_Contest_Nfts = { - __typename?: 'art_contest_nfts' - /** An array relationship */ - art_contest_submissions: Array - /** An aggregated array relationship */ - art_contest_submissions_aggregate: Art_Contest_Submissions_Aggregate - id: Scalars['Int'] - nft_id: Scalars['String'] -} - -/** columns and relationships of "art_contest_nfts" */ -export type Art_Contest_NftsArt_Contest_SubmissionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "art_contest_nfts" */ -export type Art_Contest_NftsArt_Contest_Submissions_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** aggregated selection of "art_contest_nfts" */ -export type Art_Contest_Nfts_Aggregate = { - __typename?: 'art_contest_nfts_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "art_contest_nfts" */ -export type Art_Contest_Nfts_Aggregate_Fields = { - __typename?: 'art_contest_nfts_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "art_contest_nfts" */ -export type Art_Contest_Nfts_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Art_Contest_Nfts_Avg_Fields = { - __typename?: 'art_contest_nfts_avg_fields' - id?: Maybe -} - -/** order by avg() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Avg_Order_By = { - id?: InputMaybe -} - -/** Boolean expression to filter rows from the table "art_contest_nfts". All fields are combined with a logical 'AND'. */ -export type Art_Contest_Nfts_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - art_contest_submissions?: InputMaybe - id?: InputMaybe - nft_id?: InputMaybe -} - -/** aggregate max on columns */ -export type Art_Contest_Nfts_Max_Fields = { - __typename?: 'art_contest_nfts_max_fields' - id?: Maybe - nft_id?: Maybe -} - -/** order by max() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Max_Order_By = { - id?: InputMaybe - nft_id?: InputMaybe -} - -/** aggregate min on columns */ -export type Art_Contest_Nfts_Min_Fields = { - __typename?: 'art_contest_nfts_min_fields' - id?: Maybe - nft_id?: Maybe -} - -/** order by min() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Min_Order_By = { - id?: InputMaybe - nft_id?: InputMaybe -} - -/** ordering options when selecting data from "art_contest_nfts" */ -export type Art_Contest_Nfts_Order_By = { - art_contest_submissions_aggregate?: InputMaybe - id?: InputMaybe - nft_id?: InputMaybe -} - -/** primary key columns input for table: "art_contest_nfts" */ -export type Art_Contest_Nfts_Pk_Columns_Input = { - nft_id: Scalars['String'] -} - -/** select columns of table "art_contest_nfts" */ -export enum Art_Contest_Nfts_Select_Column { - /** column name */ - Id = 'id', - /** column name */ - NftId = 'nft_id', -} - -/** aggregate stddev on columns */ -export type Art_Contest_Nfts_Stddev_Fields = { - __typename?: 'art_contest_nfts_stddev_fields' - id?: Maybe -} - -/** order by stddev() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Stddev_Order_By = { - id?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Art_Contest_Nfts_Stddev_Pop_Fields = { - __typename?: 'art_contest_nfts_stddev_pop_fields' - id?: Maybe -} - -/** order by stddev_pop() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Stddev_Pop_Order_By = { - id?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Art_Contest_Nfts_Stddev_Samp_Fields = { - __typename?: 'art_contest_nfts_stddev_samp_fields' - id?: Maybe -} - -/** order by stddev_samp() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Stddev_Samp_Order_By = { - id?: InputMaybe -} - -/** aggregate sum on columns */ -export type Art_Contest_Nfts_Sum_Fields = { - __typename?: 'art_contest_nfts_sum_fields' - id?: Maybe -} - -/** order by sum() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Sum_Order_By = { - id?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Art_Contest_Nfts_Var_Pop_Fields = { - __typename?: 'art_contest_nfts_var_pop_fields' - id?: Maybe -} - -/** order by var_pop() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Var_Pop_Order_By = { - id?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Art_Contest_Nfts_Var_Samp_Fields = { - __typename?: 'art_contest_nfts_var_samp_fields' - id?: Maybe -} - -/** order by var_samp() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Var_Samp_Order_By = { - id?: InputMaybe -} - -/** aggregate variance on columns */ -export type Art_Contest_Nfts_Variance_Fields = { - __typename?: 'art_contest_nfts_variance_fields' - id?: Maybe -} - -/** order by variance() on columns of table "art_contest_nfts" */ -export type Art_Contest_Nfts_Variance_Order_By = { - id?: InputMaybe -} - -/** columns and relationships of "art_contest_submissions" */ -export type Art_Contest_Submissions = { - __typename?: 'art_contest_submissions' - animation_url: Scalars['String'] - /** An object relationship */ - art_contest_nft: Art_Contest_Nfts - art_id: Scalars['String'] - /** An array relationship */ - art_votes: Array - /** An aggregated array relationship */ - art_votes_aggregate: Art_Contest_Votes_Aggregate - artist_address: Scalars['String'] - created_at: Scalars['timestamptz'] - disabled: Scalars['Boolean'] - id: Scalars['Int'] - img_url: Scalars['String'] - nft_id: Scalars['String'] -} - -/** columns and relationships of "art_contest_submissions" */ -export type Art_Contest_SubmissionsArt_VotesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "art_contest_submissions" */ -export type Art_Contest_SubmissionsArt_Votes_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** aggregated selection of "art_contest_submissions" */ -export type Art_Contest_Submissions_Aggregate = { - __typename?: 'art_contest_submissions_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "art_contest_submissions" */ -export type Art_Contest_Submissions_Aggregate_Fields = { - __typename?: 'art_contest_submissions_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "art_contest_submissions" */ -export type Art_Contest_Submissions_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Art_Contest_Submissions_Avg_Fields = { - __typename?: 'art_contest_submissions_avg_fields' - id?: Maybe -} - -/** order by avg() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Avg_Order_By = { - id?: InputMaybe -} - -/** Boolean expression to filter rows from the table "art_contest_submissions". All fields are combined with a logical 'AND'. */ -export type Art_Contest_Submissions_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - animation_url?: InputMaybe - art_contest_nft?: InputMaybe - art_id?: InputMaybe - art_votes?: InputMaybe - artist_address?: InputMaybe - created_at?: InputMaybe - disabled?: InputMaybe - id?: InputMaybe - img_url?: InputMaybe - nft_id?: InputMaybe -} - -/** aggregate max on columns */ -export type Art_Contest_Submissions_Max_Fields = { - __typename?: 'art_contest_submissions_max_fields' - animation_url?: Maybe - art_id?: Maybe - artist_address?: Maybe - created_at?: Maybe - id?: Maybe - img_url?: Maybe - nft_id?: Maybe -} - -/** order by max() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Max_Order_By = { - animation_url?: InputMaybe - art_id?: InputMaybe - artist_address?: InputMaybe - created_at?: InputMaybe - id?: InputMaybe - img_url?: InputMaybe - nft_id?: InputMaybe -} - -/** aggregate min on columns */ -export type Art_Contest_Submissions_Min_Fields = { - __typename?: 'art_contest_submissions_min_fields' - animation_url?: Maybe - art_id?: Maybe - artist_address?: Maybe - created_at?: Maybe - id?: Maybe - img_url?: Maybe - nft_id?: Maybe -} - -/** order by min() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Min_Order_By = { - animation_url?: InputMaybe - art_id?: InputMaybe - artist_address?: InputMaybe - created_at?: InputMaybe - id?: InputMaybe - img_url?: InputMaybe - nft_id?: InputMaybe -} - -/** ordering options when selecting data from "art_contest_submissions" */ -export type Art_Contest_Submissions_Order_By = { - animation_url?: InputMaybe - art_contest_nft?: InputMaybe - art_id?: InputMaybe - art_votes_aggregate?: InputMaybe - artist_address?: InputMaybe - created_at?: InputMaybe - disabled?: InputMaybe - id?: InputMaybe - img_url?: InputMaybe - nft_id?: InputMaybe -} - -/** primary key columns input for table: "art_contest_submissions" */ -export type Art_Contest_Submissions_Pk_Columns_Input = { - id: Scalars['Int'] -} - -/** select columns of table "art_contest_submissions" */ -export enum Art_Contest_Submissions_Select_Column { - /** column name */ - AnimationUrl = 'animation_url', - /** column name */ - ArtId = 'art_id', - /** column name */ - ArtistAddress = 'artist_address', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - Disabled = 'disabled', - /** column name */ - Id = 'id', - /** column name */ - ImgUrl = 'img_url', - /** column name */ - NftId = 'nft_id', -} - -/** aggregate stddev on columns */ -export type Art_Contest_Submissions_Stddev_Fields = { - __typename?: 'art_contest_submissions_stddev_fields' - id?: Maybe -} - -/** order by stddev() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Stddev_Order_By = { - id?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Art_Contest_Submissions_Stddev_Pop_Fields = { - __typename?: 'art_contest_submissions_stddev_pop_fields' - id?: Maybe -} - -/** order by stddev_pop() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Stddev_Pop_Order_By = { - id?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Art_Contest_Submissions_Stddev_Samp_Fields = { - __typename?: 'art_contest_submissions_stddev_samp_fields' - id?: Maybe -} - -/** order by stddev_samp() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Stddev_Samp_Order_By = { - id?: InputMaybe -} - -/** aggregate sum on columns */ -export type Art_Contest_Submissions_Sum_Fields = { - __typename?: 'art_contest_submissions_sum_fields' - id?: Maybe -} - -/** order by sum() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Sum_Order_By = { - id?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Art_Contest_Submissions_Var_Pop_Fields = { - __typename?: 'art_contest_submissions_var_pop_fields' - id?: Maybe -} - -/** order by var_pop() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Var_Pop_Order_By = { - id?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Art_Contest_Submissions_Var_Samp_Fields = { - __typename?: 'art_contest_submissions_var_samp_fields' - id?: Maybe -} - -/** order by var_samp() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Var_Samp_Order_By = { - id?: InputMaybe -} - -/** aggregate variance on columns */ -export type Art_Contest_Submissions_Variance_Fields = { - __typename?: 'art_contest_submissions_variance_fields' - id?: Maybe -} - -/** order by variance() on columns of table "art_contest_submissions" */ -export type Art_Contest_Submissions_Variance_Order_By = { - id?: InputMaybe -} - -/** columns and relationships of "art_contest_votes" */ -export type Art_Contest_Votes = { - __typename?: 'art_contest_votes' - art_id: Scalars['String'] - /** An object relationship */ - art_votes?: Maybe - caller: Scalars['String'] - created_at: Scalars['timestamptz'] - id: Scalars['Int'] - nft_id: Scalars['String'] - updated_at: Scalars['timestamptz'] - weight: Scalars['Int'] -} - -/** aggregated selection of "art_contest_votes" */ -export type Art_Contest_Votes_Aggregate = { - __typename?: 'art_contest_votes_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "art_contest_votes" */ -export type Art_Contest_Votes_Aggregate_Fields = { - __typename?: 'art_contest_votes_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "art_contest_votes" */ -export type Art_Contest_Votes_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "art_contest_votes" */ -export type Art_Contest_Votes_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Art_Contest_Votes_Avg_Fields = { - __typename?: 'art_contest_votes_avg_fields' - id?: Maybe - weight?: Maybe -} - -/** order by avg() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Avg_Order_By = { - id?: InputMaybe - weight?: InputMaybe -} - -/** Boolean expression to filter rows from the table "art_contest_votes". All fields are combined with a logical 'AND'. */ -export type Art_Contest_Votes_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - art_id?: InputMaybe - art_votes?: InputMaybe - caller?: InputMaybe - created_at?: InputMaybe - id?: InputMaybe - nft_id?: InputMaybe - updated_at?: InputMaybe - weight?: InputMaybe -} - -/** aggregate max on columns */ -export type Art_Contest_Votes_Max_Fields = { - __typename?: 'art_contest_votes_max_fields' - art_id?: Maybe - caller?: Maybe - created_at?: Maybe - id?: Maybe - nft_id?: Maybe - updated_at?: Maybe - weight?: Maybe -} - -/** order by max() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Max_Order_By = { - art_id?: InputMaybe - caller?: InputMaybe - created_at?: InputMaybe - id?: InputMaybe - nft_id?: InputMaybe - updated_at?: InputMaybe - weight?: InputMaybe -} - -/** aggregate min on columns */ -export type Art_Contest_Votes_Min_Fields = { - __typename?: 'art_contest_votes_min_fields' - art_id?: Maybe - caller?: Maybe - created_at?: Maybe - id?: Maybe - nft_id?: Maybe - updated_at?: Maybe - weight?: Maybe -} - -/** order by min() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Min_Order_By = { - art_id?: InputMaybe - caller?: InputMaybe - created_at?: InputMaybe - id?: InputMaybe - nft_id?: InputMaybe - updated_at?: InputMaybe - weight?: InputMaybe -} - -/** ordering options when selecting data from "art_contest_votes" */ -export type Art_Contest_Votes_Order_By = { - art_id?: InputMaybe - art_votes?: InputMaybe - caller?: InputMaybe - created_at?: InputMaybe - id?: InputMaybe - nft_id?: InputMaybe - updated_at?: InputMaybe - weight?: InputMaybe -} - -/** primary key columns input for table: "art_contest_votes" */ -export type Art_Contest_Votes_Pk_Columns_Input = { - caller: Scalars['String'] - nft_id: Scalars['String'] -} - -/** select columns of table "art_contest_votes" */ -export enum Art_Contest_Votes_Select_Column { - /** column name */ - ArtId = 'art_id', - /** column name */ - Caller = 'caller', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - Id = 'id', - /** column name */ - NftId = 'nft_id', - /** column name */ - UpdatedAt = 'updated_at', - /** column name */ - Weight = 'weight', -} - -/** aggregate stddev on columns */ -export type Art_Contest_Votes_Stddev_Fields = { - __typename?: 'art_contest_votes_stddev_fields' - id?: Maybe - weight?: Maybe -} - -/** order by stddev() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Stddev_Order_By = { - id?: InputMaybe - weight?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Art_Contest_Votes_Stddev_Pop_Fields = { - __typename?: 'art_contest_votes_stddev_pop_fields' - id?: Maybe - weight?: Maybe -} - -/** order by stddev_pop() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Stddev_Pop_Order_By = { - id?: InputMaybe - weight?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Art_Contest_Votes_Stddev_Samp_Fields = { - __typename?: 'art_contest_votes_stddev_samp_fields' - id?: Maybe - weight?: Maybe -} - -/** order by stddev_samp() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Stddev_Samp_Order_By = { - id?: InputMaybe - weight?: InputMaybe -} - -/** aggregate sum on columns */ -export type Art_Contest_Votes_Sum_Fields = { - __typename?: 'art_contest_votes_sum_fields' - id?: Maybe - weight?: Maybe -} - -/** order by sum() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Sum_Order_By = { - id?: InputMaybe - weight?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Art_Contest_Votes_Var_Pop_Fields = { - __typename?: 'art_contest_votes_var_pop_fields' - id?: Maybe - weight?: Maybe -} - -/** order by var_pop() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Var_Pop_Order_By = { - id?: InputMaybe - weight?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Art_Contest_Votes_Var_Samp_Fields = { - __typename?: 'art_contest_votes_var_samp_fields' - id?: Maybe - weight?: Maybe -} - -/** order by var_samp() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Var_Samp_Order_By = { - id?: InputMaybe - weight?: InputMaybe -} - -/** aggregate variance on columns */ -export type Art_Contest_Votes_Variance_Fields = { - __typename?: 'art_contest_votes_variance_fields' - id?: Maybe - weight?: Maybe -} - -/** order by variance() on columns of table "art_contest_votes" */ -export type Art_Contest_Votes_Variance_Order_By = { - id?: InputMaybe - weight?: InputMaybe -} - -/** expression to compare columns of type bigint. All fields are combined with logical 'AND'. */ -export type Bigint_Comparison_Exp = { - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - _in?: InputMaybe> - _is_null?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - _nin?: InputMaybe> -} - -/** columns and relationships of "changes" */ -export type Changes = { - __typename?: 'changes' - block: Scalars['Int'] - caller: Scalars['String'] - /** An object relationship */ - collection?: Maybe - created_at: Scalars['timestamptz'] - field: Scalars['String'] - id: Scalars['Int'] - new: Scalars['String'] - /** An object relationship */ - nft?: Maybe - old: Scalars['String'] - opType: Scalars['String'] - ref_id: Scalars['String'] -} - -/** aggregated selection of "changes" */ -export type Changes_Aggregate = { - __typename?: 'changes_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "changes" */ -export type Changes_Aggregate_Fields = { - __typename?: 'changes_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "changes" */ -export type Changes_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "changes" */ -export type Changes_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Changes_Avg_Fields = { - __typename?: 'changes_avg_fields' - block?: Maybe - id?: Maybe -} - -/** order by avg() on columns of table "changes" */ -export type Changes_Avg_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** Boolean expression to filter rows from the table "changes". All fields are combined with a logical 'AND'. */ -export type Changes_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - block?: InputMaybe - caller?: InputMaybe - collection?: InputMaybe - created_at?: InputMaybe - field?: InputMaybe - id?: InputMaybe - new?: InputMaybe - nft?: InputMaybe - old?: InputMaybe - opType?: InputMaybe - ref_id?: InputMaybe -} - -/** columns and relationships of "changes_collection" */ -export type Changes_Collection = { - __typename?: 'changes_collection' - block: Scalars['Int'] - caller: Scalars['String'] - /** An object relationship */ - collection?: Maybe - created_at: Scalars['timestamptz'] - field: Scalars['String'] - id: Scalars['Int'] - new: Scalars['String'] - old: Scalars['String'] - opType: Scalars['String'] - ref_id: Scalars['String'] -} - -/** aggregated selection of "changes_collection" */ -export type Changes_Collection_Aggregate = { - __typename?: 'changes_collection_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "changes_collection" */ -export type Changes_Collection_Aggregate_Fields = { - __typename?: 'changes_collection_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "changes_collection" */ -export type Changes_Collection_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "changes_collection" */ -export type Changes_Collection_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Changes_Collection_Avg_Fields = { - __typename?: 'changes_collection_avg_fields' - block?: Maybe - id?: Maybe -} - -/** order by avg() on columns of table "changes_collection" */ -export type Changes_Collection_Avg_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** Boolean expression to filter rows from the table "changes_collection". All fields are combined with a logical 'AND'. */ -export type Changes_Collection_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - block?: InputMaybe - caller?: InputMaybe - collection?: InputMaybe - created_at?: InputMaybe - field?: InputMaybe - id?: InputMaybe - new?: InputMaybe - old?: InputMaybe - opType?: InputMaybe - ref_id?: InputMaybe -} - -/** aggregate max on columns */ -export type Changes_Collection_Max_Fields = { - __typename?: 'changes_collection_max_fields' - block?: Maybe - caller?: Maybe - created_at?: Maybe - field?: Maybe - id?: Maybe - new?: Maybe - old?: Maybe - opType?: Maybe - ref_id?: Maybe -} - -/** order by max() on columns of table "changes_collection" */ -export type Changes_Collection_Max_Order_By = { - block?: InputMaybe - caller?: InputMaybe - created_at?: InputMaybe - field?: InputMaybe - id?: InputMaybe - new?: InputMaybe - old?: InputMaybe - opType?: InputMaybe - ref_id?: InputMaybe -} - -/** aggregate min on columns */ -export type Changes_Collection_Min_Fields = { - __typename?: 'changes_collection_min_fields' - block?: Maybe - caller?: Maybe - created_at?: Maybe - field?: Maybe - id?: Maybe - new?: Maybe - old?: Maybe - opType?: Maybe - ref_id?: Maybe -} - -/** order by min() on columns of table "changes_collection" */ -export type Changes_Collection_Min_Order_By = { - block?: InputMaybe - caller?: InputMaybe - created_at?: InputMaybe - field?: InputMaybe - id?: InputMaybe - new?: InputMaybe - old?: InputMaybe - opType?: InputMaybe - ref_id?: InputMaybe -} - -/** ordering options when selecting data from "changes_collection" */ -export type Changes_Collection_Order_By = { - block?: InputMaybe - caller?: InputMaybe - collection?: InputMaybe - created_at?: InputMaybe - field?: InputMaybe - id?: InputMaybe - new?: InputMaybe - old?: InputMaybe - opType?: InputMaybe - ref_id?: InputMaybe -} - -/** primary key columns input for table: "changes_collection" */ -export type Changes_Collection_Pk_Columns_Input = { - id: Scalars['Int'] -} - -/** select columns of table "changes_collection" */ -export enum Changes_Collection_Select_Column { - /** column name */ - Block = 'block', - /** column name */ - Caller = 'caller', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - Field = 'field', - /** column name */ - Id = 'id', - /** column name */ - New = 'new', - /** column name */ - Old = 'old', - /** column name */ - OpType = 'opType', - /** column name */ - RefId = 'ref_id', -} - -/** aggregate stddev on columns */ -export type Changes_Collection_Stddev_Fields = { - __typename?: 'changes_collection_stddev_fields' - block?: Maybe - id?: Maybe -} - -/** order by stddev() on columns of table "changes_collection" */ -export type Changes_Collection_Stddev_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Changes_Collection_Stddev_Pop_Fields = { - __typename?: 'changes_collection_stddev_pop_fields' - block?: Maybe - id?: Maybe -} - -/** order by stddev_pop() on columns of table "changes_collection" */ -export type Changes_Collection_Stddev_Pop_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Changes_Collection_Stddev_Samp_Fields = { - __typename?: 'changes_collection_stddev_samp_fields' - block?: Maybe - id?: Maybe -} - -/** order by stddev_samp() on columns of table "changes_collection" */ -export type Changes_Collection_Stddev_Samp_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate sum on columns */ -export type Changes_Collection_Sum_Fields = { - __typename?: 'changes_collection_sum_fields' - block?: Maybe - id?: Maybe -} - -/** order by sum() on columns of table "changes_collection" */ -export type Changes_Collection_Sum_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Changes_Collection_Var_Pop_Fields = { - __typename?: 'changes_collection_var_pop_fields' - block?: Maybe - id?: Maybe -} - -/** order by var_pop() on columns of table "changes_collection" */ -export type Changes_Collection_Var_Pop_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Changes_Collection_Var_Samp_Fields = { - __typename?: 'changes_collection_var_samp_fields' - block?: Maybe - id?: Maybe -} - -/** order by var_samp() on columns of table "changes_collection" */ -export type Changes_Collection_Var_Samp_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate variance on columns */ -export type Changes_Collection_Variance_Fields = { - __typename?: 'changes_collection_variance_fields' - block?: Maybe - id?: Maybe -} - -/** order by variance() on columns of table "changes_collection" */ -export type Changes_Collection_Variance_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate max on columns */ -export type Changes_Max_Fields = { - __typename?: 'changes_max_fields' - block?: Maybe - caller?: Maybe - created_at?: Maybe - field?: Maybe - id?: Maybe - new?: Maybe - old?: Maybe - opType?: Maybe - ref_id?: Maybe -} - -/** order by max() on columns of table "changes" */ -export type Changes_Max_Order_By = { - block?: InputMaybe - caller?: InputMaybe - created_at?: InputMaybe - field?: InputMaybe - id?: InputMaybe - new?: InputMaybe - old?: InputMaybe - opType?: InputMaybe - ref_id?: InputMaybe -} - -/** aggregate min on columns */ -export type Changes_Min_Fields = { - __typename?: 'changes_min_fields' - block?: Maybe - caller?: Maybe - created_at?: Maybe - field?: Maybe - id?: Maybe - new?: Maybe - old?: Maybe - opType?: Maybe - ref_id?: Maybe -} - -/** order by min() on columns of table "changes" */ -export type Changes_Min_Order_By = { - block?: InputMaybe - caller?: InputMaybe - created_at?: InputMaybe - field?: InputMaybe - id?: InputMaybe - new?: InputMaybe - old?: InputMaybe - opType?: InputMaybe - ref_id?: InputMaybe -} - -/** ordering options when selecting data from "changes" */ -export type Changes_Order_By = { - block?: InputMaybe - caller?: InputMaybe - collection?: InputMaybe - created_at?: InputMaybe - field?: InputMaybe - id?: InputMaybe - new?: InputMaybe - nft?: InputMaybe - old?: InputMaybe - opType?: InputMaybe - ref_id?: InputMaybe -} - -/** primary key columns input for table: "changes" */ -export type Changes_Pk_Columns_Input = { - id: Scalars['Int'] -} - -/** select columns of table "changes" */ -export enum Changes_Select_Column { - /** column name */ - Block = 'block', - /** column name */ - Caller = 'caller', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - Field = 'field', - /** column name */ - Id = 'id', - /** column name */ - New = 'new', - /** column name */ - Old = 'old', - /** column name */ - OpType = 'opType', - /** column name */ - RefId = 'ref_id', -} - -/** aggregate stddev on columns */ -export type Changes_Stddev_Fields = { - __typename?: 'changes_stddev_fields' - block?: Maybe - id?: Maybe -} - -/** order by stddev() on columns of table "changes" */ -export type Changes_Stddev_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Changes_Stddev_Pop_Fields = { - __typename?: 'changes_stddev_pop_fields' - block?: Maybe - id?: Maybe -} - -/** order by stddev_pop() on columns of table "changes" */ -export type Changes_Stddev_Pop_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Changes_Stddev_Samp_Fields = { - __typename?: 'changes_stddev_samp_fields' - block?: Maybe - id?: Maybe -} - -/** order by stddev_samp() on columns of table "changes" */ -export type Changes_Stddev_Samp_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate sum on columns */ -export type Changes_Sum_Fields = { - __typename?: 'changes_sum_fields' - block?: Maybe - id?: Maybe -} - -/** order by sum() on columns of table "changes" */ -export type Changes_Sum_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Changes_Var_Pop_Fields = { - __typename?: 'changes_var_pop_fields' - block?: Maybe - id?: Maybe -} - -/** order by var_pop() on columns of table "changes" */ -export type Changes_Var_Pop_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Changes_Var_Samp_Fields = { - __typename?: 'changes_var_samp_fields' - block?: Maybe - id?: Maybe -} - -/** order by var_samp() on columns of table "changes" */ -export type Changes_Var_Samp_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** aggregate variance on columns */ -export type Changes_Variance_Fields = { - __typename?: 'changes_variance_fields' - block?: Maybe - id?: Maybe -} - -/** order by variance() on columns of table "changes" */ -export type Changes_Variance_Order_By = { - block?: InputMaybe - id?: InputMaybe -} - -/** columns and relationships of "collection_banners" */ -export type Collection_Banners = { - __typename?: 'collection_banners' - /** An object relationship */ - collection?: Maybe - collection_id: Scalars['String'] - created_at: Scalars['timestamptz'] - image: Scalars['String'] -} - -/** Boolean expression to filter rows from the table "collection_banners". All fields are combined with a logical 'AND'. */ -export type Collection_Banners_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - collection?: InputMaybe - collection_id?: InputMaybe - created_at?: InputMaybe - image?: InputMaybe -} - -/** ordering options when selecting data from "collection_banners" */ -export type Collection_Banners_Order_By = { - collection?: InputMaybe - collection_id?: InputMaybe - created_at?: InputMaybe - image?: InputMaybe -} - -/** primary key columns input for table: "collection_banners" */ -export type Collection_Banners_Pk_Columns_Input = { - collection_id: Scalars['String'] -} - -/** select columns of table "collection_banners" */ -export enum Collection_Banners_Select_Column { - /** column name */ - CollectionId = 'collection_id', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - Image = 'image', -} - -/** columns and relationships of "collections" */ -export type Collections = { - __typename?: 'collections' - /** An object relationship */ - banner?: Maybe - block: Scalars['Int'] - /** An array relationship */ - changes: Array - /** An aggregated array relationship */ - changes_aggregate: Changes_Aggregate - /** An array relationship */ - changes_collection: Array - /** An aggregated array relationship */ - changes_collection_aggregate: Changes_Collection_Aggregate - data?: Maybe - id: Scalars['String'] - issuer: Scalars['String'] - max: Scalars['Int'] - metadata?: Maybe - name: Scalars['String'] - /** An array relationship */ - nfts: Array - /** An aggregated array relationship */ - nfts_aggregate: Nfts_Aggregate - /** An object relationship */ - nfts_stats?: Maybe - /** An array relationship */ - singular_blacklisted_accounts: Array - /** An array relationship */ - singular_blacklisted_collections: Array - /** An array relationship */ - singular_curated: Array - /** An array relationship */ - singular_hidden_collections: Array - /** An array relationship */ - singular_nsfw_collections: Array - /** An aggregated array relationship */ - singular_nsfw_collections_aggregate: Singular_Nsfw_Collections_Aggregate - /** An array relationship */ - singular_verified_collections: Array - symbol: Scalars['String'] - updated_at: Scalars['timestamptz'] -} - -/** columns and relationships of "collections" */ -export type CollectionsChangesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsChanges_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsChanges_CollectionArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsChanges_Collection_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsDataArgs = { - path?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsNftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsNfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsSingular_Blacklisted_AccountsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsSingular_Blacklisted_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsSingular_CuratedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsSingular_Hidden_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsSingular_Nsfw_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsSingular_Nsfw_Collections_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "collections" */ -export type CollectionsSingular_Verified_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** aggregated selection of "collections" */ -export type Collections_Aggregate = { - __typename?: 'collections_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "collections" */ -export type Collections_Aggregate_Fields = { - __typename?: 'collections_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "collections" */ -export type Collections_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "collections" */ -export type Collections_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Collections_Avg_Fields = { - __typename?: 'collections_avg_fields' - block?: Maybe - max?: Maybe -} - -/** order by avg() on columns of table "collections" */ -export type Collections_Avg_Order_By = { - block?: InputMaybe - max?: InputMaybe -} - -/** Boolean expression to filter rows from the table "collections". All fields are combined with a logical 'AND'. */ -export type Collections_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - banner?: InputMaybe - block?: InputMaybe - changes?: InputMaybe - changes_collection?: InputMaybe - data?: InputMaybe - id?: InputMaybe - issuer?: InputMaybe - max?: InputMaybe - metadata?: InputMaybe - name?: InputMaybe - nfts?: InputMaybe - nfts_stats?: InputMaybe - singular_blacklisted_accounts?: InputMaybe - singular_blacklisted_collections?: InputMaybe - singular_curated?: InputMaybe - singular_hidden_collections?: InputMaybe - singular_nsfw_collections?: InputMaybe - singular_verified_collections?: InputMaybe - symbol?: InputMaybe - updated_at?: InputMaybe -} - -/** aggregate max on columns */ -export type Collections_Max_Fields = { - __typename?: 'collections_max_fields' - block?: Maybe - id?: Maybe - issuer?: Maybe - max?: Maybe - metadata?: Maybe - name?: Maybe - symbol?: Maybe - updated_at?: Maybe -} - -/** order by max() on columns of table "collections" */ -export type Collections_Max_Order_By = { - block?: InputMaybe - id?: InputMaybe - issuer?: InputMaybe - max?: InputMaybe - metadata?: InputMaybe - name?: InputMaybe - symbol?: InputMaybe - updated_at?: InputMaybe -} - -/** aggregate min on columns */ -export type Collections_Min_Fields = { - __typename?: 'collections_min_fields' - block?: Maybe - id?: Maybe - issuer?: Maybe - max?: Maybe - metadata?: Maybe - name?: Maybe - symbol?: Maybe - updated_at?: Maybe -} - -/** order by min() on columns of table "collections" */ -export type Collections_Min_Order_By = { - block?: InputMaybe - id?: InputMaybe - issuer?: InputMaybe - max?: InputMaybe - metadata?: InputMaybe - name?: InputMaybe - symbol?: InputMaybe - updated_at?: InputMaybe -} - -/** ordering options when selecting data from "collections" */ -export type Collections_Order_By = { - banner?: InputMaybe - block?: InputMaybe - changes_aggregate?: InputMaybe - changes_collection_aggregate?: InputMaybe - data?: InputMaybe - id?: InputMaybe - issuer?: InputMaybe - max?: InputMaybe - metadata?: InputMaybe - name?: InputMaybe - nfts_aggregate?: InputMaybe - nfts_stats?: InputMaybe - singular_nsfw_collections_aggregate?: InputMaybe - symbol?: InputMaybe - updated_at?: InputMaybe -} - -/** primary key columns input for table: "collections" */ -export type Collections_Pk_Columns_Input = { - id: Scalars['String'] -} - -/** select columns of table "collections" */ -export enum Collections_Select_Column { - /** column name */ - Block = 'block', - /** column name */ - Data = 'data', - /** column name */ - Id = 'id', - /** column name */ - Issuer = 'issuer', - /** column name */ - Max = 'max', - /** column name */ - Metadata = 'metadata', - /** column name */ - Name = 'name', - /** column name */ - Symbol = 'symbol', - /** column name */ - UpdatedAt = 'updated_at', -} - -/** aggregate stddev on columns */ -export type Collections_Stddev_Fields = { - __typename?: 'collections_stddev_fields' - block?: Maybe - max?: Maybe -} - -/** order by stddev() on columns of table "collections" */ -export type Collections_Stddev_Order_By = { - block?: InputMaybe - max?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Collections_Stddev_Pop_Fields = { - __typename?: 'collections_stddev_pop_fields' - block?: Maybe - max?: Maybe -} - -/** order by stddev_pop() on columns of table "collections" */ -export type Collections_Stddev_Pop_Order_By = { - block?: InputMaybe - max?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Collections_Stddev_Samp_Fields = { - __typename?: 'collections_stddev_samp_fields' - block?: Maybe - max?: Maybe -} - -/** order by stddev_samp() on columns of table "collections" */ -export type Collections_Stddev_Samp_Order_By = { - block?: InputMaybe - max?: InputMaybe -} - -/** aggregate sum on columns */ -export type Collections_Sum_Fields = { - __typename?: 'collections_sum_fields' - block?: Maybe - max?: Maybe -} - -/** order by sum() on columns of table "collections" */ -export type Collections_Sum_Order_By = { - block?: InputMaybe - max?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Collections_Var_Pop_Fields = { - __typename?: 'collections_var_pop_fields' - block?: Maybe - max?: Maybe -} - -/** order by var_pop() on columns of table "collections" */ -export type Collections_Var_Pop_Order_By = { - block?: InputMaybe - max?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Collections_Var_Samp_Fields = { - __typename?: 'collections_var_samp_fields' - block?: Maybe - max?: Maybe -} - -/** order by var_samp() on columns of table "collections" */ -export type Collections_Var_Samp_Order_By = { - block?: InputMaybe - max?: InputMaybe -} - -/** aggregate variance on columns */ -export type Collections_Variance_Fields = { - __typename?: 'collections_variance_fields' - block?: Maybe - max?: Maybe -} - -/** order by variance() on columns of table "collections" */ -export type Collections_Variance_Order_By = { - block?: InputMaybe - max?: InputMaybe -} - -/** columns and relationships of "distinct_nfts" */ -export type Distinct_Nfts = { - __typename?: 'distinct_nfts' - block?: Maybe - burned?: Maybe - /** An object relationship */ - collection?: Maybe - collectionId?: Maybe - forsale?: Maybe - id?: Maybe - instance?: Maybe - metadata?: Maybe - metadata_animation_url?: Maybe - metadata_content_type?: Maybe - metadata_image?: Maybe - metadata_name?: Maybe - name?: Maybe - owner?: Maybe - /** An array relationship */ - singular_curated: Array - /** An array relationship */ - singular_nsfw: Array - /** An aggregated array relationship */ - singular_nsfw_aggregate: Singular_Nsfw_Nfts_Aggregate - sn?: Maybe - transferable?: Maybe - tx_block?: Maybe - tx_caller?: Maybe - tx_pending?: Maybe - updated_at?: Maybe -} - -/** columns and relationships of "distinct_nfts" */ -export type Distinct_NftsSingular_CuratedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "distinct_nfts" */ -export type Distinct_NftsSingular_NsfwArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "distinct_nfts" */ -export type Distinct_NftsSingular_Nsfw_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** aggregated selection of "distinct_nfts" */ -export type Distinct_Nfts_Aggregate = { - __typename?: 'distinct_nfts_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "distinct_nfts" */ -export type Distinct_Nfts_Aggregate_Fields = { - __typename?: 'distinct_nfts_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "distinct_nfts" */ -export type Distinct_Nfts_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "distinct_nfts" */ -export type Distinct_Nfts_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Distinct_Nfts_Avg_Fields = { - __typename?: 'distinct_nfts_avg_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - tx_block?: Maybe -} - -/** order by avg() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Avg_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe -} - -/** Boolean expression to filter rows from the table "distinct_nfts". All fields are combined with a logical 'AND'. */ -export type Distinct_Nfts_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - block?: InputMaybe - burned?: InputMaybe - collection?: InputMaybe - collectionId?: InputMaybe - forsale?: InputMaybe - id?: InputMaybe - instance?: InputMaybe - metadata?: InputMaybe - metadata_animation_url?: InputMaybe - metadata_content_type?: InputMaybe - metadata_image?: InputMaybe - metadata_name?: InputMaybe - name?: InputMaybe - owner?: InputMaybe - singular_curated?: InputMaybe - singular_nsfw?: InputMaybe - sn?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe - tx_caller?: InputMaybe - tx_pending?: InputMaybe - updated_at?: InputMaybe -} - -/** aggregate max on columns */ -export type Distinct_Nfts_Max_Fields = { - __typename?: 'distinct_nfts_max_fields' - block?: Maybe - burned?: Maybe - collectionId?: Maybe - forsale?: Maybe - id?: Maybe - instance?: Maybe - metadata?: Maybe - metadata_animation_url?: Maybe - metadata_content_type?: Maybe - metadata_image?: Maybe - metadata_name?: Maybe - name?: Maybe - owner?: Maybe - sn?: Maybe - transferable?: Maybe - tx_block?: Maybe - tx_caller?: Maybe - updated_at?: Maybe -} - -/** order by max() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Max_Order_By = { - block?: InputMaybe - burned?: InputMaybe - collectionId?: InputMaybe - forsale?: InputMaybe - id?: InputMaybe - instance?: InputMaybe - metadata?: InputMaybe - metadata_animation_url?: InputMaybe - metadata_content_type?: InputMaybe - metadata_image?: InputMaybe - metadata_name?: InputMaybe - name?: InputMaybe - owner?: InputMaybe - sn?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe - tx_caller?: InputMaybe - updated_at?: InputMaybe -} - -/** aggregate min on columns */ -export type Distinct_Nfts_Min_Fields = { - __typename?: 'distinct_nfts_min_fields' - block?: Maybe - burned?: Maybe - collectionId?: Maybe - forsale?: Maybe - id?: Maybe - instance?: Maybe - metadata?: Maybe - metadata_animation_url?: Maybe - metadata_content_type?: Maybe - metadata_image?: Maybe - metadata_name?: Maybe - name?: Maybe - owner?: Maybe - sn?: Maybe - transferable?: Maybe - tx_block?: Maybe - tx_caller?: Maybe - updated_at?: Maybe -} - -/** order by min() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Min_Order_By = { - block?: InputMaybe - burned?: InputMaybe - collectionId?: InputMaybe - forsale?: InputMaybe - id?: InputMaybe - instance?: InputMaybe - metadata?: InputMaybe - metadata_animation_url?: InputMaybe - metadata_content_type?: InputMaybe - metadata_image?: InputMaybe - metadata_name?: InputMaybe - name?: InputMaybe - owner?: InputMaybe - sn?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe - tx_caller?: InputMaybe - updated_at?: InputMaybe -} - -/** ordering options when selecting data from "distinct_nfts" */ -export type Distinct_Nfts_Order_By = { - block?: InputMaybe - burned?: InputMaybe - collection?: InputMaybe - collectionId?: InputMaybe - forsale?: InputMaybe - id?: InputMaybe - instance?: InputMaybe - metadata?: InputMaybe - metadata_animation_url?: InputMaybe - metadata_content_type?: InputMaybe - metadata_image?: InputMaybe - metadata_name?: InputMaybe - name?: InputMaybe - owner?: InputMaybe - singular_nsfw_aggregate?: InputMaybe - sn?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe - tx_caller?: InputMaybe - tx_pending?: InputMaybe - updated_at?: InputMaybe -} - -/** select columns of table "distinct_nfts" */ -export enum Distinct_Nfts_Select_Column { - /** column name */ - Block = 'block', - /** column name */ - Burned = 'burned', - /** column name */ - CollectionId = 'collectionId', - /** column name */ - Forsale = 'forsale', - /** column name */ - Id = 'id', - /** column name */ - Instance = 'instance', - /** column name */ - Metadata = 'metadata', - /** column name */ - MetadataAnimationUrl = 'metadata_animation_url', - /** column name */ - MetadataContentType = 'metadata_content_type', - /** column name */ - MetadataImage = 'metadata_image', - /** column name */ - MetadataName = 'metadata_name', - /** column name */ - Name = 'name', - /** column name */ - Owner = 'owner', - /** column name */ - Sn = 'sn', - /** column name */ - Transferable = 'transferable', - /** column name */ - TxBlock = 'tx_block', - /** column name */ - TxCaller = 'tx_caller', - /** column name */ - TxPending = 'tx_pending', - /** column name */ - UpdatedAt = 'updated_at', -} - -/** aggregate stddev on columns */ -export type Distinct_Nfts_Stddev_Fields = { - __typename?: 'distinct_nfts_stddev_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - tx_block?: Maybe -} - -/** order by stddev() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Stddev_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Distinct_Nfts_Stddev_Pop_Fields = { - __typename?: 'distinct_nfts_stddev_pop_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - tx_block?: Maybe -} - -/** order by stddev_pop() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Stddev_Pop_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Distinct_Nfts_Stddev_Samp_Fields = { - __typename?: 'distinct_nfts_stddev_samp_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - tx_block?: Maybe -} - -/** order by stddev_samp() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Stddev_Samp_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe -} - -/** aggregate sum on columns */ -export type Distinct_Nfts_Sum_Fields = { - __typename?: 'distinct_nfts_sum_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - tx_block?: Maybe -} - -/** order by sum() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Sum_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Distinct_Nfts_Var_Pop_Fields = { - __typename?: 'distinct_nfts_var_pop_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - tx_block?: Maybe -} - -/** order by var_pop() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Var_Pop_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Distinct_Nfts_Var_Samp_Fields = { - __typename?: 'distinct_nfts_var_samp_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - tx_block?: Maybe -} - -/** order by var_samp() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Var_Samp_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe -} - -/** aggregate variance on columns */ -export type Distinct_Nfts_Variance_Fields = { - __typename?: 'distinct_nfts_variance_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - tx_block?: Maybe -} - -/** order by variance() on columns of table "distinct_nfts" */ -export type Distinct_Nfts_Variance_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - tx_block?: InputMaybe -} - -export type Get_By_Unicode_Args = { - nft?: InputMaybe -} - -/** expression to compare columns of type jsonb. All fields are combined with logical 'AND'. */ -export type Jsonb_Comparison_Exp = { - /** is the column contained in the given json value */ - _contained_in?: InputMaybe - /** does the column contain the given json value at the top level */ - _contains?: InputMaybe - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - /** does the string exist as a top-level key in the column */ - _has_key?: InputMaybe - /** do all of these strings exist as top-level keys in the column */ - _has_keys_all?: InputMaybe> - /** do any of these strings exist as top-level keys in the column */ - _has_keys_any?: InputMaybe> - _in?: InputMaybe> - _is_null?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - _nin?: InputMaybe> -} - -/** columns and relationships of "kanaria_houou" */ -export type Kanaria_Houou = { - __typename?: 'kanaria_houou' - created_at: Scalars['timestamptz'] - /** An object relationship */ - nft: Nfts - nft_id: Scalars['String'] -} - -/** aggregated selection of "kanaria_houou" */ -export type Kanaria_Houou_Aggregate = { - __typename?: 'kanaria_houou_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "kanaria_houou" */ -export type Kanaria_Houou_Aggregate_Fields = { - __typename?: 'kanaria_houou_aggregate_fields' - count?: Maybe - max?: Maybe - min?: Maybe -} - -/** aggregate fields of "kanaria_houou" */ -export type Kanaria_Houou_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "kanaria_houou" */ -export type Kanaria_Houou_Aggregate_Order_By = { - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe -} - -/** Boolean expression to filter rows from the table "kanaria_houou". All fields are combined with a logical 'AND'. */ -export type Kanaria_Houou_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - created_at?: InputMaybe - nft?: InputMaybe - nft_id?: InputMaybe -} - -/** aggregate max on columns */ -export type Kanaria_Houou_Max_Fields = { - __typename?: 'kanaria_houou_max_fields' - created_at?: Maybe - nft_id?: Maybe -} - -/** order by max() on columns of table "kanaria_houou" */ -export type Kanaria_Houou_Max_Order_By = { - created_at?: InputMaybe - nft_id?: InputMaybe -} - -/** aggregate min on columns */ -export type Kanaria_Houou_Min_Fields = { - __typename?: 'kanaria_houou_min_fields' - created_at?: Maybe - nft_id?: Maybe -} - -/** order by min() on columns of table "kanaria_houou" */ -export type Kanaria_Houou_Min_Order_By = { - created_at?: InputMaybe - nft_id?: InputMaybe -} - -/** ordering options when selecting data from "kanaria_houou" */ -export type Kanaria_Houou_Order_By = { - created_at?: InputMaybe - nft?: InputMaybe - nft_id?: InputMaybe -} - -/** primary key columns input for table: "kanaria_houou" */ -export type Kanaria_Houou_Pk_Columns_Input = { - nft_id: Scalars['String'] -} - -/** select columns of table "kanaria_houou" */ -export enum Kanaria_Houou_Select_Column { - /** column name */ - CreatedAt = 'created_at', - /** column name */ - NftId = 'nft_id', -} - -/** mutation root */ -export type Mutation_Root = { - __typename?: 'mutation_root' - /** update data of the table: "system" */ - update_system?: Maybe - /** update single row of the table: "system" */ - update_system_by_pk?: Maybe -} - -/** mutation root */ -export type Mutation_RootUpdate_SystemArgs = { - _set?: InputMaybe - where: System_Bool_Exp -} - -/** mutation root */ -export type Mutation_RootUpdate_System_By_PkArgs = { - _set?: InputMaybe - pk_columns: System_Pk_Columns_Input -} - -/** columns and relationships of "nfts" */ -export type Nfts = { - __typename?: 'nfts' - block: Scalars['Int'] - burned: Scalars['String'] - /** An array relationship */ - changes: Array - /** An aggregated array relationship */ - changes_aggregate: Changes_Aggregate - /** An object relationship */ - collection: Collections - collectionId: Scalars['String'] - data?: Maybe - forsale: Scalars['bigint'] - id: Scalars['String'] - id_md5?: Maybe - instance: Scalars['String'] - /** An array relationship */ - kanaria_houou: Array - /** An aggregated array relationship */ - kanaria_houou_aggregate: Kanaria_Houou_Aggregate - metadata?: Maybe - metadata_animation_url?: Maybe - metadata_content_type?: Maybe - metadata_description?: Maybe - metadata_image?: Maybe - metadata_name?: Maybe - name: Scalars['String'] - /** An array relationship */ - nft_reaction_stats: Array - /** An aggregated array relationship */ - nft_reaction_stats_aggregate: Nfts_Reactions_Stats_Aggregate - /** An object relationship */ - nfts_stats?: Maybe - owner: Scalars['String'] - /** An array relationship */ - reactions: Array - /** An aggregated array relationship */ - reactions_aggregate: Reactions_Aggregate - /** An array relationship */ - singular_curated: Array - /** An array relationship */ - singular_hidden: Array - /** An array relationship */ - singular_nsfw: Array - /** An aggregated array relationship */ - singular_nsfw_aggregate: Singular_Nsfw_Nfts_Aggregate - sn: Scalars['String'] - transferable: Scalars['bigint'] - txBlock?: Maybe - txCaller?: Maybe - txPending: Scalars['Boolean'] - updatedAtBlock?: Maybe - updated_at: Scalars['timestamptz'] -} - -/** columns and relationships of "nfts" */ -export type NftsChangesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsChanges_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsKanaria_HououArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsKanaria_Houou_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsNft_Reaction_StatsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsNft_Reaction_Stats_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsReactionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsReactions_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsSingular_CuratedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsSingular_HiddenArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsSingular_NsfwArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "nfts" */ -export type NftsSingular_Nsfw_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** aggregated selection of "nfts" */ -export type Nfts_Aggregate = { - __typename?: 'nfts_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "nfts" */ -export type Nfts_Aggregate_Fields = { - __typename?: 'nfts_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "nfts" */ -export type Nfts_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "nfts" */ -export type Nfts_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Nfts_Avg_Fields = { - __typename?: 'nfts_avg_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - txBlock?: Maybe - updatedAtBlock?: Maybe -} - -/** order by avg() on columns of table "nfts" */ -export type Nfts_Avg_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - updatedAtBlock?: InputMaybe -} - -/** Boolean expression to filter rows from the table "nfts". All fields are combined with a logical 'AND'. */ -export type Nfts_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - block?: InputMaybe - burned?: InputMaybe - changes?: InputMaybe - collection?: InputMaybe - collectionId?: InputMaybe - data?: InputMaybe - forsale?: InputMaybe - id?: InputMaybe - id_md5?: InputMaybe - instance?: InputMaybe - kanaria_houou?: InputMaybe - metadata?: InputMaybe - metadata_animation_url?: InputMaybe - metadata_content_type?: InputMaybe - metadata_description?: InputMaybe - metadata_image?: InputMaybe - metadata_name?: InputMaybe - name?: InputMaybe - nft_reaction_stats?: InputMaybe - nfts_stats?: InputMaybe - owner?: InputMaybe - reactions?: InputMaybe - singular_curated?: InputMaybe - singular_hidden?: InputMaybe - singular_nsfw?: InputMaybe - sn?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - txCaller?: InputMaybe - txPending?: InputMaybe - updatedAtBlock?: InputMaybe - updated_at?: InputMaybe -} - -/** aggregate max on columns */ -export type Nfts_Max_Fields = { - __typename?: 'nfts_max_fields' - block?: Maybe - burned?: Maybe - collectionId?: Maybe - data?: Maybe - forsale?: Maybe - id?: Maybe - id_md5?: Maybe - instance?: Maybe - metadata?: Maybe - metadata_animation_url?: Maybe - metadata_content_type?: Maybe - metadata_description?: Maybe - metadata_image?: Maybe - metadata_name?: Maybe - name?: Maybe - owner?: Maybe - sn?: Maybe - transferable?: Maybe - txBlock?: Maybe - txCaller?: Maybe - updatedAtBlock?: Maybe - updated_at?: Maybe -} - -/** order by max() on columns of table "nfts" */ -export type Nfts_Max_Order_By = { - block?: InputMaybe - burned?: InputMaybe - collectionId?: InputMaybe - data?: InputMaybe - forsale?: InputMaybe - id?: InputMaybe - id_md5?: InputMaybe - instance?: InputMaybe - metadata?: InputMaybe - metadata_animation_url?: InputMaybe - metadata_content_type?: InputMaybe - metadata_description?: InputMaybe - metadata_image?: InputMaybe - metadata_name?: InputMaybe - name?: InputMaybe - owner?: InputMaybe - sn?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - txCaller?: InputMaybe - updatedAtBlock?: InputMaybe - updated_at?: InputMaybe -} - -/** aggregate min on columns */ -export type Nfts_Min_Fields = { - __typename?: 'nfts_min_fields' - block?: Maybe - burned?: Maybe - collectionId?: Maybe - data?: Maybe - forsale?: Maybe - id?: Maybe - id_md5?: Maybe - instance?: Maybe - metadata?: Maybe - metadata_animation_url?: Maybe - metadata_content_type?: Maybe - metadata_description?: Maybe - metadata_image?: Maybe - metadata_name?: Maybe - name?: Maybe - owner?: Maybe - sn?: Maybe - transferable?: Maybe - txBlock?: Maybe - txCaller?: Maybe - updatedAtBlock?: Maybe - updated_at?: Maybe -} - -/** order by min() on columns of table "nfts" */ -export type Nfts_Min_Order_By = { - block?: InputMaybe - burned?: InputMaybe - collectionId?: InputMaybe - data?: InputMaybe - forsale?: InputMaybe - id?: InputMaybe - id_md5?: InputMaybe - instance?: InputMaybe - metadata?: InputMaybe - metadata_animation_url?: InputMaybe - metadata_content_type?: InputMaybe - metadata_description?: InputMaybe - metadata_image?: InputMaybe - metadata_name?: InputMaybe - name?: InputMaybe - owner?: InputMaybe - sn?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - txCaller?: InputMaybe - updatedAtBlock?: InputMaybe - updated_at?: InputMaybe -} - -/** ordering options when selecting data from "nfts" */ -export type Nfts_Order_By = { - block?: InputMaybe - burned?: InputMaybe - changes_aggregate?: InputMaybe - collection?: InputMaybe - collectionId?: InputMaybe - data?: InputMaybe - forsale?: InputMaybe - id?: InputMaybe - id_md5?: InputMaybe - instance?: InputMaybe - kanaria_houou_aggregate?: InputMaybe - metadata?: InputMaybe - metadata_animation_url?: InputMaybe - metadata_content_type?: InputMaybe - metadata_description?: InputMaybe - metadata_image?: InputMaybe - metadata_name?: InputMaybe - name?: InputMaybe - nft_reaction_stats_aggregate?: InputMaybe - nfts_stats?: InputMaybe - owner?: InputMaybe - reactions_aggregate?: InputMaybe - singular_nsfw_aggregate?: InputMaybe - sn?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - txCaller?: InputMaybe - txPending?: InputMaybe - updatedAtBlock?: InputMaybe - updated_at?: InputMaybe -} - -/** primary key columns input for table: "nfts" */ -export type Nfts_Pk_Columns_Input = { - id: Scalars['String'] -} - -/** columns and relationships of "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats = { - __typename?: 'nfts_reactions_stats' - count?: Maybe - nft_id?: Maybe - /** An object relationship */ - nft_reaction_stats?: Maybe -} - -/** aggregated selection of "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Aggregate = { - __typename?: 'nfts_reactions_stats_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Aggregate_Fields = { - __typename?: 'nfts_reactions_stats_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Nfts_Reactions_Stats_Avg_Fields = { - __typename?: 'nfts_reactions_stats_avg_fields' - count?: Maybe -} - -/** order by avg() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Avg_Order_By = { - count?: InputMaybe -} - -/** Boolean expression to filter rows from the table "nfts_reactions_stats". All fields are combined with a logical 'AND'. */ -export type Nfts_Reactions_Stats_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - count?: InputMaybe - nft_id?: InputMaybe - nft_reaction_stats?: InputMaybe -} - -/** aggregate max on columns */ -export type Nfts_Reactions_Stats_Max_Fields = { - __typename?: 'nfts_reactions_stats_max_fields' - count?: Maybe - nft_id?: Maybe -} - -/** order by max() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Max_Order_By = { - count?: InputMaybe - nft_id?: InputMaybe -} - -/** aggregate min on columns */ -export type Nfts_Reactions_Stats_Min_Fields = { - __typename?: 'nfts_reactions_stats_min_fields' - count?: Maybe - nft_id?: Maybe -} - -/** order by min() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Min_Order_By = { - count?: InputMaybe - nft_id?: InputMaybe -} - -/** ordering options when selecting data from "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Order_By = { - count?: InputMaybe - nft_id?: InputMaybe - nft_reaction_stats?: InputMaybe -} - -/** select columns of table "nfts_reactions_stats" */ -export enum Nfts_Reactions_Stats_Select_Column { - /** column name */ - Count = 'count', - /** column name */ - NftId = 'nft_id', -} - -/** aggregate stddev on columns */ -export type Nfts_Reactions_Stats_Stddev_Fields = { - __typename?: 'nfts_reactions_stats_stddev_fields' - count?: Maybe -} - -/** order by stddev() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Stddev_Order_By = { - count?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Nfts_Reactions_Stats_Stddev_Pop_Fields = { - __typename?: 'nfts_reactions_stats_stddev_pop_fields' - count?: Maybe -} - -/** order by stddev_pop() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Stddev_Pop_Order_By = { - count?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Nfts_Reactions_Stats_Stddev_Samp_Fields = { - __typename?: 'nfts_reactions_stats_stddev_samp_fields' - count?: Maybe -} - -/** order by stddev_samp() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Stddev_Samp_Order_By = { - count?: InputMaybe -} - -/** aggregate sum on columns */ -export type Nfts_Reactions_Stats_Sum_Fields = { - __typename?: 'nfts_reactions_stats_sum_fields' - count?: Maybe -} - -/** order by sum() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Sum_Order_By = { - count?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Nfts_Reactions_Stats_Var_Pop_Fields = { - __typename?: 'nfts_reactions_stats_var_pop_fields' - count?: Maybe -} - -/** order by var_pop() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Var_Pop_Order_By = { - count?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Nfts_Reactions_Stats_Var_Samp_Fields = { - __typename?: 'nfts_reactions_stats_var_samp_fields' - count?: Maybe -} - -/** order by var_samp() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Var_Samp_Order_By = { - count?: InputMaybe -} - -/** aggregate variance on columns */ -export type Nfts_Reactions_Stats_Variance_Fields = { - __typename?: 'nfts_reactions_stats_variance_fields' - count?: Maybe -} - -/** order by variance() on columns of table "nfts_reactions_stats" */ -export type Nfts_Reactions_Stats_Variance_Order_By = { - count?: InputMaybe -} - -/** select columns of table "nfts" */ -export enum Nfts_Select_Column { - /** column name */ - Block = 'block', - /** column name */ - Burned = 'burned', - /** column name */ - CollectionId = 'collectionId', - /** column name */ - Data = 'data', - /** column name */ - Forsale = 'forsale', - /** column name */ - Id = 'id', - /** column name */ - IdMd5 = 'id_md5', - /** column name */ - Instance = 'instance', - /** column name */ - Metadata = 'metadata', - /** column name */ - MetadataAnimationUrl = 'metadata_animation_url', - /** column name */ - MetadataContentType = 'metadata_content_type', - /** column name */ - MetadataDescription = 'metadata_description', - /** column name */ - MetadataImage = 'metadata_image', - /** column name */ - MetadataName = 'metadata_name', - /** column name */ - Name = 'name', - /** column name */ - Owner = 'owner', - /** column name */ - Sn = 'sn', - /** column name */ - Transferable = 'transferable', - /** column name */ - TxBlock = 'txBlock', - /** column name */ - TxCaller = 'txCaller', - /** column name */ - TxPending = 'txPending', - /** column name */ - UpdatedAtBlock = 'updatedAtBlock', - /** column name */ - UpdatedAt = 'updated_at', -} - -/** columns and relationships of "nfts_stats" */ -export type Nfts_Stats = { - __typename?: 'nfts_stats' - collection_id?: Maybe - count?: Maybe -} - -/** Boolean expression to filter rows from the table "nfts_stats". All fields are combined with a logical 'AND'. */ -export type Nfts_Stats_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - collection_id?: InputMaybe - count?: InputMaybe -} - -/** ordering options when selecting data from "nfts_stats" */ -export type Nfts_Stats_Order_By = { - collection_id?: InputMaybe - count?: InputMaybe -} - -/** select columns of table "nfts_stats" */ -export enum Nfts_Stats_Select_Column { - /** column name */ - CollectionId = 'collection_id', - /** column name */ - Count = 'count', -} - -/** aggregate stddev on columns */ -export type Nfts_Stddev_Fields = { - __typename?: 'nfts_stddev_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - txBlock?: Maybe - updatedAtBlock?: Maybe -} - -/** order by stddev() on columns of table "nfts" */ -export type Nfts_Stddev_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - updatedAtBlock?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Nfts_Stddev_Pop_Fields = { - __typename?: 'nfts_stddev_pop_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - txBlock?: Maybe - updatedAtBlock?: Maybe -} - -/** order by stddev_pop() on columns of table "nfts" */ -export type Nfts_Stddev_Pop_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - updatedAtBlock?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Nfts_Stddev_Samp_Fields = { - __typename?: 'nfts_stddev_samp_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - txBlock?: Maybe - updatedAtBlock?: Maybe -} - -/** order by stddev_samp() on columns of table "nfts" */ -export type Nfts_Stddev_Samp_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - updatedAtBlock?: InputMaybe -} - -/** aggregate sum on columns */ -export type Nfts_Sum_Fields = { - __typename?: 'nfts_sum_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - txBlock?: Maybe - updatedAtBlock?: Maybe -} - -/** order by sum() on columns of table "nfts" */ -export type Nfts_Sum_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - updatedAtBlock?: InputMaybe -} - -/** aggregate var_pop on columns */ -export type Nfts_Var_Pop_Fields = { - __typename?: 'nfts_var_pop_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - txBlock?: Maybe - updatedAtBlock?: Maybe -} - -/** order by var_pop() on columns of table "nfts" */ -export type Nfts_Var_Pop_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - updatedAtBlock?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Nfts_Var_Samp_Fields = { - __typename?: 'nfts_var_samp_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - txBlock?: Maybe - updatedAtBlock?: Maybe -} - -/** order by var_samp() on columns of table "nfts" */ -export type Nfts_Var_Samp_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - updatedAtBlock?: InputMaybe -} - -/** aggregate variance on columns */ -export type Nfts_Variance_Fields = { - __typename?: 'nfts_variance_fields' - block?: Maybe - forsale?: Maybe - transferable?: Maybe - txBlock?: Maybe - updatedAtBlock?: Maybe -} - -/** order by variance() on columns of table "nfts" */ -export type Nfts_Variance_Order_By = { - block?: InputMaybe - forsale?: InputMaybe - transferable?: InputMaybe - txBlock?: InputMaybe - updatedAtBlock?: InputMaybe -} - -/** column ordering options */ -export enum Order_By { - /** in the ascending order, nulls last */ - Asc = 'asc', - /** in the ascending order, nulls first */ - AscNullsFirst = 'asc_nulls_first', - /** in the ascending order, nulls last */ - AscNullsLast = 'asc_nulls_last', - /** in the descending order, nulls first */ - Desc = 'desc', - /** in the descending order, nulls first */ - DescNullsFirst = 'desc_nulls_first', - /** in the descending order, nulls last */ - DescNullsLast = 'desc_nulls_last', -} - -/** query root */ -export type Query_Root = { - __typename?: 'query_root' - /** fetch data from the table: "art_contest_nfts" */ - art_contest_nfts: Array - /** fetch aggregated fields from the table: "art_contest_nfts" */ - art_contest_nfts_aggregate: Art_Contest_Nfts_Aggregate - /** fetch data from the table: "art_contest_nfts" using primary key columns */ - art_contest_nfts_by_pk?: Maybe - /** fetch data from the table: "art_contest_submissions" */ - art_contest_submissions: Array - /** fetch aggregated fields from the table: "art_contest_submissions" */ - art_contest_submissions_aggregate: Art_Contest_Submissions_Aggregate - /** fetch data from the table: "art_contest_submissions" using primary key columns */ - art_contest_submissions_by_pk?: Maybe - /** fetch data from the table: "art_contest_votes" */ - art_contest_votes: Array - /** fetch aggregated fields from the table: "art_contest_votes" */ - art_contest_votes_aggregate: Art_Contest_Votes_Aggregate - /** fetch data from the table: "art_contest_votes" using primary key columns */ - art_contest_votes_by_pk?: Maybe - /** fetch data from the table: "changes" */ - changes: Array - /** fetch aggregated fields from the table: "changes" */ - changes_aggregate: Changes_Aggregate - /** fetch data from the table: "changes" using primary key columns */ - changes_by_pk?: Maybe - /** fetch data from the table: "changes_collection" */ - changes_collection: Array - /** fetch aggregated fields from the table: "changes_collection" */ - changes_collection_aggregate: Changes_Collection_Aggregate - /** fetch data from the table: "changes_collection" using primary key columns */ - changes_collection_by_pk?: Maybe - /** fetch data from the table: "collection_banners" */ - collection_banners: Array - /** fetch data from the table: "collection_banners" using primary key columns */ - collection_banners_by_pk?: Maybe - /** fetch data from the table: "collections" */ - collections: Array - /** fetch aggregated fields from the table: "collections" */ - collections_aggregate: Collections_Aggregate - /** fetch data from the table: "collections" using primary key columns */ - collections_by_pk?: Maybe - /** fetch data from the table: "distinct_nfts" */ - distinct_nfts: Array - /** fetch aggregated fields from the table: "distinct_nfts" */ - distinct_nfts_aggregate: Distinct_Nfts_Aggregate - /** execute function "get_by_unicode" which returns "reactions" */ - get_by_unicode: Array - /** execute function "get_by_unicode" and query aggregates on result of table type "reactions" */ - get_by_unicode_aggregate: Reactions_Aggregate - /** execute function "get_newly_listed" which returns "nfts" */ - get_newly_listed: Array - /** execute function "get_newly_listed" and query aggregates on result of table type "nfts" */ - get_newly_listed_aggregate: Nfts_Aggregate - /** execute function "get_newly_minted" which returns "nfts" */ - get_newly_minted: Array - /** execute function "get_newly_minted" and query aggregates on result of table type "nfts" */ - get_newly_minted_aggregate: Nfts_Aggregate - /** fetch data from the table: "kanaria_houou" */ - kanaria_houou: Array - /** fetch aggregated fields from the table: "kanaria_houou" */ - kanaria_houou_aggregate: Kanaria_Houou_Aggregate - /** fetch data from the table: "kanaria_houou" using primary key columns */ - kanaria_houou_by_pk?: Maybe - /** fetch data from the table: "nfts" */ - nfts: Array - /** fetch aggregated fields from the table: "nfts" */ - nfts_aggregate: Nfts_Aggregate - /** fetch data from the table: "nfts" using primary key columns */ - nfts_by_pk?: Maybe - /** fetch data from the table: "nfts_reactions_stats" */ - nfts_reactions_stats: Array - /** fetch aggregated fields from the table: "nfts_reactions_stats" */ - nfts_reactions_stats_aggregate: Nfts_Reactions_Stats_Aggregate - /** fetch data from the table: "nfts_stats" */ - nfts_stats: Array - /** fetch data from the table: "reactions" */ - reactions: Array - /** fetch aggregated fields from the table: "reactions" */ - reactions_aggregate: Reactions_Aggregate - /** fetch data from the table: "reactions" using primary key columns */ - reactions_by_pk?: Maybe - /** fetch data from the table: "reactions_unicode" */ - reactions_unicode: Array - /** fetch aggregated fields from the table: "reactions_unicode" */ - reactions_unicode_aggregate: Reactions_Unicode_Aggregate - /** fetch data from the table: "reactions_users" */ - reactions_users: Array - /** fetch aggregated fields from the table: "reactions_users" */ - reactions_users_aggregate: Reactions_Users_Aggregate - /** fetch data from the table: "singular_blacklisted_accounts" */ - singular_blacklisted_accounts: Array - /** fetch data from the table: "singular_blacklisted_accounts" using primary key columns */ - singular_blacklisted_accounts_by_pk?: Maybe - /** fetch data from the table: "singular_blacklisted_collections" */ - singular_blacklisted_collections: Array - /** fetch data from the table: "singular_blacklisted_collections" using primary key columns */ - singular_blacklisted_collections_by_pk?: Maybe - /** fetch data from the table: "singular_curated" */ - singular_curated: Array - /** fetch data from the table: "singular_curated" using primary key columns */ - singular_curated_by_pk?: Maybe - /** fetch data from the table: "singular_curated_collections" */ - singular_curated_collections: Array - /** fetch data from the table: "singular_curated_collections" using primary key columns */ - singular_curated_collections_by_pk?: Maybe - /** fetch data from the table: "singular_hidden_collections" */ - singular_hidden_collections: Array - /** fetch data from the table: "singular_hidden_collections" using primary key columns */ - singular_hidden_collections_by_pk?: Maybe - /** fetch data from the table: "singular_hidden_nfts" */ - singular_hidden_nfts: Array - /** fetch data from the table: "singular_hidden_nfts" using primary key columns */ - singular_hidden_nfts_by_pk?: Maybe - /** fetch data from the table: "singular_nsfw_collections" */ - singular_nsfw_collections: Array - /** fetch aggregated fields from the table: "singular_nsfw_collections" */ - singular_nsfw_collections_aggregate: Singular_Nsfw_Collections_Aggregate - /** fetch data from the table: "singular_nsfw_collections" using primary key columns */ - singular_nsfw_collections_by_pk?: Maybe - /** fetch data from the table: "singular_nsfw_nfts" */ - singular_nsfw_nfts: Array - /** fetch aggregated fields from the table: "singular_nsfw_nfts" */ - singular_nsfw_nfts_aggregate: Singular_Nsfw_Nfts_Aggregate - /** fetch data from the table: "singular_nsfw_nfts" using primary key columns */ - singular_nsfw_nfts_by_pk?: Maybe - /** fetch data from the table: "singular_verified_collections" */ - singular_verified_collections: Array - /** fetch data from the table: "singular_verified_collections" using primary key columns */ - singular_verified_collections_by_pk?: Maybe - /** fetch data from the table: "system" */ - system: Array - /** fetch data from the table: "system" using primary key columns */ - system_by_pk?: Maybe -} - -/** query root */ -export type Query_RootArt_Contest_NftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootArt_Contest_Nfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootArt_Contest_Nfts_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** query root */ -export type Query_RootArt_Contest_SubmissionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootArt_Contest_Submissions_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootArt_Contest_Submissions_By_PkArgs = { - id: Scalars['Int'] -} - -/** query root */ -export type Query_RootArt_Contest_VotesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootArt_Contest_Votes_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootArt_Contest_Votes_By_PkArgs = { - caller: Scalars['String'] - nft_id: Scalars['String'] -} - -/** query root */ -export type Query_RootChangesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootChanges_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootChanges_By_PkArgs = { - id: Scalars['Int'] -} - -/** query root */ -export type Query_RootChanges_CollectionArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootChanges_Collection_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootChanges_Collection_By_PkArgs = { - id: Scalars['Int'] -} - -/** query root */ -export type Query_RootCollection_BannersArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootCollection_Banners_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** query root */ -export type Query_RootCollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootCollections_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootCollections_By_PkArgs = { - id: Scalars['String'] -} - -/** query root */ -export type Query_RootDistinct_NftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootDistinct_Nfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootGet_By_UnicodeArgs = { - args: Get_By_Unicode_Args - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootGet_By_Unicode_AggregateArgs = { - args: Get_By_Unicode_Args - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootGet_Newly_ListedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootGet_Newly_Listed_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootGet_Newly_MintedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootGet_Newly_Minted_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootKanaria_HououArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootKanaria_Houou_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootKanaria_Houou_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** query root */ -export type Query_RootNftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootNfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootNfts_By_PkArgs = { - id: Scalars['String'] -} - -/** query root */ -export type Query_RootNfts_Reactions_StatsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootNfts_Reactions_Stats_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootNfts_StatsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootReactionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootReactions_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootReactions_By_PkArgs = { - nft_id: Scalars['String'] - owner: Scalars['String'] - unicode: Scalars['String'] -} - -/** query root */ -export type Query_RootReactions_UnicodeArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootReactions_Unicode_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootReactions_UsersArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootReactions_Users_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Blacklisted_AccountsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Blacklisted_Accounts_By_PkArgs = { - account: Scalars['String'] -} - -/** query root */ -export type Query_RootSingular_Blacklisted_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Blacklisted_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** query root */ -export type Query_RootSingular_CuratedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Curated_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** query root */ -export type Query_RootSingular_Curated_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Curated_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** query root */ -export type Query_RootSingular_Hidden_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Hidden_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** query root */ -export type Query_RootSingular_Hidden_NftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Hidden_Nfts_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** query root */ -export type Query_RootSingular_Nsfw_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Nsfw_Collections_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Nsfw_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** query root */ -export type Query_RootSingular_Nsfw_NftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Nsfw_Nfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Nsfw_Nfts_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** query root */ -export type Query_RootSingular_Verified_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSingular_Verified_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** query root */ -export type Query_RootSystemArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** query root */ -export type Query_RootSystem_By_PkArgs = { - purchaseEnabled: Scalars['Boolean'] -} - -/** columns and relationships of "reactions" */ -export type Reactions = { - __typename?: 'reactions' - created_at: Scalars['timestamptz'] - id: Scalars['Int'] - /** An object relationship */ - nft: Nfts - nft_id: Scalars['String'] - owner: Scalars['String'] - /** An array relationship */ - reactions_unicode: Array - /** An aggregated array relationship */ - reactions_unicode_aggregate: Reactions_Unicode_Aggregate - unicode: Scalars['String'] - /** An array relationship */ - user_reactions: Array - /** An aggregated array relationship */ - user_reactions_aggregate: Reactions_Users_Aggregate -} - -/** columns and relationships of "reactions" */ -export type ReactionsReactions_UnicodeArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "reactions" */ -export type ReactionsReactions_Unicode_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "reactions" */ -export type ReactionsUser_ReactionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "reactions" */ -export type ReactionsUser_Reactions_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** aggregated selection of "reactions" */ -export type Reactions_Aggregate = { - __typename?: 'reactions_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "reactions" */ -export type Reactions_Aggregate_Fields = { - __typename?: 'reactions_aggregate_fields' - avg?: Maybe - count?: Maybe - max?: Maybe - min?: Maybe - stddev?: Maybe - stddev_pop?: Maybe - stddev_samp?: Maybe - sum?: Maybe - var_pop?: Maybe - var_samp?: Maybe - variance?: Maybe -} - -/** aggregate fields of "reactions" */ -export type Reactions_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "reactions" */ -export type Reactions_Aggregate_Order_By = { - avg?: InputMaybe - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe - stddev?: InputMaybe - stddev_pop?: InputMaybe - stddev_samp?: InputMaybe - sum?: InputMaybe - var_pop?: InputMaybe - var_samp?: InputMaybe - variance?: InputMaybe -} - -/** aggregate avg on columns */ -export type Reactions_Avg_Fields = { - __typename?: 'reactions_avg_fields' - id?: Maybe -} - -/** order by avg() on columns of table "reactions" */ -export type Reactions_Avg_Order_By = { - id?: InputMaybe -} - -/** Boolean expression to filter rows from the table "reactions". All fields are combined with a logical 'AND'. */ -export type Reactions_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - created_at?: InputMaybe - id?: InputMaybe - nft?: InputMaybe - nft_id?: InputMaybe - owner?: InputMaybe - reactions_unicode?: InputMaybe - unicode?: InputMaybe - user_reactions?: InputMaybe -} - -/** aggregate max on columns */ -export type Reactions_Max_Fields = { - __typename?: 'reactions_max_fields' - created_at?: Maybe - id?: Maybe - nft_id?: Maybe - owner?: Maybe - unicode?: Maybe -} - -/** order by max() on columns of table "reactions" */ -export type Reactions_Max_Order_By = { - created_at?: InputMaybe - id?: InputMaybe - nft_id?: InputMaybe - owner?: InputMaybe - unicode?: InputMaybe -} - -/** aggregate min on columns */ -export type Reactions_Min_Fields = { - __typename?: 'reactions_min_fields' - created_at?: Maybe - id?: Maybe - nft_id?: Maybe - owner?: Maybe - unicode?: Maybe -} - -/** order by min() on columns of table "reactions" */ -export type Reactions_Min_Order_By = { - created_at?: InputMaybe - id?: InputMaybe - nft_id?: InputMaybe - owner?: InputMaybe - unicode?: InputMaybe -} - -/** ordering options when selecting data from "reactions" */ -export type Reactions_Order_By = { - created_at?: InputMaybe - id?: InputMaybe - nft?: InputMaybe - nft_id?: InputMaybe - owner?: InputMaybe - reactions_unicode_aggregate?: InputMaybe - unicode?: InputMaybe - user_reactions_aggregate?: InputMaybe -} - -/** primary key columns input for table: "reactions" */ -export type Reactions_Pk_Columns_Input = { - nft_id: Scalars['String'] - owner: Scalars['String'] - unicode: Scalars['String'] -} - -/** select columns of table "reactions" */ -export enum Reactions_Select_Column { - /** column name */ - CreatedAt = 'created_at', - /** column name */ - Id = 'id', - /** column name */ - NftId = 'nft_id', - /** column name */ - Owner = 'owner', - /** column name */ - Unicode = 'unicode', -} - -/** aggregate stddev on columns */ -export type Reactions_Stddev_Fields = { - __typename?: 'reactions_stddev_fields' - id?: Maybe -} - -/** order by stddev() on columns of table "reactions" */ -export type Reactions_Stddev_Order_By = { - id?: InputMaybe -} - -/** aggregate stddev_pop on columns */ -export type Reactions_Stddev_Pop_Fields = { - __typename?: 'reactions_stddev_pop_fields' - id?: Maybe -} - -/** order by stddev_pop() on columns of table "reactions" */ -export type Reactions_Stddev_Pop_Order_By = { - id?: InputMaybe -} - -/** aggregate stddev_samp on columns */ -export type Reactions_Stddev_Samp_Fields = { - __typename?: 'reactions_stddev_samp_fields' - id?: Maybe -} - -/** order by stddev_samp() on columns of table "reactions" */ -export type Reactions_Stddev_Samp_Order_By = { - id?: InputMaybe -} - -/** aggregate sum on columns */ -export type Reactions_Sum_Fields = { - __typename?: 'reactions_sum_fields' - id?: Maybe -} - -/** order by sum() on columns of table "reactions" */ -export type Reactions_Sum_Order_By = { - id?: InputMaybe -} - -/** columns and relationships of "reactions_unicode" */ -export type Reactions_Unicode = { - __typename?: 'reactions_unicode' - nft_id?: Maybe - owner?: Maybe - /** An object relationship */ - reactions_unicode?: Maybe - unicode?: Maybe -} - -/** aggregated selection of "reactions_unicode" */ -export type Reactions_Unicode_Aggregate = { - __typename?: 'reactions_unicode_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "reactions_unicode" */ -export type Reactions_Unicode_Aggregate_Fields = { - __typename?: 'reactions_unicode_aggregate_fields' - count?: Maybe - max?: Maybe - min?: Maybe -} - -/** aggregate fields of "reactions_unicode" */ -export type Reactions_Unicode_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "reactions_unicode" */ -export type Reactions_Unicode_Aggregate_Order_By = { - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe -} - -/** Boolean expression to filter rows from the table "reactions_unicode". All fields are combined with a logical 'AND'. */ -export type Reactions_Unicode_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - nft_id?: InputMaybe - owner?: InputMaybe - reactions_unicode?: InputMaybe - unicode?: InputMaybe -} - -/** aggregate max on columns */ -export type Reactions_Unicode_Max_Fields = { - __typename?: 'reactions_unicode_max_fields' - nft_id?: Maybe - owner?: Maybe - unicode?: Maybe -} - -/** order by max() on columns of table "reactions_unicode" */ -export type Reactions_Unicode_Max_Order_By = { - nft_id?: InputMaybe - owner?: InputMaybe - unicode?: InputMaybe -} - -/** aggregate min on columns */ -export type Reactions_Unicode_Min_Fields = { - __typename?: 'reactions_unicode_min_fields' - nft_id?: Maybe - owner?: Maybe - unicode?: Maybe -} - -/** order by min() on columns of table "reactions_unicode" */ -export type Reactions_Unicode_Min_Order_By = { - nft_id?: InputMaybe - owner?: InputMaybe - unicode?: InputMaybe -} - -/** ordering options when selecting data from "reactions_unicode" */ -export type Reactions_Unicode_Order_By = { - nft_id?: InputMaybe - owner?: InputMaybe - reactions_unicode?: InputMaybe - unicode?: InputMaybe -} - -/** select columns of table "reactions_unicode" */ -export enum Reactions_Unicode_Select_Column { - /** column name */ - NftId = 'nft_id', - /** column name */ - Owner = 'owner', - /** column name */ - Unicode = 'unicode', -} - -/** columns and relationships of "reactions_users" */ -export type Reactions_Users = { - __typename?: 'reactions_users' - nft_id?: Maybe - owner?: Maybe - unicode?: Maybe - /** An object relationship */ - user_reactions?: Maybe -} - -/** aggregated selection of "reactions_users" */ -export type Reactions_Users_Aggregate = { - __typename?: 'reactions_users_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "reactions_users" */ -export type Reactions_Users_Aggregate_Fields = { - __typename?: 'reactions_users_aggregate_fields' - count?: Maybe - max?: Maybe - min?: Maybe -} - -/** aggregate fields of "reactions_users" */ -export type Reactions_Users_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "reactions_users" */ -export type Reactions_Users_Aggregate_Order_By = { - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe -} - -/** Boolean expression to filter rows from the table "reactions_users". All fields are combined with a logical 'AND'. */ -export type Reactions_Users_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - nft_id?: InputMaybe - owner?: InputMaybe - unicode?: InputMaybe - user_reactions?: InputMaybe -} - -/** aggregate max on columns */ -export type Reactions_Users_Max_Fields = { - __typename?: 'reactions_users_max_fields' - nft_id?: Maybe - owner?: Maybe - unicode?: Maybe -} - -/** order by max() on columns of table "reactions_users" */ -export type Reactions_Users_Max_Order_By = { - nft_id?: InputMaybe - owner?: InputMaybe - unicode?: InputMaybe -} - -/** aggregate min on columns */ -export type Reactions_Users_Min_Fields = { - __typename?: 'reactions_users_min_fields' - nft_id?: Maybe - owner?: Maybe - unicode?: Maybe -} - -/** order by min() on columns of table "reactions_users" */ -export type Reactions_Users_Min_Order_By = { - nft_id?: InputMaybe - owner?: InputMaybe - unicode?: InputMaybe -} - -/** ordering options when selecting data from "reactions_users" */ -export type Reactions_Users_Order_By = { - nft_id?: InputMaybe - owner?: InputMaybe - unicode?: InputMaybe - user_reactions?: InputMaybe -} - -/** select columns of table "reactions_users" */ -export enum Reactions_Users_Select_Column { - /** column name */ - NftId = 'nft_id', - /** column name */ - Owner = 'owner', - /** column name */ - Unicode = 'unicode', -} - -/** aggregate var_pop on columns */ -export type Reactions_Var_Pop_Fields = { - __typename?: 'reactions_var_pop_fields' - id?: Maybe -} - -/** order by var_pop() on columns of table "reactions" */ -export type Reactions_Var_Pop_Order_By = { - id?: InputMaybe -} - -/** aggregate var_samp on columns */ -export type Reactions_Var_Samp_Fields = { - __typename?: 'reactions_var_samp_fields' - id?: Maybe -} - -/** order by var_samp() on columns of table "reactions" */ -export type Reactions_Var_Samp_Order_By = { - id?: InputMaybe -} - -/** aggregate variance on columns */ -export type Reactions_Variance_Fields = { - __typename?: 'reactions_variance_fields' - id?: Maybe -} - -/** order by variance() on columns of table "reactions" */ -export type Reactions_Variance_Order_By = { - id?: InputMaybe -} - -/** columns and relationships of "singular_blacklisted_accounts" */ -export type Singular_Blacklisted_Accounts = { - __typename?: 'singular_blacklisted_accounts' - account: Scalars['String'] - /** An array relationship */ - accounts: Array - /** An aggregated array relationship */ - accounts_aggregate: Collections_Aggregate - created_at: Scalars['timestamptz'] -} - -/** columns and relationships of "singular_blacklisted_accounts" */ -export type Singular_Blacklisted_AccountsAccountsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** columns and relationships of "singular_blacklisted_accounts" */ -export type Singular_Blacklisted_AccountsAccounts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** Boolean expression to filter rows from the table "singular_blacklisted_accounts". All fields are combined with a logical 'AND'. */ -export type Singular_Blacklisted_Accounts_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - account?: InputMaybe - accounts?: InputMaybe - created_at?: InputMaybe -} - -/** ordering options when selecting data from "singular_blacklisted_accounts" */ -export type Singular_Blacklisted_Accounts_Order_By = { - account?: InputMaybe - accounts_aggregate?: InputMaybe - created_at?: InputMaybe -} - -/** primary key columns input for table: "singular_blacklisted_accounts" */ -export type Singular_Blacklisted_Accounts_Pk_Columns_Input = { - account: Scalars['String'] -} - -/** select columns of table "singular_blacklisted_accounts" */ -export enum Singular_Blacklisted_Accounts_Select_Column { - /** column name */ - Account = 'account', - /** column name */ - CreatedAt = 'created_at', -} - -/** columns and relationships of "singular_blacklisted_collections" */ -export type Singular_Blacklisted_Collections = { - __typename?: 'singular_blacklisted_collections' - /** An object relationship */ - collection?: Maybe - collection_id: Scalars['String'] - created_at: Scalars['timestamptz'] -} - -/** Boolean expression to filter rows from the table "singular_blacklisted_collections". All fields are combined with a logical 'AND'. */ -export type Singular_Blacklisted_Collections_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - collection?: InputMaybe - collection_id?: InputMaybe - created_at?: InputMaybe -} - -/** ordering options when selecting data from "singular_blacklisted_collections" */ -export type Singular_Blacklisted_Collections_Order_By = { - collection?: InputMaybe - collection_id?: InputMaybe - created_at?: InputMaybe -} - -/** primary key columns input for table: "singular_blacklisted_collections" */ -export type Singular_Blacklisted_Collections_Pk_Columns_Input = { - collection_id: Scalars['String'] -} - -/** select columns of table "singular_blacklisted_collections" */ -export enum Singular_Blacklisted_Collections_Select_Column { - /** column name */ - CollectionId = 'collection_id', - /** column name */ - CreatedAt = 'created_at', -} - -/** columns and relationships of "singular_curated" */ -export type Singular_Curated = { - __typename?: 'singular_curated' - created_at: Scalars['timestamptz'] - /** An object relationship */ - nft: Nfts - nft_id: Scalars['String'] -} - -/** Boolean expression to filter rows from the table "singular_curated". All fields are combined with a logical 'AND'. */ -export type Singular_Curated_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - created_at?: InputMaybe - nft?: InputMaybe - nft_id?: InputMaybe -} - -/** columns and relationships of "singular_curated_collections" */ -export type Singular_Curated_Collections = { - __typename?: 'singular_curated_collections' - collection_id: Scalars['String'] - created_at: Scalars['timestamptz'] -} - -/** Boolean expression to filter rows from the table "singular_curated_collections". All fields are combined with a logical 'AND'. */ -export type Singular_Curated_Collections_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - collection_id?: InputMaybe - created_at?: InputMaybe -} - -/** ordering options when selecting data from "singular_curated_collections" */ -export type Singular_Curated_Collections_Order_By = { - collection_id?: InputMaybe - created_at?: InputMaybe -} - -/** primary key columns input for table: "singular_curated_collections" */ -export type Singular_Curated_Collections_Pk_Columns_Input = { - collection_id: Scalars['String'] -} - -/** select columns of table "singular_curated_collections" */ -export enum Singular_Curated_Collections_Select_Column { - /** column name */ - CollectionId = 'collection_id', - /** column name */ - CreatedAt = 'created_at', -} - -/** ordering options when selecting data from "singular_curated" */ -export type Singular_Curated_Order_By = { - created_at?: InputMaybe - nft?: InputMaybe - nft_id?: InputMaybe -} - -/** primary key columns input for table: "singular_curated" */ -export type Singular_Curated_Pk_Columns_Input = { - nft_id: Scalars['String'] -} - -/** select columns of table "singular_curated" */ -export enum Singular_Curated_Select_Column { - /** column name */ - CreatedAt = 'created_at', - /** column name */ - NftId = 'nft_id', -} - -/** columns and relationships of "singular_hidden_collections" */ -export type Singular_Hidden_Collections = { - __typename?: 'singular_hidden_collections' - collection_id: Scalars['String'] - /** An object relationship */ - collections?: Maybe - created_at: Scalars['timestamptz'] -} - -/** Boolean expression to filter rows from the table "singular_hidden_collections". All fields are combined with a logical 'AND'. */ -export type Singular_Hidden_Collections_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - collection_id?: InputMaybe - collections?: InputMaybe - created_at?: InputMaybe -} - -/** ordering options when selecting data from "singular_hidden_collections" */ -export type Singular_Hidden_Collections_Order_By = { - collection_id?: InputMaybe - collections?: InputMaybe - created_at?: InputMaybe -} - -/** primary key columns input for table: "singular_hidden_collections" */ -export type Singular_Hidden_Collections_Pk_Columns_Input = { - collection_id: Scalars['String'] -} - -/** select columns of table "singular_hidden_collections" */ -export enum Singular_Hidden_Collections_Select_Column { - /** column name */ - CollectionId = 'collection_id', - /** column name */ - CreatedAt = 'created_at', -} - -/** columns and relationships of "singular_hidden_nfts" */ -export type Singular_Hidden_Nfts = { - __typename?: 'singular_hidden_nfts' - created_at: Scalars['timestamptz'] - nft_id: Scalars['String'] - /** An object relationship */ - nfts?: Maybe -} - -/** Boolean expression to filter rows from the table "singular_hidden_nfts". All fields are combined with a logical 'AND'. */ -export type Singular_Hidden_Nfts_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - created_at?: InputMaybe - nft_id?: InputMaybe - nfts?: InputMaybe -} - -/** ordering options when selecting data from "singular_hidden_nfts" */ -export type Singular_Hidden_Nfts_Order_By = { - created_at?: InputMaybe - nft_id?: InputMaybe - nfts?: InputMaybe -} - -/** primary key columns input for table: "singular_hidden_nfts" */ -export type Singular_Hidden_Nfts_Pk_Columns_Input = { - nft_id: Scalars['String'] -} - -/** select columns of table "singular_hidden_nfts" */ -export enum Singular_Hidden_Nfts_Select_Column { - /** column name */ - CreatedAt = 'created_at', - /** column name */ - NftId = 'nft_id', -} - -/** columns and relationships of "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections = { - __typename?: 'singular_nsfw_collections' - /** An object relationship */ - collection?: Maybe - collection_id: Scalars['String'] - created_at: Scalars['timestamptz'] - reason?: Maybe -} - -/** columns and relationships of "singular_nsfw_collections" */ -export type Singular_Nsfw_CollectionsReasonArgs = { - path?: InputMaybe -} - -/** aggregated selection of "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections_Aggregate = { - __typename?: 'singular_nsfw_collections_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections_Aggregate_Fields = { - __typename?: 'singular_nsfw_collections_aggregate_fields' - count?: Maybe - max?: Maybe - min?: Maybe -} - -/** aggregate fields of "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections_Aggregate_Order_By = { - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe -} - -/** Boolean expression to filter rows from the table "singular_nsfw_collections". All fields are combined with a logical 'AND'. */ -export type Singular_Nsfw_Collections_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - collection?: InputMaybe - collection_id?: InputMaybe - created_at?: InputMaybe - reason?: InputMaybe -} - -/** aggregate max on columns */ -export type Singular_Nsfw_Collections_Max_Fields = { - __typename?: 'singular_nsfw_collections_max_fields' - collection_id?: Maybe - created_at?: Maybe -} - -/** order by max() on columns of table "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections_Max_Order_By = { - collection_id?: InputMaybe - created_at?: InputMaybe -} - -/** aggregate min on columns */ -export type Singular_Nsfw_Collections_Min_Fields = { - __typename?: 'singular_nsfw_collections_min_fields' - collection_id?: Maybe - created_at?: Maybe -} - -/** order by min() on columns of table "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections_Min_Order_By = { - collection_id?: InputMaybe - created_at?: InputMaybe -} - -/** ordering options when selecting data from "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections_Order_By = { - collection?: InputMaybe - collection_id?: InputMaybe - created_at?: InputMaybe - reason?: InputMaybe -} - -/** primary key columns input for table: "singular_nsfw_collections" */ -export type Singular_Nsfw_Collections_Pk_Columns_Input = { - collection_id: Scalars['String'] -} - -/** select columns of table "singular_nsfw_collections" */ -export enum Singular_Nsfw_Collections_Select_Column { - /** column name */ - CollectionId = 'collection_id', - /** column name */ - CreatedAt = 'created_at', - /** column name */ - Reason = 'reason', -} - -/** columns and relationships of "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts = { - __typename?: 'singular_nsfw_nfts' - created_at: Scalars['timestamptz'] - /** An object relationship */ - nft: Nfts - nft_id: Scalars['String'] - reason?: Maybe -} - -/** columns and relationships of "singular_nsfw_nfts" */ -export type Singular_Nsfw_NftsReasonArgs = { - path?: InputMaybe -} - -/** aggregated selection of "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts_Aggregate = { - __typename?: 'singular_nsfw_nfts_aggregate' - aggregate?: Maybe - nodes: Array -} - -/** aggregate fields of "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts_Aggregate_Fields = { - __typename?: 'singular_nsfw_nfts_aggregate_fields' - count?: Maybe - max?: Maybe - min?: Maybe -} - -/** aggregate fields of "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts_Aggregate_FieldsCountArgs = { - columns?: InputMaybe> - distinct?: InputMaybe -} - -/** order by aggregate values of table "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts_Aggregate_Order_By = { - count?: InputMaybe - max?: InputMaybe - min?: InputMaybe -} - -/** Boolean expression to filter rows from the table "singular_nsfw_nfts". All fields are combined with a logical 'AND'. */ -export type Singular_Nsfw_Nfts_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - created_at?: InputMaybe - nft?: InputMaybe - nft_id?: InputMaybe - reason?: InputMaybe -} - -/** aggregate max on columns */ -export type Singular_Nsfw_Nfts_Max_Fields = { - __typename?: 'singular_nsfw_nfts_max_fields' - created_at?: Maybe - nft_id?: Maybe -} - -/** order by max() on columns of table "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts_Max_Order_By = { - created_at?: InputMaybe - nft_id?: InputMaybe -} - -/** aggregate min on columns */ -export type Singular_Nsfw_Nfts_Min_Fields = { - __typename?: 'singular_nsfw_nfts_min_fields' - created_at?: Maybe - nft_id?: Maybe -} - -/** order by min() on columns of table "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts_Min_Order_By = { - created_at?: InputMaybe - nft_id?: InputMaybe -} - -/** ordering options when selecting data from "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts_Order_By = { - created_at?: InputMaybe - nft?: InputMaybe - nft_id?: InputMaybe - reason?: InputMaybe -} - -/** primary key columns input for table: "singular_nsfw_nfts" */ -export type Singular_Nsfw_Nfts_Pk_Columns_Input = { - nft_id: Scalars['String'] -} - -/** select columns of table "singular_nsfw_nfts" */ -export enum Singular_Nsfw_Nfts_Select_Column { - /** column name */ - CreatedAt = 'created_at', - /** column name */ - NftId = 'nft_id', - /** column name */ - Reason = 'reason', -} - -/** columns and relationships of "singular_verified_collections" */ -export type Singular_Verified_Collections = { - __typename?: 'singular_verified_collections' - collection_id: Scalars['String'] - created_at?: Maybe -} - -/** Boolean expression to filter rows from the table "singular_verified_collections". All fields are combined with a logical 'AND'. */ -export type Singular_Verified_Collections_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - collection_id?: InputMaybe - created_at?: InputMaybe -} - -/** ordering options when selecting data from "singular_verified_collections" */ -export type Singular_Verified_Collections_Order_By = { - collection_id?: InputMaybe - created_at?: InputMaybe -} - -/** primary key columns input for table: "singular_verified_collections" */ -export type Singular_Verified_Collections_Pk_Columns_Input = { - collection_id: Scalars['String'] -} - -/** select columns of table "singular_verified_collections" */ -export enum Singular_Verified_Collections_Select_Column { - /** column name */ - CollectionId = 'collection_id', - /** column name */ - CreatedAt = 'created_at', -} - -/** subscription root */ -export type Subscription_Root = { - __typename?: 'subscription_root' - /** fetch data from the table: "art_contest_nfts" */ - art_contest_nfts: Array - /** fetch aggregated fields from the table: "art_contest_nfts" */ - art_contest_nfts_aggregate: Art_Contest_Nfts_Aggregate - /** fetch data from the table: "art_contest_nfts" using primary key columns */ - art_contest_nfts_by_pk?: Maybe - /** fetch data from the table: "art_contest_submissions" */ - art_contest_submissions: Array - /** fetch aggregated fields from the table: "art_contest_submissions" */ - art_contest_submissions_aggregate: Art_Contest_Submissions_Aggregate - /** fetch data from the table: "art_contest_submissions" using primary key columns */ - art_contest_submissions_by_pk?: Maybe - /** fetch data from the table: "art_contest_votes" */ - art_contest_votes: Array - /** fetch aggregated fields from the table: "art_contest_votes" */ - art_contest_votes_aggregate: Art_Contest_Votes_Aggregate - /** fetch data from the table: "art_contest_votes" using primary key columns */ - art_contest_votes_by_pk?: Maybe - /** fetch data from the table: "changes" */ - changes: Array - /** fetch aggregated fields from the table: "changes" */ - changes_aggregate: Changes_Aggregate - /** fetch data from the table: "changes" using primary key columns */ - changes_by_pk?: Maybe - /** fetch data from the table: "changes_collection" */ - changes_collection: Array - /** fetch aggregated fields from the table: "changes_collection" */ - changes_collection_aggregate: Changes_Collection_Aggregate - /** fetch data from the table: "changes_collection" using primary key columns */ - changes_collection_by_pk?: Maybe - /** fetch data from the table: "collection_banners" */ - collection_banners: Array - /** fetch data from the table: "collection_banners" using primary key columns */ - collection_banners_by_pk?: Maybe - /** fetch data from the table: "collections" */ - collections: Array - /** fetch aggregated fields from the table: "collections" */ - collections_aggregate: Collections_Aggregate - /** fetch data from the table: "collections" using primary key columns */ - collections_by_pk?: Maybe - /** fetch data from the table: "distinct_nfts" */ - distinct_nfts: Array - /** fetch aggregated fields from the table: "distinct_nfts" */ - distinct_nfts_aggregate: Distinct_Nfts_Aggregate - /** execute function "get_by_unicode" which returns "reactions" */ - get_by_unicode: Array - /** execute function "get_by_unicode" and query aggregates on result of table type "reactions" */ - get_by_unicode_aggregate: Reactions_Aggregate - /** execute function "get_newly_listed" which returns "nfts" */ - get_newly_listed: Array - /** execute function "get_newly_listed" and query aggregates on result of table type "nfts" */ - get_newly_listed_aggregate: Nfts_Aggregate - /** execute function "get_newly_minted" which returns "nfts" */ - get_newly_minted: Array - /** execute function "get_newly_minted" and query aggregates on result of table type "nfts" */ - get_newly_minted_aggregate: Nfts_Aggregate - /** fetch data from the table: "kanaria_houou" */ - kanaria_houou: Array - /** fetch aggregated fields from the table: "kanaria_houou" */ - kanaria_houou_aggregate: Kanaria_Houou_Aggregate - /** fetch data from the table: "kanaria_houou" using primary key columns */ - kanaria_houou_by_pk?: Maybe - /** fetch data from the table: "nfts" */ - nfts: Array - /** fetch aggregated fields from the table: "nfts" */ - nfts_aggregate: Nfts_Aggregate - /** fetch data from the table: "nfts" using primary key columns */ - nfts_by_pk?: Maybe - /** fetch data from the table: "nfts_reactions_stats" */ - nfts_reactions_stats: Array - /** fetch aggregated fields from the table: "nfts_reactions_stats" */ - nfts_reactions_stats_aggregate: Nfts_Reactions_Stats_Aggregate - /** fetch data from the table: "nfts_stats" */ - nfts_stats: Array - /** fetch data from the table: "reactions" */ - reactions: Array - /** fetch aggregated fields from the table: "reactions" */ - reactions_aggregate: Reactions_Aggregate - /** fetch data from the table: "reactions" using primary key columns */ - reactions_by_pk?: Maybe - /** fetch data from the table: "reactions_unicode" */ - reactions_unicode: Array - /** fetch aggregated fields from the table: "reactions_unicode" */ - reactions_unicode_aggregate: Reactions_Unicode_Aggregate - /** fetch data from the table: "reactions_users" */ - reactions_users: Array - /** fetch aggregated fields from the table: "reactions_users" */ - reactions_users_aggregate: Reactions_Users_Aggregate - /** fetch data from the table: "singular_blacklisted_accounts" */ - singular_blacklisted_accounts: Array - /** fetch data from the table: "singular_blacklisted_accounts" using primary key columns */ - singular_blacklisted_accounts_by_pk?: Maybe - /** fetch data from the table: "singular_blacklisted_collections" */ - singular_blacklisted_collections: Array - /** fetch data from the table: "singular_blacklisted_collections" using primary key columns */ - singular_blacklisted_collections_by_pk?: Maybe - /** fetch data from the table: "singular_curated" */ - singular_curated: Array - /** fetch data from the table: "singular_curated" using primary key columns */ - singular_curated_by_pk?: Maybe - /** fetch data from the table: "singular_curated_collections" */ - singular_curated_collections: Array - /** fetch data from the table: "singular_curated_collections" using primary key columns */ - singular_curated_collections_by_pk?: Maybe - /** fetch data from the table: "singular_hidden_collections" */ - singular_hidden_collections: Array - /** fetch data from the table: "singular_hidden_collections" using primary key columns */ - singular_hidden_collections_by_pk?: Maybe - /** fetch data from the table: "singular_hidden_nfts" */ - singular_hidden_nfts: Array - /** fetch data from the table: "singular_hidden_nfts" using primary key columns */ - singular_hidden_nfts_by_pk?: Maybe - /** fetch data from the table: "singular_nsfw_collections" */ - singular_nsfw_collections: Array - /** fetch aggregated fields from the table: "singular_nsfw_collections" */ - singular_nsfw_collections_aggregate: Singular_Nsfw_Collections_Aggregate - /** fetch data from the table: "singular_nsfw_collections" using primary key columns */ - singular_nsfw_collections_by_pk?: Maybe - /** fetch data from the table: "singular_nsfw_nfts" */ - singular_nsfw_nfts: Array - /** fetch aggregated fields from the table: "singular_nsfw_nfts" */ - singular_nsfw_nfts_aggregate: Singular_Nsfw_Nfts_Aggregate - /** fetch data from the table: "singular_nsfw_nfts" using primary key columns */ - singular_nsfw_nfts_by_pk?: Maybe - /** fetch data from the table: "singular_verified_collections" */ - singular_verified_collections: Array - /** fetch data from the table: "singular_verified_collections" using primary key columns */ - singular_verified_collections_by_pk?: Maybe - /** fetch data from the table: "system" */ - system: Array - /** fetch data from the table: "system" using primary key columns */ - system_by_pk?: Maybe -} - -/** subscription root */ -export type Subscription_RootArt_Contest_NftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootArt_Contest_Nfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootArt_Contest_Nfts_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootArt_Contest_SubmissionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootArt_Contest_Submissions_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootArt_Contest_Submissions_By_PkArgs = { - id: Scalars['Int'] -} - -/** subscription root */ -export type Subscription_RootArt_Contest_VotesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootArt_Contest_Votes_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootArt_Contest_Votes_By_PkArgs = { - caller: Scalars['String'] - nft_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootChangesArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootChanges_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootChanges_By_PkArgs = { - id: Scalars['Int'] -} - -/** subscription root */ -export type Subscription_RootChanges_CollectionArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootChanges_Collection_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootChanges_Collection_By_PkArgs = { - id: Scalars['Int'] -} - -/** subscription root */ -export type Subscription_RootCollection_BannersArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootCollection_Banners_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootCollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootCollections_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootCollections_By_PkArgs = { - id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootDistinct_NftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootDistinct_Nfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootGet_By_UnicodeArgs = { - args: Get_By_Unicode_Args - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootGet_By_Unicode_AggregateArgs = { - args: Get_By_Unicode_Args - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootGet_Newly_ListedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootGet_Newly_Listed_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootGet_Newly_MintedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootGet_Newly_Minted_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootKanaria_HououArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootKanaria_Houou_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootKanaria_Houou_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootNftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootNfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootNfts_By_PkArgs = { - id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootNfts_Reactions_StatsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootNfts_Reactions_Stats_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootNfts_StatsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootReactionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootReactions_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootReactions_By_PkArgs = { - nft_id: Scalars['String'] - owner: Scalars['String'] - unicode: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootReactions_UnicodeArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootReactions_Unicode_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootReactions_UsersArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootReactions_Users_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Blacklisted_AccountsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Blacklisted_Accounts_By_PkArgs = { - account: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSingular_Blacklisted_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Blacklisted_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSingular_CuratedArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Curated_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSingular_Curated_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Curated_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSingular_Hidden_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Hidden_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSingular_Hidden_NftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Hidden_Nfts_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSingular_Nsfw_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Nsfw_Collections_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Nsfw_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSingular_Nsfw_NftsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Nsfw_Nfts_AggregateArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Nsfw_Nfts_By_PkArgs = { - nft_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSingular_Verified_CollectionsArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSingular_Verified_Collections_By_PkArgs = { - collection_id: Scalars['String'] -} - -/** subscription root */ -export type Subscription_RootSystemArgs = { - distinct_on?: InputMaybe> - limit?: InputMaybe - offset?: InputMaybe - order_by?: InputMaybe> - where?: InputMaybe -} - -/** subscription root */ -export type Subscription_RootSystem_By_PkArgs = { - purchaseEnabled: Scalars['Boolean'] -} - -/** columns and relationships of "system" */ -export type System = { - __typename?: 'system' - purchaseEnabled: Scalars['Boolean'] -} - -/** Boolean expression to filter rows from the table "system". All fields are combined with a logical 'AND'. */ -export type System_Bool_Exp = { - _and?: InputMaybe>> - _not?: InputMaybe - _or?: InputMaybe>> - purchaseEnabled?: InputMaybe -} - -/** unique or primary key constraints on table "system" */ -export enum System_Constraint { - /** unique or primary key constraint */ - SystemPkey = 'system_pkey', -} - -/** response of any mutation on the table "system" */ -export type System_Mutation_Response = { - __typename?: 'system_mutation_response' - /** number of affected rows by the mutation */ - affected_rows: Scalars['Int'] - /** data of the affected rows by the mutation */ - returning: Array -} - -/** on conflict condition type for table "system" */ -export type System_On_Conflict = { - constraint: System_Constraint - update_columns: Array - where?: InputMaybe -} - -/** ordering options when selecting data from "system" */ -export type System_Order_By = { - purchaseEnabled?: InputMaybe -} - -/** primary key columns input for table: "system" */ -export type System_Pk_Columns_Input = { - purchaseEnabled: Scalars['Boolean'] -} - -/** select columns of table "system" */ -export enum System_Select_Column { - /** column name */ - PurchaseEnabled = 'purchaseEnabled', -} - -/** input type for updating data in table "system" */ -export type System_Set_Input = { - purchaseEnabled?: InputMaybe -} - -/** update columns of table "system" */ -export enum System_Update_Column { - /** column name */ - PurchaseEnabled = 'purchaseEnabled', -} - -/** expression to compare columns of type timestamptz. All fields are combined with logical 'AND'. */ -export type Timestamptz_Comparison_Exp = { - _eq?: InputMaybe - _gt?: InputMaybe - _gte?: InputMaybe - _in?: InputMaybe> - _is_null?: InputMaybe - _lt?: InputMaybe - _lte?: InputMaybe - _neq?: InputMaybe - _nin?: InputMaybe> -} - -export type NftsQueryVariables = Exact<{ - addresses?: InputMaybe | Scalars['String']> - limit?: InputMaybe - offset?: InputMaybe -}> - -export type NftsQuery = { - __typename?: 'query_root' - nfts: Array<{ - __typename?: 'nfts' - id: string - metadata_name?: string | null - metadata_description?: string | null - metadata_animation_url?: string | null - metadata_image?: string | null - sn: string - collection: { __typename?: 'collections'; id: string; name: string; max: number } - }> -} - -export const NftsDocument = { - kind: 'Document', - definitions: [ - { - kind: 'OperationDefinition', - operation: 'query', - name: { kind: 'Name', value: 'nfts' }, - variableDefinitions: [ - { - kind: 'VariableDefinition', - variable: { kind: 'Variable', name: { kind: 'Name', value: 'addresses' } }, - type: { - kind: 'ListType', - type: { kind: 'NonNullType', type: { kind: 'NamedType', name: { kind: 'Name', value: 'String' } } }, - }, - }, - { - kind: 'VariableDefinition', - variable: { kind: 'Variable', name: { kind: 'Name', value: 'limit' } }, - type: { kind: 'NamedType', name: { kind: 'Name', value: 'Int' } }, - }, - { - kind: 'VariableDefinition', - variable: { kind: 'Variable', name: { kind: 'Name', value: 'offset' } }, - type: { kind: 'NamedType', name: { kind: 'Name', value: 'Int' } }, - }, - ], - selectionSet: { - kind: 'SelectionSet', - selections: [ - { - kind: 'Field', - name: { kind: 'Name', value: 'nfts' }, - arguments: [ - { - kind: 'Argument', - name: { kind: 'Name', value: 'limit' }, - value: { kind: 'Variable', name: { kind: 'Name', value: 'limit' } }, - }, - { - kind: 'Argument', - name: { kind: 'Name', value: 'offset' }, - value: { kind: 'Variable', name: { kind: 'Name', value: 'offset' } }, - }, - { - kind: 'Argument', - name: { kind: 'Name', value: 'where' }, - value: { - kind: 'ObjectValue', - fields: [ - { - kind: 'ObjectField', - name: { kind: 'Name', value: 'owner' }, - value: { - kind: 'ObjectValue', - fields: [ - { - kind: 'ObjectField', - name: { kind: 'Name', value: '_in' }, - value: { kind: 'Variable', name: { kind: 'Name', value: 'addresses' } }, - }, - ], - }, - }, - { - kind: 'ObjectField', - name: { kind: 'Name', value: 'burned' }, - value: { - kind: 'ObjectValue', - fields: [ - { - kind: 'ObjectField', - name: { kind: 'Name', value: '_eq' }, - value: { kind: 'StringValue', value: '', block: false }, - }, - ], - }, - }, - ], - }, - }, - ], - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'id' } }, - { kind: 'Field', name: { kind: 'Name', value: 'metadata_name' } }, - { kind: 'Field', name: { kind: 'Name', value: 'metadata_description' } }, - { kind: 'Field', name: { kind: 'Name', value: 'metadata_animation_url' } }, - { kind: 'Field', name: { kind: 'Name', value: 'metadata_image' } }, - { kind: 'Field', name: { kind: 'Name', value: 'sn' } }, - { - kind: 'Field', - name: { kind: 'Name', value: 'collection' }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'id' } }, - { kind: 'Field', name: { kind: 'Name', value: 'name' } }, - { kind: 'Field', name: { kind: 'Name', value: 'max' } }, - ], - }, - }, - ], - }, - }, - ], - }, - }, - ], -} as unknown as DocumentNode diff --git a/packages/nft/generated/gql/rmrk1/index.ts b/packages/nft/generated/gql/rmrk1/index.ts deleted file mode 100644 index 24b4618b5..000000000 --- a/packages/nft/generated/gql/rmrk1/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './fragment-masking.js' -export * from './gql.js' diff --git a/packages/nft/generated/ink/build-extrinsic/psp34.ts b/packages/nft/generated/ink/build-extrinsic/psp34.ts new file mode 100644 index 000000000..2fbccae49 --- /dev/null +++ b/packages/nft/generated/ink/build-extrinsic/psp34.ts @@ -0,0 +1,186 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract' +import type { GasLimit, GasLimitAndRequiredValue } from '@727-ventures/typechain-types' +import { buildSubmittableExtrinsic } from '@727-ventures/typechain-types' +import type * as ArgumentTypes from '../types-arguments/psp34.js' +import type BN from 'bn.js' +import type { ApiPromise } from '@polkadot/api' + +export default class Methods { + readonly __nativeContract: ContractPromise + readonly __apiPromise: ApiPromise + + constructor(nativeContract: ContractPromise, apiPromise: ApiPromise) { + this.__nativeContract = nativeContract + this.__apiPromise = apiPromise + } + /** + * totalSupply + * + */ + totalSupply(__options: GasLimit) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, 'psp34::totalSupply', [], __options) + } + + /** + * balanceOf + * + * @param { ArgumentTypes.AccountId } owner, + */ + balanceOf(owner: ArgumentTypes.AccountId, __options: GasLimit) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, 'psp34::balanceOf', [owner], __options) + } + + /** + * ownerOf + * + * @param { ArgumentTypes.Id } id, + */ + ownerOf(id: ArgumentTypes.Id, __options: GasLimit) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, 'psp34::ownerOf', [id], __options) + } + + /** + * collectionId + * + */ + collectionId(__options: GasLimit) { + return buildSubmittableExtrinsic(this.__apiPromise, this.__nativeContract, 'psp34::collectionId', [], __options) + } + + /** + * allowance + * + * @param { ArgumentTypes.AccountId } owner, + * @param { ArgumentTypes.AccountId } operator, + * @param { ArgumentTypes.Id | null } id, + */ + allowance( + owner: ArgumentTypes.AccountId, + operator: ArgumentTypes.AccountId, + id: ArgumentTypes.Id | null, + __options: GasLimit + ) { + return buildSubmittableExtrinsic( + this.__apiPromise, + this.__nativeContract, + 'psp34::allowance', + [owner, operator, id], + __options + ) + } + + /** + * approve + * + * @param { ArgumentTypes.AccountId } operator, + * @param { ArgumentTypes.Id | null } id, + * @param { boolean } approved, + */ + approve(operator: ArgumentTypes.AccountId, id: ArgumentTypes.Id | null, approved: boolean, __options: GasLimit) { + return buildSubmittableExtrinsic( + this.__apiPromise, + this.__nativeContract, + 'psp34::approve', + [operator, id, approved], + __options + ) + } + + /** + * transfer + * + * @param { ArgumentTypes.AccountId } to, + * @param { ArgumentTypes.Id } id, + * @param { Array<(number | string | BN)> } data, + */ + transfer(to: ArgumentTypes.AccountId, id: ArgumentTypes.Id, data: Array, __options: GasLimit) { + return buildSubmittableExtrinsic( + this.__apiPromise, + this.__nativeContract, + 'psp34::transfer', + [to, id, data], + __options + ) + } + + /** + * burn + * + * @param { ArgumentTypes.AccountId } account, + * @param { ArgumentTypes.Id } id, + */ + burn(account: ArgumentTypes.AccountId, id: ArgumentTypes.Id, __options: GasLimit) { + return buildSubmittableExtrinsic( + this.__apiPromise, + this.__nativeContract, + 'psp34Burnable::burn', + [account, id], + __options + ) + } + + /** + * mint + * + * @param { ArgumentTypes.AccountId } account, + * @param { ArgumentTypes.Id } id, + */ + mint(account: ArgumentTypes.AccountId, id: ArgumentTypes.Id, __options: GasLimit) { + return buildSubmittableExtrinsic( + this.__apiPromise, + this.__nativeContract, + 'psp34Mintable::mint', + [account, id], + __options + ) + } + + /** + * ownersTokenByIndex + * + * @param { ArgumentTypes.AccountId } owner, + * @param { (string | number | BN) } index, + */ + ownersTokenByIndex(owner: ArgumentTypes.AccountId, index: string | number | BN, __options: GasLimit) { + return buildSubmittableExtrinsic( + this.__apiPromise, + this.__nativeContract, + 'psp34Enumerable::ownersTokenByIndex', + [owner, index], + __options + ) + } + + /** + * tokenByIndex + * + * @param { (string | number | BN) } index, + */ + tokenByIndex(index: string | number | BN, __options: GasLimit) { + return buildSubmittableExtrinsic( + this.__apiPromise, + this.__nativeContract, + 'psp34Enumerable::tokenByIndex', + [index], + __options + ) + } + + /** + * getAttribute + * + * @param { ArgumentTypes.Id } id, + * @param { string } key, + */ + getAttribute(id: ArgumentTypes.Id, key: string, __options: GasLimit) { + return buildSubmittableExtrinsic( + this.__apiPromise, + this.__nativeContract, + 'psp34Metadata::getAttribute', + [id, key], + __options + ) + } +} diff --git a/packages/nft/generated/ink/constructors/psp34.ts b/packages/nft/generated/ink/constructors/psp34.ts new file mode 100644 index 000000000..66882f6f6 --- /dev/null +++ b/packages/nft/generated/ink/constructors/psp34.ts @@ -0,0 +1,45 @@ +import { CodePromise } from '@polkadot/api-contract' +import type { KeyringPair } from '@polkadot/keyring/types' +import type { ApiPromise } from '@polkadot/api' +import { _genValidGasLimitAndValue, _signAndSend, SignAndSendSuccessResponse } from '@727-ventures/typechain-types' +import type { ConstructorOptions } from '@727-ventures/typechain-types' +import type { WeightV2 } from '@polkadot/types/interfaces' +import type * as ArgumentTypes from '../types-arguments/psp34.js' +import { ContractFile } from '../contract-info/psp34.js' +import type BN from 'bn.js' + +export default class Constructors { + readonly nativeAPI: ApiPromise + readonly signer: KeyringPair + + constructor(nativeAPI: ApiPromise, signer: KeyringPair) { + this.nativeAPI = nativeAPI + this.signer = signer + } + + /** + * new + * + */ + async new(__options?: ConstructorOptions) { + const __contract = JSON.parse(ContractFile) + const code = new CodePromise(this.nativeAPI, __contract, __contract.source.wasm) + const gasLimit = (await _genValidGasLimitAndValue(this.nativeAPI, __options)).gasLimit as WeightV2 + + const storageDepositLimit = __options?.storageDepositLimit + const tx = code.tx['new']!({ gasLimit, storageDepositLimit, value: __options?.value }) + let response + + try { + response = await _signAndSend(this.nativeAPI.registry, tx, this.signer, (event: any) => event) + } catch (error) { + console.log(error) + } + + return { + result: response as SignAndSendSuccessResponse, + // @ts-ignore + address: (response as SignAndSendSuccessResponse)!.result!.contract.address.toString(), + } + } +} diff --git a/packages/nft/generated/ink/contract-info/psp34.ts b/packages/nft/generated/ink/contract-info/psp34.ts new file mode 100644 index 000000000..72088029e --- /dev/null +++ b/packages/nft/generated/ink/contract-info/psp34.ts @@ -0,0 +1,2 @@ +export const ContractAbi = `{"source":{"hash":"0xa47d10e05f992a227fcbcd6b42153497a322c615e1fb7b9f3d9a3b39d17b1fff","language":"ink! 4.2.1","compiler":"rustc 1.69.0-nightly","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"psp34","version":"1.0.0","authors":[""]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":10},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":0},"balance":{"displayName":["Balance"],"type":7},"blockNumber":{"displayName":["BlockNumber"],"type":5},"chainExtension":{"displayName":["ChainExtension"],"type":29},"hash":{"displayName":["Hash"],"type":28},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":6}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[],"default":false,"docs":[" Returns current NFT total supply."],"label":"PSP34::total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x628413fe"},{"args":[{"label":"owner","type":{"displayName":["psp34_external","BalanceOfInput1"],"type":0}}],"default":false,"docs":[" Returns the balance of the owner.",""," This represents the amount of unique tokens the owner has."],"label":"PSP34::balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":13},"selector":"0xcde7e55f"},{"args":[{"label":"id","type":{"displayName":["psp34_external","OwnerOfInput1"],"type":14}}],"default":false,"docs":[" Returns the owner of the token if any."],"label":"PSP34::owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x1168624d"},{"args":[],"default":false,"docs":[" Returns the collection \`Id\` of the NFT token.",""," This can represents the relationship between tokens/contracts/pallets."],"label":"PSP34::collection_id","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0xffa27a5f"},{"args":[{"label":"owner","type":{"displayName":["psp34_external","AllowanceInput1"],"type":0}},{"label":"operator","type":{"displayName":["psp34_external","AllowanceInput2"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","AllowanceInput3"],"type":18}}],"default":false,"docs":[" Returns \`true\` if the operator is approved by the owner to withdraw \`id\` token."," If \`id\` is \`None\`, returns \`true\` if the operator is approved to withdraw all owner's tokens."],"label":"PSP34::allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x4790f55a"},{"args":[{"label":"operator","type":{"displayName":["psp34_external","ApproveInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","ApproveInput2"],"type":18}},{"label":"approved","type":{"displayName":["psp34_external","ApproveInput3"],"type":20}}],"default":false,"docs":[" Approves \`operator\` to withdraw the \`id\` token from the caller's account."," If \`id\` is \`None\` approves or disapproves the operator for all tokens of the caller.",""," On success a \`Approval\` event is emitted.",""," # Errors",""," Returns \`SelfApprove\` error if it is self approve.",""," Returns \`NotApproved\` error if caller is not owner of \`id\`."],"label":"PSP34::approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x1932a8b0"},{"args":[{"label":"to","type":{"displayName":["psp34_external","TransferInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","TransferInput2"],"type":14}},{"label":"data","type":{"displayName":["psp34_external","TransferInput3"],"type":8}}],"default":false,"docs":[" Transfer approved or owned token from caller.",""," On success a \`Transfer\` event is emitted.",""," # Errors",""," Returns \`TokenNotExists\` error if \`id\` does not exist.",""," Returns \`NotApproved\` error if \`from\` doesn't have allowance for transferring.",""," Returns \`SafeTransferCheckFailed\` error if \`to\` doesn't accept transfer."],"label":"PSP34::transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3128d61b"},{"args":[{"label":"account","type":{"displayName":["psp34burnable_external","BurnInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34burnable_external","BurnInput2"],"type":14}}],"default":false,"docs":[" Destroys token with id equal to \`id\` from \`account\`",""," Caller must be approved to transfer tokens from \`account\`"," or to transfer token with \`id\`"],"label":"PSP34Burnable::burn","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x63c9877a"},{"args":[{"label":"account","type":{"displayName":["psp34mintable_external","MintInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34mintable_external","MintInput2"],"type":14}}],"default":false,"docs":[" Mints a new token with \`id\`.",""," See [\`PSP34::_mint_to\`]."],"label":"PSP34Mintable::mint","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x6c41f2ec"},{"args":[{"label":"owner","type":{"displayName":["psp34enumerable_external","OwnersTokenByIndexInput1"],"type":0}},{"label":"index","type":{"displayName":["psp34enumerable_external","OwnersTokenByIndexInput2"],"type":7}}],"default":false,"docs":[" Returns a token \`Id\` owned by \`owner\` at a given \`index\` of its token list."," Use along with \`balance_of\` to enumerate all of \`\`owner\`\`'s tokens.",""," The start index is zero."],"label":"PSP34Enumerable::owners_token_by_index","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":24},"selector":"0x3bcfb511"},{"args":[{"label":"index","type":{"displayName":["psp34enumerable_external","TokenByIndexInput1"],"type":7}}],"default":false,"docs":[" Returns a token \`Id\` at a given \`index\` of all the tokens stored by the contract."," Use along with \`total_supply\` to enumerate all tokens.",""," The start index is zero."],"label":"PSP34Enumerable::token_by_index","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":24},"selector":"0xcd0340d0"},{"args":[{"label":"id","type":{"displayName":["psp34metadata_external","GetAttributeInput1"],"type":14}},{"label":"key","type":{"displayName":["psp34metadata_external","GetAttributeInput2"],"type":9}}],"default":false,"docs":[" Returns the attribute of \`id\` for the given \`key\`.",""," If \`id\` is a collection id of the token, it returns attributes for collection."],"label":"PSP34Metadata::get_attribute","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xf19d48d1"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"leaf":{"key":"0x1cc80634","ty":0}},"root_key":"0x1cc80634"}},"name":"token_owner"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7e3fae6b","ty":3}},"root_key":"0x7e3fae6b"}},"name":"operator_approvals"},{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"enum":{"dispatchKey":"0xca32a240","name":"Id","variants":{"0":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":2}},"name":"0"}],"name":"U8"},"1":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":4}},"name":"0"}],"name":"U16"},"2":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":5}},"name":"0"}],"name":"U32"},"3":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":6}},"name":"0"}],"name":"U64"},"4":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":7}},"name":"0"}],"name":"U128"},"5":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":8}},"name":"0"}],"name":"Bytes"}}}},"root_key":"0xca32a240"}},"name":"enumerable"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Balances"}},"name":"balances"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"psp34"},{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"leaf":{"key":"0x9b2d2382","ty":9}},"root_key":"0x9b2d2382"}},"name":"attributes"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"metadata"}],"name":"Contract"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"composite":{"fields":[{"type":1,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":1,"type":{"def":{"array":{"len":32,"type":2}}}},{"id":2,"type":{"def":{"primitive":"u8"}}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"primitive":"u16"}}},{"id":5,"type":{"def":{"primitive":"u32"}}},{"id":6,"type":{"def":{"primitive":"u64"}}},{"id":7,"type":{"def":{"primitive":"u128"}}},{"id":8,"type":{"def":{"sequence":{"type":2}}}},{"id":9,"type":{"def":{"primitive":"str"}}},{"id":10,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":11}],"path":["Result"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":7}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":7},{"name":"E","type":11}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":11}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2,"typeName":"u8"}],"index":0,"name":"U8"},{"fields":[{"type":4,"typeName":"u16"}],"index":1,"name":"U16"},{"fields":[{"type":5,"typeName":"u32"}],"index":2,"name":"U32"},{"fields":[{"type":6,"typeName":"u64"}],"index":3,"name":"U64"},{"fields":[{"type":7,"typeName":"u128"}],"index":4,"name":"U128"},{"fields":[{"type":8,"typeName":"Vec"}],"index":5,"name":"Bytes"}]}},"path":["openbrush_contracts","traits","types","Id"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":16}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":16},{"name":"E","type":11}],"path":["Result"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":0}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":0}],"path":["Option"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":14}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":14},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":14}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":14}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"primitive":"bool"}}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":23}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":23}],"path":["Result"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9,"typeName":"String"}],"index":0,"name":"Custom"},{"index":1,"name":"SelfApprove"},{"index":2,"name":"NotApproved"},{"index":3,"name":"TokenExists"},{"index":4,"name":"TokenNotExists"},{"fields":[{"type":9,"typeName":"String"}],"index":5,"name":"SafeTransferCheckFailed"}]}},"path":["openbrush_contracts","traits","errors","psp34","PSP34Error"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":25}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":25},{"name":"E","type":11}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"fields":[{"type":14}],"index":0,"name":"Ok"},{"fields":[{"type":23}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":14},{"name":"E","type":23}],"path":["Result"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":9}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":9}],"path":["Option"]}},{"id":28,"type":{"def":{"composite":{"fields":[{"type":1,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":29,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}` +export const ContractFile = `{"source":{"hash":"0xa47d10e05f992a227fcbcd6b42153497a322c615e1fb7b9f3d9a3b39d17b1fff","language":"ink! 4.2.1","compiler":"rustc 1.69.0-nightly","wasm":"0x0061736d01000000016e1160037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f0060017f017f60047f7f7f7f017f60000060057f7f7f7f7f017f60017f017e60067f7f7f7f7f7f0060037f7e7e006000017f60037e7e7f0060077f7f7f7f7f7f7f017f02bf010a057365616c310b6765745f73746f726167650008057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300663616c6c65720002057365616c3007616464726573730002057365616c300d64656275675f6d6573736167650001057365616c320b7365745f73746f726167650008057365616c310d636c6561725f73746f726167650001057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100395019301000004020200030201020202020303070202040402020405020203040e010100020204070305040107020203030203090204020203030f0409020309020100000301010602040903010401040b0503060a010a06080105030c02070601010303050001010005060806010100010101070310010505000a01010101020203020d02020d030202020302020200020101060c000604050170011c1c0608017f01418080040b0711020463616c6c0041066465706c6f7900440928010041010b1b118201666530518301536c7b8001810196012b970152484a4b8201556d72737475760afcf40193012b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b080020004101100c0b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b2002200341d8be041060000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120100e45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b6201047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206109801200120022003280208200328020c41f4c80410692003200220042006109801200020032903003702000b200341106a240020050bd50101017f230041d0006b22032400200320023602042003200136020020034184c204360224200341d4c00436022020032003360228200341086a200341206a101020032d00084107460440200320032d00093a002f2003413c6a4101360200200341c4006a4101360200200341fcc004360238200341003602302003410136024c2003200341c8006a36024020032003412f6a360248200341306a41f4c1041012000b20002003290308370300200041106a200341186a290300370300200041086a200341106a290300370300200341d0006a24000beb0201057f230041406a2202240020024100360218200242808001370224200241bec9043602202001280200200141046a280200200241206a2205108c0120012802082005108f0120022002290320370310200241086a200241106a20022802281016200228020c2103200228020820022802102101200220022802142206360220200320012005100021032002280220220420064d04400240024002400240410c20032003410c4f1b0e0402010100010b200041063a00000c020b2002412c6a4101360200200241346a4100360200200241f8c50436022820024180c40436023020024100360220200241206a4180c6041012000b2002200436023c20022001360238200241206a200241386a101e20022d00202201410647044020002002290021370001200041106a200241306a290000370000200041096a200241296a290000370000200020013a00000c010b200041073b01000b200241406b24000f0b2004200641e4c4041017000b900301017f230041106b22022400027f024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b2002200041016a36020c200141a7c00441062002410c6a4102107f0c0c0b2001280200419ac004410d200128020428020c1100000c0b0b2001280200418cc004410e200128020428020c1100000c0a0b20012802004181c004410b200128020428020c1100000c090b200128020041e7bf04411a200128020428020c1100000c080b200128020041d9bf04410e200128020428020c1100000c070b200128020041c9bf044110200128020428020c1100000c060b200128020041bdbf04410c200128020428020c1100000c050b200128020041b2bf04410b200128020428020c1100000c040b200128020041abbf044107200128020428020c1100000c030b2001280200419cbf04410f200128020428020c1100000c020b2001280200418bbf044111200128020428020c1100000c010b200128020041f8be044113200128020428020c1100000b200241106a24000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241908d0436020c20024180c404360208200241086a1054000b8a0401057f230041f0006b2202240020024100360238200242808001370244200241bec90436024041b48ca0e601200241406b2206101420012006101520022002290340370330200241086a200241306a20022802481016200228020c21042002280208200228023021012002200228023422033602402004200120061000210402402002280240220520034d0440027f024002400240410c20042004410c4f1b0e0402000001000b200241cc006a4101360200200241d4006a4100360200200241f8c50436024820024180c40436025020024100360240200241406b4180c6041012000b4100210341000c010b2002200536026c20022001360268200241406b200241e8006a100d20022d00400d02200241186a200241ca006a290100370300200241206a200241d2006a290100370300200241276a200241d9006a2900003700002002200229014237031020022d0041210341010b2101200020033a0001200020013a0000200020022903103700022000410a6a200241186a290300370000200041126a200241206a290300370000200041196a200241276a290000370000200241f0006a24000f0b2005200341e4c4041017000b200241003a0030200241cc006a4101360200200241d4006a4101360200200241fcc00436024820024100360240200241013602142002200241106a3602502002200241306a360210200241406b41f4c1041012000b2601017f230041106b220224002002200036020c20012002410c6a4104103e200241106a24000bc90101017f230041106b22022400024002400240024002400240024020002d000041016b0e050102030405000b20014100100c200220002d00013a00072001200241076a4101103e0c050b20014101100c20002f010220011084010c040b20014102100c2000280204200110140c030b20014103100c200220002903083703082001200241086a4108103e0c020b20014104100c2000290308200041106a2903002001103f0c010b20014105100c200041086a2802002000410c6a280200200110230b200241106a24000b4501017f2002200128020422034b0440418cbd04412341e8be041037000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0f0020002001200241d89404109b010bb70201047f230041306b220124002001410036021020014280800137021c200141bec90436021841ebdcfef107200141186a22021014200028020020021019200028020420021019024020002802082200280200450440200141186a4100100c0c010b200141186a22024101100c2000280200200210150b200120012903183703082001200141086a20012802201016200128020421022001280200200128020821042001200128020c220036021820022004200141186a100021022001280218220320004d0440027f024002400240410c20022002410c4f1b0e0402000001000b200141246a41013602002001412c6a4100360200200141f8c50436022020014180c40436022820014100360218200141186a4180c6041012000b41000c010b41010b200141306a24000f0b2003200041e4c4041017000b0a00200120004120103e0bac0102047f017e230041306b2202240020024100360218200242808001370224200241bec90436022041b48ca0e601200241206a2203101420002003101520022002290320370310200241086a200241106a220420022802281016200228020c2100200228020820022903102106200241003602282002200637032020012003101920022002290320370310200220042002280228101620002002280200200228020410061a200241306a24000ba60101027f230041306b2201240020014100360218200142808001370224200141bec90436022041ebdcfef107200141206a22021014200028020020021019200028020420021019024020002802082200280200450440200141206a4100100c0c010b200141206a22024101100c2000280200200210150b20012001290320370310200141086a200141106a200128022810162001280208200128020c10071a200141306a24000b6a01027f230041306b2201240020014100360218200142808001370224200141bec90436022041b48ca0e601200141206a2202101420002002101520012001290320370310200141086a200141106a200128022810162001280208200128020c10071a200141306a24000bc70101017f23004180016b22022400200241406b2001100d024020022d0040450440200241e8006a2001101e20022d00684106470440200241386a200241f8006a290300370300200241306a200241f0006a290300370300200241106a200241c9006a290000370300200241186a200241d1006a290000370300200241206a200241d9006a29000037030020022002290368370328200220022900413703082000200241086a413810091a0c020b200041063a00200c010b200041063a00200b20024180016a24000bcc0302017f027e230041e0006b22022400200241286a200110320240024002400240024002400240024020022d002841017145044020022d00290e06010203040507060b200041063a00000c070b20022001103220022d000041017145044020022d00012101200041003a0000200020013a00010c070b200041063a00000c060b200241003b01302001200241306a4102100e450440200020022f01303b0102200041013a00000c060b200041063a00000c050b200241086a20011093012002280208450440200228020c2101200041023a0000200020013602040c050b200041063a00000c040b200242003703302001200241306a4108100e45044020002002290330370308200041033a00000c040b200041063a00000c030b200241106a200110422002290310a7450440200241206a290300210320022903182104200041043a000020002004370308200041106a20033703000c030b200041063a00000c020b200041063a00000c010b200241d0006a20011036200228025404402002413b6a200241d8006a28020036000020022002290350370033200041053a000020002002290030370001200041086a200241376a2900003700000c010b200041063a00000b200241e0006a24000ba70201037f230041e0006b2201240020014180800136023041bec904200141306a2202100420014180800136025c200141bec9043602582002200141d8006a100d2001027f20012d0030450440200141216a200141c9006a290000370000200141196a200141c1006a290000370000200141116a200141396a2900003700002001200129003137000941000c010b200141003a000941010b3a0008200141306a200141086a41a08004413741d88004102020014120102120012802002103200128020422022001290330370000200241186a200141c8006a290300370000200241106a200141406b290300370000200241086a200141386a2903003700002000410c6a4120360200200041086a200236020020002003360204200041053a0000200141e0006a24000b7401017f230041106b2205240020012d000045044020002001290001370000200041186a200141196a290000370000200041106a200141116a290000370000200041086a200141096a290000370000200541106a24000f0b200520012d00013a000f200220032005410f6a419080042004102e000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f761050200228020822030d012001104e000b104f000b2000200336020420002001360200200241106a24000b7500024002400240024002400240200028020041016b0e050102030405000b20014100100c200041086a2802002000410c6a280200200110230f0b20014101100c0f0b20014102100c0f0b20014103100c0f0b20014104100c0f0b20014105100c200041086a2802002000410c6a280200200110230b5f0002402001413f4d044020022001410274100c0c010b200141ffff004d0440200141027441017220021084010c010b200141ffffffff034d04402001410274410272200210140c010b20024103100c2001200210140b200220002001103e0bb60101027f230041e0006b2201240020014180800136023041bec904200141306a2202100320014180800136025c200141bec9043602582002200141d8006a100d2001027f20012d0030450440200141216a200141c9006a290000370000200141196a200141c1006a290000370000200141116a200141396a2900003700002001200129003137000941000c010b200141003a000941010b3a00082000200141086a41e8800441c10041ac81041020200141e0006a24000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b0b002000200110274101730b0b00200020014120100a450b5b01017f230041106b22032400200341fcc3043602082003200136020420032000360200027f4101200310180d001a41002002280200450d001a200320023602082003200136020420032000360200200310180b200341106a24000bae0302057f027e230041e0006b2202240020022001360230200241fcc30436022c200241d4c0043602282002410036024020024280800137024c200241bec904360248200241286a200241c8006a2206108e0120022002290348370338200241206a200241386a20022802501016200228022421032002280220200228023821012002200228023c22053602482003200120061000210302402002280248220420054d0440027e024002400240410c20032003410c4f1b0e0401000002000b200241d4006a4101360200200241dc006a4100360200200241f8c50436025020024180c40436025820024100360248200241c8006a4180c6041012000b2002200436024c20022001360248200241086a200241c8006a10422002290308a70d0320022903102107200241186a2903000c010b42000b21082000200737030020002008370308200241e0006a24000f0b2004200541e4c4041017000b200241003a0037200241d4006a4101360200200241dc006a4101360200200241fcc004360250200241003602482002410136023c2002200241386a3602582002200241376a360238200241c8006a41f4c1041012000ba905010a7f230041106b220624002006200110360240200628020422030440200628020021090240024020062802082202450d00200241076b22014100200120024d1b2108200341036a417c7120036b220a417f46210b41002101034002400240024002400240200120036a2d00002205411874411875220741004e0440200b200a20016b410371720d020240200120084f0d000340200120036a220541046a280200200528020072418081828478710d012001200141086a22014b0d0320012008490d000b0b200120024f0d0720012002200120024b1b21050340200120036a2c00004100480d062005200141016a2201470d000b0c070b02400240200541ec9d046a2d000041026b0e03040100090b200141016a220420024f0d08200320046a2c000021040240024002400240200541f0016b0e050100000002000b2007410f6a41ff017141024b0d0b20044140480d020c0b0b200441f0006a41ff01714130490d010c0a0b2004418f7f4a0d090b200141026a220520024f0d08200320056a2c000041bf7f4a0d08200141036a220120024f0d08200120036a2c000041bf7f4c0d040c080b200141016a220420024f0d07200320046a2c00002104024002400240200541e001470440200541ed01460d012007411f6a41ff0171410c490d022007417e71416e470d0b20044140480d030c0b0b200441607141a07f460d020c0a0b200441a07f480d010c090b200441bf7f4a0d080b200141026a220120024f0d07200120036a2c000041bf7f4c0d030c070b41a08904411c41dc9d041037000b200141016a21010c020b200141016a220120024f0d04200120036a2c000041bf7f4a0d040b200141016a21010b20012002490d000b0b2000200236020820002003360204200020093602000c020b200041003602040c010b200041003602040b200641106a24000b080020002802001a0b1b002000418180014f044020004180800141bc81041017000b20000b6300024020012d00004106460440200041063a0000200020022902003702042000410c6a200241086a2902003702000c010b20002001290300370300200041106a200141106a290300370300200041086a200141086a29030037030020022802001a0b0b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4103360200200541c48d0436022020054100360218200541043602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041012000b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141c4ba04360208200141003602002001410536021c200120003602182001200141186a360210200141f081041012000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241c4ba043602102002410036020820024104360224200220002d00004102742200418cc9046a28020036022c2002200041a0c9046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a106a200241306a24000b4201027f230041106b22012400200141086a2000103220012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0b3f01027f230041106b22022400200241003a000f200020012002410f6a4101100e2201047f41000520022d000f0b3a0001200020013a0000200241106a24000b7501017f230041306b22022400200241086a200110132000027f20022d00084504402000410436020441010c010b20002002290009370001200041196a200241216a290000370000200041116a200241196a290000370000200041096a200241116a29000037000041000b3a0000200241306a24000b4601017f230041306b22032400200341086a20021013024020032d00080440200041033602000c010b200120024101103520022001101a200041063602000b200341306a24000b3301017f230041106b220324002003200036020c2003410c6a20011095012002044041fcc30420011095010b200341106a24000be40201037f230041306b22022400200241186a200110320240024020022d00184101710d00024020022d0019220341037122044103470440024002400240200441016b0e020102000b200341fc017141027621030c030b200220033a0025200241013a002420022001360220200241003b012c200241206a2002412c6a41021094010d0320022f012c220341ff014d0d03200341027621030c020b200220033a0025200241013a0024200220013602202002410036022c200241206a2002412c6a41041094010d02200228022c220341808004490d02200341027621030c010b200341044f0d01200241106a200110930120022802100d0120022802142203418080808004490d010b024020012802042003490d00200241086a20031021200228020821042001200228020c22012003100e0d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241306a24000b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034180c404360210200341003602002003200136021c200320003602182003200341186a360208200320021012000b3501017f230041106b22002400200042808001370204200041bec90436020020004101100c2000100b41012000280208102c103b000b6901027f230041106b22022400200242808001370204200241bec904360200024020012802002203410747044020024100100c2003410646044020024100100c0c020b20024101100c2001200210220c010b20024101100c2002100b0b20002002280208102c103b000bb70102057f017e230041306b2201240020014100360218200142808001370224200141bec9043602204100200141206a2202101420012001290320370310200141086a200141106a220320012802281016200128020c21042001280208200129031021062001410036022820012006370320200220002d0000100c200220002d0001100c200220002d0002100c20012001290320370310200120032001280228101620042001280200200128020410061a200141306a24000b0d00200041bec90420011008000b8b0101027f230041206b2202240020022001103241072103024020022d00004101710d00410621030240024020022d00010e020200010b200241086a2001101e20022d000822034106460d0020002002290009370001200041106a200241186a290000370000200041096a200241116a2900003700000c010b410721030b200020033a0000200241206a24000bce0102037f017e230041306b2203240020034100360218200342808001370224200341bec9043602204182c7b4d979200341206a22041014200020041015200141046a280200200141086a2802002004102320032003290320370310200341086a200341106a220520032802281016200328020c21002003280208200329031021062003410036022820032006370320200241046a280200200241086a2802002004102320032003290320370310200320052003280228101620002003280200200328020410061a200341306a24000b5c01037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a200320046b2001200241c8be041069200020033602080f0b41f0bc04411c41a8be041037000b2003200541b8be041017000b2a01017f230041106b220324002003200137030820032000370300200220034110103e200341106a24000b2c01017f230041106b22012400200120003b0108200120004110763a000a200141086a103a200141106a24000b9135020f7f087e23004190036b22002400024002400240102541ff017141054604402000418080013602a80141bec904200041a8016a100220002802a8012201418180014f0d01200020013602cc02200041bec9043602c802200041003602a801200041c8026a200041a8016a4104100e0d0220002802a801220441187621012004411076210220044108762103024002400240024002400240024002400240200441ff0171220441e2006b0e020103000b20044111460d010240024002402004411947044020044131460d012004413b460d08200441c700460d02200441ec00460d07200441cd01460d03200441f101460d09200441ff0147200341ff017141a2014772200241ff017141fa0047200141df004772720d0e410021020c0f0b200341ff0171413247200241ff017141a8014772200141b00147720d0d200041a8016a200041c8026a100d20002d00a8010d0d20004180026a200041c8026a103c20002d0080024107460d0d200041306a200041c8026a103220002d00304101710d0d20002d0031220841024f0d0d20004188026a290300220f4238862000290380022212420888842110200f4208882114200041b3016a350000200041b7016a330000422086842113200041c1016a2900002111200041b9016a290000210f20002900ab012115200029039002211620002d00aa01210520002d00a90121062012a72107410121020c0e0b200341ff0171412847200241ff017141d60147722001411b47720d0c200041a8016a200041c8026a100d20002d00a8010d0c20004180026a200041c8026a101e20002d00800222074106460d0c2000418f026a310000210f2000418d026a330000211120004189026a35000020002900810221102000290390022116200041f0026a200041c8026a103620002802f402220b450d0c2011200f42108684422086842114200020002f00f9023b01a8022000200041fb026a2d00003a00aa0220002f00f10220002d00f30241107472210a200041b3016a350000200041b7016a330000422086842113200041b9016a290000210f200041c1016a290000211120002900ab01211520002d00f802210c20002d00f002210820002d00a901210620002d00aa012105410221020c0d0b200341ff017141900147200241ff017141f5014772200141da0047720d0b20004180026a200041c8026a100d20002d0080020d0b200041a8016a200041c8026a100d20002d00a8010d0b200041f0026a200041c8026a103c20002d00f002220c4107460d0b200041b7026a20004180036a290000370000200041b0026a200041f9026a290000370300200020002900f1023703a802200041b1016a290000220f42388620002900a9012212420888842110200f42088821142000418b026a3500002000418f026a330000422086842113200041c2016a2f0100200041c4016a2d000041107472210a20004191026a290000210f20004199026a2900002111200041b9016a2900002116200041c1016a2d00002108200041c5016a280000210b200029008302211520002d008102210620002d00820221052012a72107410321020c0c0b200341ff017122034103460d07200341e70147200241ff017141e5014772200141df0047720d0a200041a8016a200041c8026a100d20002d00a8010d0a410421022000418c016a20002f01ae013b0100200020002801aa0136028801200041b8016a2903002210423086200041b0016a2903002212421088842115201042108821132012420888a72105200041c0016a290300210f200041c8016a310000211120002d00a901210d2012a721060c0b0b200341ff017141840147200241ff017141134772200141fe0147720d09410521020c0a0b200341ff017141e80047200241ff017141e2004772200141cd0047720d08200041a8016a200041c8026a101e4106210220002d00a80122064106460d08200041b2016a350100200041b6016a33010042208684211320002901aa01211520002903b801210f20002d00a90121050c090b200341ff017141c90147200241ff01714187014772200141fa0047720d07200041a8016a200041c8026a101d20002d00c80122074106460d07200041b2016a350100200041b6016a330100422086842113200041d1016a350000200041d5016a330000200041d7016a3100004210868442208684211420002900c901211020002901aa01211520002903d801211620002903c001211120002903b801210f20002d00a901210520002d00a8012106410721020c080b200341ff017141c10047200241ff017141f20147720d06200141ec01460d020c060b200341ff017141cf0147200241ff017141b50147722001411147720d05200041a8016a200041c8026a100d20002d00a8010d05200041d0006a200041c8026a10422000290350a70d05200041e0006a290300220f4238862000290358221642088884211041092102200041b1016a290000221142308620002900a9012212421088842115200f4208882114201142108821132012420888a72105200041c1016a2900002111200041b9016a290000210f2012a721062016a721070c060b200341ff0171419d0147200241ff017141c8004772200141d10147720d04200041a8016a200041c8026a101e20002d00a80122064106460d04200041b6016a3301002111200041b2016a35010020002901aa01211520002903b801210f20002d00a901210520004180026a200041c8026a102a200028028402450d042011422086842113410b21022000330089022000418b026a31000042108684211020002d008802210720002903800221110c050b200041a8016a200041c8026a101d20002d00c80122074106460d03200041b2016a350100200041b6016a330100422086842113200041d1016a350000200041d5016a330000200041d7016a3100004210868442208684211420002900c901211020002901aa01211520002903d801211620002903c001211120002903b801210f20002d00a901210520002d00a8012106410821020c040b200241ff017141c00047200141d00147720d02200041386a200041c8026a10422000290338a70d02200041c8006a290300221042308620002903402212421088842115201042108821132012420888a721052012a72106410a21020c030b200041043a00a801200041a8016a102f000b20014180800141e4c4041017000b1038000b20004184016a2000418c016a2f010022013b0100200041f7006a2203200041b7026a290000370000200041f0006a2204200041b0026a2903003703002000200028028801220936028001200020002903a8022212370368200041a4016a20013b010020004190016a200429030037030020004197016a2003290000370000200020093602a001200020123703880120004100360288022000428080013702ac01200041bec9043602a8014100200041a8016a22041014200020002903a80137038002200041286a20004180026a20002802b0011016200028022c210920002802282000280280022103200020002802840222013602a801200920032004100021040240024002400240027f024020002802a801220920014d0440410221010240024002400240410c20042004410c4f1b0e0400010103010b200020093602ac01200020033602a801200041a8016a103141ff017122014102460d01200041a8016a103141ff017122034102460d01200041a8016a103141ff017122044102460d01200441107420034101714108747220017221010c020b200041b4016a4101360200200041bc016a4100360200200041f8c5043602b00120004180c4043602b801200041003602a801200041a8016a4180c6041012000b410321010b024002400240200141ff017141026b0e020100020b200041b4016a4101360200200041bc016a4100360200200041a882043602b0010c050b200041b4016a4101360200200041bc016a4100360200200041c882043602b0010c040b2007ad42ff0183201042088684211220134210862015423088842113201442088620104238888421142006ad42ff01832005ad42ff018342088620154210868484211002400240024002400240027f024002400240024002400240024002400240024002400240200241016b0e0b000102030d040509060708110b200020103703a802200020113703c0022000200f3703b802200020133703b002200020143703d002200020123703c802200020163703d802200041f0026a1024200741ff01714106470440200041a8016a200041c8026a101320002d00a801450440410421020c140b2000200041c1016a2900003700e5022000200041bc016a2902003703e00220004198026a20002900e502370000200020002d00ab013a008202200020002f00a9013b018002200020002903e0023700930220002902ac01210f2000200041b4016a29020037008b022000200f37008302200804404101210220004180026a200041a8026a10270d140b20004180026a200041f0026a102604404102210220004180026a200041f0026a41fcc3041028450d140b20004188036a20004198026a29030037030020004180036a20004190026a290300370300200041f8026a20004188026a29030037030020002000290380023703f0020b024020084504402000200041c8026a4100200741ff01714106471b36028002200020004180026a3602b0012000200041a8026a3602ac012000200041f0026a3602a801200041a8016a101b20002802cc021a0c010b20004100360288022000428080013702ac01200041bec9043602a80141ebdcfef107200041a8016a22021014200041f0026a20021019200041a8026a200210190240200741ff01714106460440200041a8016a4100100c0c010b200041a8016a22024101100c200041c8026a200210150b200020002903a80137038002200041106a20004180026a220220002802b0011016200028021421032000280210200041086a20024100101620032000280208200028020c10061a0b200110404106210241000c130b200020133703f802200020103703f00220002011370388032000200f37038003200020143703b002200020123703a802200020163703b802200041a8016a200041a8026a1033027f20002d00a80145044020004198026a200041c1016a2900003700002000418f026a200041b8016a280200360000200020002d00ab013a008202200020002f00a9013b0180022000200041bc016a29020037009302200020002802ac01360083022000200041b0016a29030037008702200041a8016a2202102420004180026a20021026450d0e2000200041a8026a3602c80220004180026a200041a8016a200041c8026a10280d0e41020c010b200041e8026a200041b8016a2802003602002000200041b0016a2903003703e00220002802ac010b210220002d00a8021a4101210520024106460d0d0c0e0b200041d0016a20143703002000200a3b00e101200041e3016a200a4110763a0000200041f1016a20004190016a290300370000200041f8016a20004197016a290000370000200020123703c801200020103703a8012000200c3a00e8012000200b3602e401200020083a00e001200020163703d801200020113703c0012000200f3703b80120002000290388013700e901200020133703b001230041c0016b22012400200141086a200041a8016a220241d80010091a200141f8006a200241186a290000370300200141f0006a200241106a290000370300200141e8006a200241086a2900003703002001200229000037036020014198016a200141406b29030037030020014190016a200141386a29030037030020014188016a200141306a2903003703002001200129032837038001200141b0016a200141d8006a290300370300200141a8016a200141d0006a29030037030020012001290348220f3703a0012001200141a0016a4100200fa741ff01714106471b3602bc01200141e0006a20014180016a200141bc016a1028210020012d00a0011a200141c0016a2400230041106b22012400200142808001370204200141bec904360200230041106b2202240020014100100c200220003a000f20012002410f6a4101103e200241106a24000c150b200041b7016a2013370000200020103700af012000200d3a00a801200020002802a0013600a901200020113c00c7012000200f3700bf012000200041a4016a2f01003b00ad01230041406a22012400200141306a200041a8016a220241186a290000370300200141286a200241106a290000370300200141206a200241086a290000370300200120022900003703182001200141186a36023c200141086a2001413c6a10292001280208200141406b2400230041106b22012400200142808001370204200141bec90436020020014100100c200110140c140b200020133703b001200020103703a8012000200f3703b801230041206b22022400200241186a200041a8016a220141106a290300370300200241106a200141086a2903003703002002200129030037030820004180026a2203200241086a101320022d00081a200241206a240020014101722003412110091a200041003a00a801230041106b22022400200242808001370204200241bec904360200024020012d000045044020024100100c20012d000145044020024100100c0c020b20024101100c200141026a200210190c010b20024101100c2002100b0b41002002280208102c103b000b2000201337038802200020103703800220002011370398022000200f37039002200020143703f802200020123703f0022000201637038003200041a8016a200041f0026a103320002d00a8010d04200041f0026a2202101c20004180026a2002410110430c050b200020133703b001200020103703a801200020113703c0012000200f3703b801200020143703d002200020123703c8022000200041a8016a22013602e00220004180026a2202200041e0026a200041c8026a100f200041043602a802200041f0026a2002200041a8026a102d20002d00f0022102200041b8016a20004180036a290300370300200041b0016a200041f8026a290300370300200020002903f0023703a8010c0f0b200020133703b002200020103703a802200041a8016a220141fcc304200041a8026a100f200041043602f00220004180026a2001200041f0026a102d20002d0080022102200041b8016a20004190026a290300370300200041b0016a20004188026a29030037030020002000290380023703a8010c0e0b200020133703b001200020103703a801200020123703c801200020113703c0012000200f3703b80120004180026a2107230041d0006b22032400200041a8016a220222012802202105200128021c200341186a200141106a290300370300200341106a200141086a290300370300200320012903003703082003410036022820034280800137023c200341bec9043602384182c7b4d979200341386a22061014200341086a20061015200520061023200320032903383703202003200341206a20032802401016200328020421042003280200200328022021012003200328022422053602382004200120061000210602402003280238220420054d04400240024002400240410c20062006410c4f1b0e0401000002000b200341c4006a4101360200200341cc006a4100360200200341f8c50436024020034180c40436024820034100360238200341386a4180c6041012000b2003200436023420032001360230200341386a200341306a102a200328023c2206044020032802402101200328023821050c020b200341003a0030200341c4006a4101360200200341cc006a4101360200200341fcc00436024020034100360238200341013602242003200341206a3602482003200341306a360220200341386a41f4c1041012000b410021060b20072001360208200720063602042007200536020020032d00081a200341d0006a24000c010b2004200541e4c4041017000b200041b4016a20004188026a28020036020020002000290380023702ac01200041003602a801230041106b22002400200042808001370204200041bec90436020002402002220128020045044020004100100c200141086a280200220245044020004100100c0c020b20004101100c20022001410c6a280200200010230c010b20004101100c2000100b0b41002000280208102c103b000b200020133703b001200020103703a801200020113703c0012000200f3703b801200020143703880220002012370380022000201637039002200041f0026a200041a8016a20004180026a103420002802f0024106472202450440200110400b200041b0016a200041f8026a290300370300200020002903f0023703a8010c0d0b200041b0026a200041b8016a2802003602002000200041b0016a2903003703a802410120002802ac0122054106470d011a0b200110404106210541000b2102200041b4016a200041b0026a280200360200200020002903a8023702ac01200020053602a8010c0a0b230041106b22012400200141fcc30410292001290300210f200041186a2202200141086a2903003703082002200f370300200141106a24002000290318200041206a290300230041106b22012400200142808001370204200141bec90436020020014100100c2001103f0c0a0b2000200041e0026a3602d0022000200041a8016a3602cc02200020004180026a22033602c8022000200041a8026a22023602e002200041c8026a101b20032002410010432002101c200041f0026a220320024100103520022003101a0b2001104041062102410021050b200041b4016a200041e8026a280200360200200020002903e0023702ac01200020023602a8012005200041a8016a1039000b20004180026a101f200041b8016a20004190026a290300370300200041b0016a20004188026a29030037030020002000290380023703a801230041106b22012400200142808001370204200141bec9043602000240200041a8016a22022d0000410647044020014100100c2002200110150c010b20014101100c2001100b0b0c060b2009200141e4c4041017000b41010b200020023602a801200041a8016a1039000b20004180c4043602b801200041003602a801200041a8016a41f081041012000b2002410646230041106b22022400200242808001370204200241bec904360200024020012d00002203410747044020024100100c2003410647044020024100100c2001200210150c020b20024101100c200141046a200210220c010b20024101100c2002100b0b2002280208102c103b000b2002200041a8016a1039000b41002001280208102c103b000b6402027f037e230041106b22022400200241086a22034200370300200242003703000240200120024110100e45044020032903002105200229030021060c010b420121040b2000200637030820002004370300200041106a2005370300200241106a24000b3301017f230041106b220324002003200036020c2003410c6a20011085012002044041fcc30420011085010b200341106a24000bd80601057f23004180016b2200240002400240102541ff01712201410546044020004180800136023841bec904200041386a100220002802382201418180014f0d012000200136023c200041bec904360238200041003602580240200041386a200041d8006a4104100e0d002000280258419bddf6f405470d00200041386a2201102420004180023b0158200041286a2001200041d8006a103420002802284106470d03200041d8006a101f024002400240024002400240024020002d005841016b0e050102030405000b200020002d00593a0039200041003a00380c050b200020002f015a3b013a200041013a00380c040b2000200028025c36023c200041023a00380c030b20002000290360370340200041033a00380c020b200041c8006a200041e8006a29030037030020002000290360370340200041043a00380c010b200041e0006a2802002102200041206a200041e4006a28020022011045200041406b200028022422033602002000200028022036023c20032002200110091a200041c4006a2001360200200041053a00380b200041186a410410452000200028021c220136027420002000280218360270200141eec2b5ab0636000020004104360278200041106a4107104520002000280214220136022c20002000280210360228200141036a41eb8204280000360000200141e8820428000036000020004107360230200041386a2201200041f0006a2203200041286a2204103d200041c8006a200041e8006a290300370300200041406b200041e0006a29030037030020002000290358370338200041086a410610452000200028020c220236027420002000280208360270200241046a41f382042f00003b0000200241ef82042800003600002000410636027820004104104520002000280204220236022c20002000280200360228200241cda0cd820536000020004104360230200120032004103d200041003a003a200041003b01382001103a230041106b22002400200042808001370204200041bec90436020020004100100c20004100100c41002000280208102c103b000b1038000b200020013a0038200041386a102f000b20014180800141e4c4041017000b200041406b200041306a2903003703002000200029032837033841d082044108200041386a4180800441d88204102e000b3501017f230041106b22022400200241086a20011021200228020c21012000200228020836020020002001360204200241106a24000b0d002000200141f88204109a010bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110100450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a106720032003290310370320200341086a2005200141046a106720032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110100450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002104941000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002104c2004280208200428020c104d200028020821030b200028020420036a2001200210091a2003200220036a22014b044041908304411c419089041037000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10490c020b230041106b22042400200441086a200020034101104c2004280208200428020c104d200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41908304411c418089041037000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1046200241206a24000bb00401067f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22062002490d0141082006200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d0120062003410110502006280204210220062802000c040b0c040b20072802042209450440200641086a200341011050200628020c210220062802080c030b20032102410041b4c904280200220520036a22082005490d021a2007280200210741b8c9042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241b8c9042002360200200321024100200320056a22082005490d031a0b41b4c904200836020041002005450d021a20052007200910090c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41b08304412141dc84041037000b1f00024020014181808080784704402001450d012000104e000b0f0b104f000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141b08604360218200141003602102001410636022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041c086043602142000200141106a360210200041908d0436020c20004180c404360208200041086a1054000b4601017f230041206b22002400200041146a41013602002000411c6a410036020020004180850436021020004180c40436021820004100360208200041086a418885041012000bc40101037f024002402001200120026a41016b410020026b7122054d044041b4c904280200220220056a22042002490d0241b8c9042802002004490440200541ffff036a22032005490d02200341107640002202417f46200241ffff0371200247720d022002411074220220034180807c716a22042002490d024100210341b8c9042004360200200220056a22042002490d030b41b4c9042004360200200221030c020b41d0bc04411c41c0bc041037000b410021030b20002001360204200020033602000b9b0302047f027e230041306b2203240020002802002202ad2106024002400240024002400240024020024190ce004f044041272100200621070240034020004104490d01200341096a20006a220241046b200720074290ce008022064290ce007e7da7220441ffff037141e4006e220541017441fe8e046a2f00003b0000200241026b2004200541e4006c6b41ffff037141017441fe8e046a2f00003b0000200041046b2100200742ffc1d72f56200621070d000b2006a7220241e3004d0d0320004102490d080c020b0c070b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341096a6a2006a72202200241ffff037141e4006e220241e4006c6b41ffff037141017441fe8e046a2f00003b00000b2002410a490d01200041024f0d000c040b200041026b2200200341096a6a200241017441fe8e046a2f00003b00000c020b2000450d020b200041016b2200200341096a6a200241306a3a00000b200041274b0d0020014180c4044100200341096a20006a412720006b1059200341306a24000f0b41c08904412141d8b3041037000b0300010b0e0020002802001a03400c000b000bb60201037f230041406a220124002001200036020c2001410736022420012001410c6a36022041002100410421030240024002400240024003402000200341b0bd046a2802006a22022000490d0120022100200341086a22034114470d000b410021002001200241104f047f200220026a22004100200020024f1b0541000b104520014100360218200120012903003703102001410136023c20014102360234200141b0bd04360230200141003602282001200141206a360238200141106a200141286a10460d0141bcc9042d000045044041bdc9042d00004101710d050b410c20012802142001280218100522002000410c4f1b4109470d020c030b41908304411c41c8b3041037000b41d086044133200141286a41d4830441f88704102e000b41bcc90441013a00000b41bdc90441013a00000b000b0c0042f5b9dbabd184bd9f010b4a01017f230041106b22052400200220034904402003200220041057000b200541086a2003200220011058200528020c21012000200528020836020020002001360204200541106a24000b0f0020002001200241b89404109b010b1500200020012002200341d8c70441c089041099010bf80301097f230041106b22072400418080c400210920042105024020002802182208410171450d00200441016a22050440412b21090c010b41a08904411c41d891041037000b02400240200841047145044041002101200521060c010b200120026a2001105a20056a22062005490d010b024020002802084504404101210520002802002206200041046a2802002200200920012002105b0d01200620032004200028020c11000021050c010b024020062000410c6a280200220a4904402008410871450d01200028021c210c2000413036021c20002d0020210d41012105200041013a002020002802002208200041046a280200220b200920012002105b0d02200741086a2000200a20066b4101105c200728020c2201418080c400460d022007280208200820032004200b28020c1100000d0220012008200b105d0d022000200d3a00202000200c36021c410021050c020b4101210520002802002206200041046a2802002200200920012002105b0d01200620032004200028020c11000021050c010b4101210520072000200a20066b4101105c20072802042208418080c400460d00200728020020002802002206200041046a2802002200200920012002105b0d00200620032004200028020c1100000d00200820062000105d21050b200741106a240020050f0b41a08904411c41e891041037000ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d0020012000105e2206200020016a22082004417c716a2004410371105e6a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41989604105f200328020c21052003280208210820032003280200200328020422002000417c7141c89904105f200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41a08904411c41d899041037000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441a08904411c41889a041037000b41a08904411c41e899041037000b41a08904411c41f899041037000b41a08904411c41b899041037000b20012002105e21020b200341106a240020020b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020032004200128020c1100000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41a08904411c41f891041037000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110100450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110100450d000b200441016b0b2000490b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a08904411c41c8b3041037000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b418cbd04412320041037000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4106360200200341bc8c0436021020034100360208200341063602242003200341206a360218200320033602282003200341046a360220200341086a20021012000bc50101017f230041106b220624000240200120024d0440200220044d0d012002200420051017000b230041306b220024002000200236020420002001360200200041146a41023602002000411c6a41023602002000412c6a41063602002000418c950436021020004100360208200041063602242000200041206a3602182000200041046a36022820002000360220200041086a20051012000b200641086a2001200220031058200628020c21012000200628020836020020002001360204200641106a24000b820101047f200128020421022001280200210302400240200110632205418080c400470440200320026b2202200128020020012802046b2203490d0120012802082204200220036b6a22022004490d02200120023602080b20002005360204200020043602000f0b41c08904412141909b041037000b41a08904411c41a09b041037000bb70101047f200028020422012000280200460440418080c4000f0b2000200141016a36020420012d00002203411874411875410048047f2000200141026a36020420012d0001413f7121022003411f712104200341df014d044020044106742002720f0b2000200141036a36020420012d0002413f712002410674722102200341f00149044020022004410c74720f0b2000200141046a3602042004411274418080f0007120012d0003413f71200241067472720520030b0b3f01017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b200221040b20002001360204200020043602000b8a0301067f230041306b22022400200028020421042000280200210302400240200128020822064101472001280210220541014771450440024020054101470d00200141146a28020020024100360228200220033602242002200320046a36022041016a210003400240200241186a200241206a1062200228021c2105200041016b2200450d002005418080c400470d010c020b0b2005418080c400460d00200241106a200228021820032004106420022802142004200228021022001b21042000200320001b21030b2006450440200128020020032004200128020428020c11000021000c030b2001410c6a2802002200200320046a2003105a22054d0d01200241086a2001200020056b4100105c41012100200228020c2205418080c400460d0220022802082001280200220720032004200141046a280200220128020c1100000d02200520072001105d21000c020b200128020020032004200128020428020c11000021000c010b200128020020032004200128020428020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b2c0020024181014f0440200241800141ec8e041057000b200041800120026b3602042000200120026a3602000b8501002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041a4980436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a20041012000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1047200341206a24000b850201037f23004190016b22022400027f02402001280218220341107145044020034120710d012000200110510c020b2000280200210041ff0021030340200241106a20036a413041d7002000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b200241086a200241106a200341016a1068200141fc8e0441022002280208200228020c10590c010b2000280200210041ff0021030340200241106a20036a413041372000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b2002200241106a200341016a1068200141fc8e0441022002280200200228020410590b20024190016a24000b7101017f230041206b22022400027f410120002001106b0d001a200241146a41013602002002411c6a4100360200200241c88a0436021020024180c4043602182002410036020841012001280200200141046a280200200241086a106a0d001a200041046a2001106b0b200241206a24000bde08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274106e0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a4100200220016b22022000200020024b1b22022001200041b493041061200341c8006a200420032802502003280254106f20032802484101470d02200328024c21010c050b200341306a200420012000106f2003280234210120032802300c050b41c08904412141e8a0041037000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241e493041056200341386a200420032802402003280244106f410020032802384101470d011a2002200328023c6a220120024f0d0041a08904411c41f493041037000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002106e20032802282202450d05200328022c2100200341206a41002003280278200941044198a104106120022000200328022020032802241070450d05200341186a200328026020032802702200200c107120032000360260200328021c2102200328021821000c080b200320032802743602700c060b41a08904411c41c493041037000b41a08904411c41f8a0041037000b41a08904411c4188a1041037000b41a08904411c41d493041037000b200341106a2003280268200328026c20032802702003280274106e20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a2004200120032802681071200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741ec8d044104200628020c110000450d010c020b41c08904412141b09b041037000b2003410a36028c0120082002047f200320002002200241016b41a4970410562003418c016a41012003280200200328020410700541000b3a0000200720002002200628020c110000450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011058200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f200020022001100a0541010b450b1500200020012002200341bc9c0441c089041099010be60101017f230041106b220224002002410036020c20002002410c6a027f0240024020014180014f04402001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200220013a000c41010c020b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b106d200241106a24000b0d002000200141c89004109a010b0d00200028020020012002106d0b0b002000280200200110720b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1073200241206a24000b1a002000418080c40046044041cc8c04412b20011037000b20000ba10201037f418080c4002101024002400240024002400240410320002802042203418080c4006b200341ffffc3004d1b41016b0e03000102030b2000418080c40036020420002802000f0b2000418180c40036020441dc000f0b0240024002400240024020002d000841016b0e050004010203050b200041003a000841fd000f0b200041023a000841fb000f0b200041033a000841f5000f0b200041043a000841dc000f0b2000280200220241ffffffff03712002470d012002410274220141204f0d0220032001411c7176410f712201413072200141d7006a2001410a491b41e88b04107721012002450440200041013a000820010f0b2000200241016b3602000b20010f0b41f08904412141c88b041037000b41a08a04412441d88b041037000bb70701067f418280c400210402400240024002400240024002400240200141096b0e050103060602000b2001450440413021030c070b4122210320014122460d034127210320014127460d0441dc002103200141dc00460d060c050b41f40021030c050b41f20021030c040b41ee0021030c030b20024180800471450d010c020b2002418002710d010b0240024002400240024002400240024002402002410171450d002001410b742105410021034121210441212102024002400340200320044f0d02200320024101766a22022003490d0402402005200241027441e8b3046a280200410b7422064d044020052006460d03200221040c010b200241016a2203450d060b200420036b2102200320044d0d000b41c08904412141d497041037000b200241016a21030b200341204b0d032003410274220241e8b3046a28020022054115762104027f2001027f024020034120470440200241ecb3046a28020041157622022004490d0820030d0120010c030b200541808080d80549044041d7052102411f0c020b41c08904412141e4b1041037000b200341016b0b41027441e8b3046a28020041ffffff00712203490d06200120036b0b210520022004460d06200241016b2106024020022004417f736a450d0041d7052004200441d7054d1b2107200241016b210841002103034020042007460d09024020032003200441ecb4046a2d00006a22024d0440200220054d0d01200421060c030b41a08904411c41b4b2041037000b200221032008200441016a2204470d000b0b2006410171450d002001410172674102764107732103200121040c090b024020014120490d00418180c4002104200141ff00490d0802402001418080044f0440200141808008490d01200141f083386b4190fc0b49200141b0c70c6b41d0ba2b4972200141cba60c6b4105492001419ef40b6b41e20b497272200141e1d70b6b419f1849200141a29d0b6b410e49722001417e71419ef00a46200141607141e0cd0a467272720d02200141baee0a6b41064f0d0a0c020b200141d4a504412841a4a604419f0241c3a80441af02107a0d090c010b200141f2aa04412c41caab0441c401418ead0441c203107a0d080b2001410172674102764107732103200121040c080b41a08904411c41b497041037000b41a08904411c41c497041037000b4121412141d4b1041060000b41c08904412141f4b1041037000b41c0890441214184b2041037000b41c0890441214194b2041037000b200741d70541a4b2041060000b200121030b2000410536020820002004360204200020033602000bfa0201097f230041106b2209240041012108024002402002450d00200120024101746a210b20004180fe0371410876210c20012d00012102200041ff0171210e03402002210d200141026a210a0240200c20012d00002202470440200a200b462002200c4b720d030c010b200941086a2007200d2003200441b4a5041061200928020c210220092802082107024003402002450d01200241016b210220072d0000210f200741016a2107200e200f470d000b410021080c040b200a200b460d020b200141036a2102200a2101200d2207200720022d00006a22024d0d000b41a08904411c41a4a5041037000b2006450d00200520066a2101200041ffff0371210703400240200541016a210020052d00002202411874411875220341004e047f20000520002001460d0120052d0001200341ff0071410874722102200541026a0b2105200720026b22074100480d022008410173210820012005470d010c020b0b41cc8c04412b41c4a5041037000b200941106a240020084101710b890101037f230041206b22022400410121030240200128020022044127200128020428021022011101000d00200220002802004181021079200241186a200241086a280200360200200220022903003703100340200241106a10782200418080c40046044020044127200111010021030c020b200420002001110100450d000b0b200241206a240020030b6200024002402003450d00200220034d044020022003460d010c020b200120036a2c00004140480d010b2002200349044041c08904412141cc9c041037000b2000200220036b3602042000200120036a3602000f0b20012002200320022004107d000bfb0501047f23004180016b220524002005200336021c20052002360218200541106a20002001418002107e2206200020011064024002400240200528021022070440200528021421082005200736022020052008360224200541054100200120064b22061b36022c200541a8a1044180c40420061b36022802402005200120024f047f200120034f0d0120030520020b360238200541cc006a4103360200200541d4006a4103360200200541ec006a4104360200200541e4006a4104360200200541d0a104360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602682005200541206a3602602005200541386a3602580c040b200220034b0d01024002402002450d00200120024d044020012002460d010c020b200020026a2c00004140480d010b200321020b20052002360230200541086a20002001200020012002107e22002004107c20052005280208220136025c20052001200528020c6a3602582005200541d8006a1063200410772201360234027f41012001418001490d001a41022001418010490d001a41034104200141808004491b0b20006a220120004f0d0241a08904411c20041037000b20002001410020062004107d000b200541f4006a4104360200200541ec006a4104360200200541e4006a4106360200200541cc006a4104360200200541d4006a41043602002005418ca204360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602702005200541206a36026820052005411c6a3602602005200541186a3602580c010b2005200136023c20052000360238200541cc006a4105360200200541d4006a4105360200200541fc006a4104360200200541f4006a4104360200200541ec006a4109360200200541e4006a410a360200200541e0a204360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602782005200541206a3602702005200541386a3602682005200541346a3602602005200541306a3602580b200541406b20041012000b8f0101037f230041106b220324000240200120024b0440200341086a200241036b22044100200220044f1b2204200241016a200020014180a4041061200328020841016b2100200328020c2101034020010440200020016a200141016b220221012c00004140480d010b0b200220046a22012004490d010b200341106a240020010f0b41a08904411c4190a4041037000b9c0201047f230041406a2205240041012107024020002802002206200120022000280204220228020c22011100000d00024020002802182208410471450440200641f48d04410120011100000d022003200020041101000d0220002802002106200028020428020c21010c010b200641f28d04410220011100000d01200541013a00172005200236020c2005200636020820052008360230200541d48d0436021c200520002d00203a00382005200028021c36023420052000290210370328200520002902083703202005200541176a3602102005200541086a3602182003200541186a20041101000d01200528021841f08d044102200528021c28020c1100000d010b200641c48a044101200111000021070b200541406b240020070b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1047200241206a24000b0b002000280200200110650b180020012802004184c9044105200128020428020c1100000b990301037f230041406a22022400200028020021034101210002402001280200220441a08d04410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b08d04360230200241003602282002410b3602142002200241106a36023820022002410c6a36021020042001200241286a106a450d010c020b20032802002200200328020428020c110b0042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b08d04360230200241003602282002410c3602142002200241106a36023820022002410c6a36021020042001200241286a106a0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241f88c043602182002410036021020022000410c6a3602382002200041086a3602302002410436022c200220003602282002200241286a36022020042001200241106a106a21000b200241406b240020000b2601017f230041106b22022400200220003b010e20012002410e6a4102103e200241106a24000bed0702057f057e230041c0016b22022400200241286a200020011086010240024002402002290328a74101460440200241386a290300210820022002290330220a37034020022008370348200241186a2000102920022903182207200241206a290300220b84500d012002200742017d22093703502002200b2007200956ad7c42017d22073703582009200a8520072008858450450440200220003602782002200241d0006a36027c20024184c20436029c01200241d4c004360298012002200241f8006a3602a00120024180016a20024198016a101020022d00800122034107460d03200241ef006a220420024190016a290000370000200241e8006a220520024189016a290000370300200220022900810137036020034106460d04200241b8016a2004290000370000200241b1016a2005290300370000200220022903603700a901200220033a00a801200220003602602002200241406b36026420024184c20436028401200241d4c004360280012002200241e0006a22033602880120024180016a2204200241a8016a2205108701200220003602602002200536026420024188c20436028401200241d4c00436028001200220033602880120042002290340200241c8006a29030010880120022d00a8011a0b20022000360298012002200241d0006a36029c0120024184c204360264200241d4c004360260200220024198016a220436026820024100360288012002428080013702ac01200241bec9043602a801200241e0006a2205200241a8016a2203108901200220022903a80137038001200241106a20024180016a220620022802b00110162002280210200228021410071a2002200136029c01200220003602980120024188c204360264200241d4c0043602602002200436026820024100360288012002428080013702ac01200241bec9043602a80120052003108a01200220022903a80137038001200241086a200620022802b00110162002280208200228020c10071a200220003602b001200241fcc3043602ac01200241d4c0043602a80120032002290350200241d8006a290300108b010b200241c0016a24000f0b41b0c004412141fcc2041037000b200220022d0081013a00a701200241b4016a4101360200200241bc016a4101360200200241fcc0043602b001200241003602a801200241013602642002200241e0006a3602b8012002200241a7016a360260200241a8016a41f4c1041012000b230041106b220124002001412b36020c2001418cc304360208230041206b220024002000410c6a4101360200200041146a4101360200200041c4ba04360208200041003602002000410436021c2000200141086a3602182000200041186a360210200041b8c3041012000bbe0302047f037e230041e0006b220324002003200236022c200320013602282003410036024020034280800137024c200341bec90436024841d4c0044188c204200341c8006a2206108c01200341286a2006108d0120032003290348370338200341206a200341386a20032802501016200328022421042003280220200328023821012003200328023c22023602482004200120061000210402402003280248220520024d0440027e024002400240410c20042004410c4f1b0e0402000001000b200341d4006a4101360200200341dc006a4100360200200341f8c50436025020034180c40436025820034100360248200341c8006a4180c6041012000b42000c010b2003200536024c20032001360248200341086a200341c8006a10422003290308a70d02200341186a29030021072003290310210842010b21092000200837030820002009370300200041106a2007370300200341e0006a24000f0b2005200241e4c4041017000b200341003a0037200341d4006a4101360200200341dc006a4101360200200341fcc004360250200341003602482003410136023c2003200341386a3602582003200341376a360238200341c8006a41f4c1041012000ba30102047f017e230041306b2202240020024100360218200242808001370224200241bec9043602202000200241206a220310890120022002290320370310200241086a200241106a220420022802281016200228020c2100200228020820022903102106200241003602282002200637032020012003101520022002290320370310200220042002280228101620002002280200200228020410061a200241306a24000ba50102047f017e230041306b2203240020034100360218200342808001370224200341bec9043602202000200341206a2204108a0120032003290320370310200341086a200341106a220520032802281016200328020c21002003280208200329031021072003410036022820032007370320200120022004103f20032003290320370310200320052003280228101620002003280200200328020410061a200341306a24000b1e002000280200200041046a280200200110900120002802082001108f010b1e002000280200200041046a280200200110900120002802082001108d010ba50102047f017e230041306b2203240020034100360218200342808001370224200341bec9043602202000200341206a2204108e0120032003290320370310200341086a200341106a220520032802281016200328020c21002003280208200329031021072003410036022820032007370320200120022004103f20032003290320370310200320052003280228101620002003280200200328020410061a200341306a24000b3001017f230041106b22032400200020021091012003200128020036020c20022003410c6a4104103e200341106a24000b1500200028020020011092012000280204200110150b1e002000280200200041046a2802002001109001200028020820011092010b22002000280200200110920120002802042200290300200041086a2903002001103f0b100020002002109101200120021091010b0b002000280200200110140b2100200028020045044020014100100c0f0b20014101100c2000280200200110190b4801027f230041106b220224002002410036020c024020012002410c6a4104100e450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b4201017f20002f01042103200041003a00042003410171450440200028020020012002100e0f0b200120034108763a00002000280200200141016a200241016b100e0ba50202037f047e230041d0006b22022400200241106a20002001108601024002402002290310a74504402002200010292002290300220542017c22072005542203200241086a29030022062003ad7c220820065420052007581b0d0220022000360230200241fcc30436022c200241d4c004360228200241286a20072008108b010c010b200241206a2903002106200229031821050b20022005370328200220063703302002200136023c2002200036023820024188c204360244200241d4c0043602402002200241386a2203360248200241406b220420052006108801200220003602382002200241286a36023c20024184c204360244200241d4c0043602402002200336024820042001108701200241d0006a24000f0b41e0c304411c41c8c3041037000bcd04010a7f230041d0006b22022400200028020022002802082103200028020421044101210802400240024020012802002207412220012802042209280210220a1101000d004100210120024100360228200220043602242002200320046a360220200241186a200241206a1062200228021c2205418080c400470440200228021821000340200241306a2005418180041079024002400240410320022802342206418080c4006b200641ffffc3004d1b41016b0e03020100010b2002280230220620022d00386a220b2006490d05200b4101460d010b20002001490d0502402001450d00200120034f044020012003460d010c070b200120046a2c00004140480d060b02402000450d00200020034f044020002003470d070c010b200020046a2c00004140480d060b200241106a200120002004107120022802102206450d05200720062002280214200928020c110000450440200241c8006a200241386a280200360200200220022903303703400340200241406b10782201418080c400460440027f41012005418001490d001a41022005418010490d001a41034104200541808004491b0b20006a220120004f0d0341a08904411c419892041037000b20072001200a110100450d000b0b0c030b200241086a200241206a106220022802082100200228020c2205418080c400470d000b0b200220042003200141a89204107c200720022802002002280204200928020c1100000d0020074122200a11010021080b200241d0006a240020080f0b41a08904411c41f88b041037000b200420032001200041889204107d000bd10101017f230041106b22022400027f024002400240024002400240200028020041016b0e050102030405000b2002200041046a36020820014190c6044106200241086a410d107f0c050b200128020041d1c604410b200128020428020c1100000c040b200128020041c6c604410b200128020428020c1100000c030b200128020041bbc604410b200128020428020c1100000c020b200128020041adc604410e200128020428020c1100000c010b2002200041046a36020c20014196c60441172002410c6a410d107f0b200241106a24000b1500200020012002200341d8c70441f0c7041099010b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041037000b5301017f230041206b2203240020032000360204200341186a200141106a290200370300200341106a200141086a29020037030020032001290200370308200341046a2002200341086a1047200341206a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a20021012000b0be9480700418080040be1090e00000010000000040000000f000000100000000100000001000000010000004120636f6e7472616374206265696e67206578656375746564206d757374206861766520612076616c6964206163636f756e742069642e0074220100660000007c0100000e00000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e00000074220100660000006b0100000e000000742201006600000024010000230000002f55736572732f7469656e2f50726f6a656374732f70737033342f6c69622e7273000000cc000100210000001000000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900000101002700000073746f7261676520656e7472792077617320656d70747900300101001700000043616e206d696e74cc0001002100000025000000120000004d79505350333473796d626f6c000000100000000400000004000000110000001200000013000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000100000000000000001000000140000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e7273e4010100780000008a0100001c0000006361706163697479206f766572666c6f770000006c02010011000000e40101007800000006020000050000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640e03010015000000230301000d00000098020100760000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e727300830301007400000064020000200000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730804010078000000350700000d0000000804010078000000a307000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041f089040b21617474656d707420746f206d756c7469706c792077697468206f766572666c6f770041a08a040bcc14617474656d707420746f2073686966742072696768742077697468206f766572666c6f77292e2e0045050100020000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f636861722f6d6f642e72735005010078000000bf000000350000005005010078000000bf000000210000005005010078000000c0000000330000005005010078000000ed00000009000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732000000806010020000000280601001200000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75653a0022010000000000770601000100000077060100010000001000000000000000010000001500000070616e69636b65642061742027272c20ac06010001000000ad06010003000000603a20000022010000000000c106010002000000100000000c00000004000000160000001700000018000000202020202c0a280a282f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e7273f5060100770000006500000014000000307830303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390000100000000400000004000000190000001a0000001b0000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273006008010077000000710500000d0000006008010077000000750500000d000000600801007700000005060000380000006008010077000000920900001e00000060080100770000009609000018000000600801007700000099090000160000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273380901007c0000004e0000002f000000380901007c0000005a0000001f000000380901007c0000006300000009000000380901007c0000006800000027000000380901007c000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820040a010012000000160a01002200000072616e676520656e6420696e64657820480a010010000000160a010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000680a0100160000007e0a01000d0000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300009c0a01007a000000be050000250000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273000000280b010079000000040900001e000000280b010079000000d209000017000000280b010079000000de09000018000000280b010079000000e709000014000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028e40b010015000000f90b01002b00000044050100010000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000003c0c01007900000047000000150000003c0c0100790000004f000000320000003c0c01007900000054000000110000003c0c0100790000005a000000090000003c0c01007900000064000000110000003c0c010079000000660000000d0000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273180d0100780000009100000026000000180d0100780000009100000011000000180d0100780000004f0200002d0000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e72730000c00d01007a000000ca00000013000000c00d01007a00000062010000130000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e7273005c0e01007f000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041ae9f040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041ec9f040be9232f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300ec0f01007b000000a101000047000000ec0f01007b000000b401000020000000ec0f01007b000000b401000011000000ec0f01007b000000b8010000260000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f6620600000ad1001000b000000b810010016000000c006010001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000e81001000e000000f610010004000000fa10010010000000c006010001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060ad1001000b0000002c1101002600000052110100080000005a11010006000000c0060100010000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f6d6f642e7273008811010077000000070100001d00000088110100770000000c010000160000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e72730000002012010081000000080000001800000020120100810000000a0000001c00000020120100810000001a0000003600000000010305050606020706080709110a1c0b190c1a0d100e0c0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206170c500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d081f0124016a046b02af03b102bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa03fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f92116f5fbfeeef5a62f4fcff53549a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6fbe935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524b2b082a161a261c1417094e042409440d19070a0648082709750b423e2a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d49070a80f6460a1d03474937030e080a0639070a813619073b031c56010f320d839b66750b80c48a4c630d843010168faa8247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781330f011d060e0408818c89046b050d0309071092604709743c80f60a73087015467a140c140c570919808781470385420f1584501f060680d52b053e2101702d031a040281401f113a050181d02a82e680f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80411030d0377045f060c04010f0c0438080a062808224e81540c1d03090736080e040907090780cb250a84062f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e72735018010084000000500000002800000050180100840000005400000009000000501801008400000052000000090000005018010084000000590000001100000050180100840000005b0000001100000050180100840000005c0000001600000050180100840000005d000000090000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e727300000044190100810000009500000001000000f506010077000000cd010000050000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301c6148f31ea14c40346150f06aa1514f6f21529dbca15200cf615365d1a15300da215400e0e155aee26157ece42159d0e8a1592000ee59f0017f5a00700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b0749021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a502000400025003460b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f0302010102060102019d010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a06030101020107010148020301010100020b023405050101010001060f00053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f000701110207010201056401a00700013d04000400076d07006080f0000000220100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e7273c41d01007c0000002f01000018000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a0022010000000000af1e0100010000002f55736572732f7469656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300c01e0100670000005a0000001c000000c01e0100670000005a00000009000000c01e0100670000005a00000031000000c01e0100670000006500000009000000c01e0100670000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465000000617474656d707420746f2073756274726163742077697468206f766572666c6f7700000040a232ca4661696c656420746f206765742076616c756520696e205261774d617070696e673a200058200100230000002f55736572732f7469656e2f2e636172676f2f6769742f636865636b6f7574732f6f70656e62727573682d636f6e7472616374732d346332393166376161623939633337642f313365383266332f6c616e672f7372632f73746f726167652f7261775f6d617070696e672e7273000000842001006d000000410000002500000002000000010000002f55736572732f7469656e2f2e636172676f2f6769742f636865636b6f7574732f6f70656e62727573682d636f6e7472616374732d346332393166376161623939633337642f313365383266332f6c616e672f7372632f73746f726167652f6d756c74695f6d617070696e672e7273000c2101006f0000002c0100001b0000005468652076616c756520756e64657220746865206c61737420696e6465782073686f756c64206578697374000c2101006f00000031010000120000000c2101006f000000850000002f0041e0c3040b8504617474656d707420746f206164642077697468206f766572666c6f77000000002f55736572732f7469656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730022010064000000e4000000140000002f55736572732f7469656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273656e636f756e746572656420756e6578706563746564206572726f720000da2201001c0000007422010066000000ed00000017000000437573746f6d536166655472616e73666572436865636b4661696c6564546f6b656e4e6f74457869737473546f6b656e4578697374734e6f74417070726f76656453656c66417070726f76652f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273005c2301007b00000082010000470041f0c7040bc301617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f7469656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e302f7372632f636f6465632e727300001124010061000000770000000e0000004572726f72000000190000001c000000160000001400000019000000ab1d01008f1d0100791d0100651d01004c1d01","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"psp34","version":"1.0.0","authors":[""]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":10},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":0},"balance":{"displayName":["Balance"],"type":7},"blockNumber":{"displayName":["BlockNumber"],"type":5},"chainExtension":{"displayName":["ChainExtension"],"type":29},"hash":{"displayName":["Hash"],"type":28},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":6}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[],"default":false,"docs":[" Returns current NFT total supply."],"label":"PSP34::total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x628413fe"},{"args":[{"label":"owner","type":{"displayName":["psp34_external","BalanceOfInput1"],"type":0}}],"default":false,"docs":[" Returns the balance of the owner.",""," This represents the amount of unique tokens the owner has."],"label":"PSP34::balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":13},"selector":"0xcde7e55f"},{"args":[{"label":"id","type":{"displayName":["psp34_external","OwnerOfInput1"],"type":14}}],"default":false,"docs":[" Returns the owner of the token if any."],"label":"PSP34::owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x1168624d"},{"args":[],"default":false,"docs":[" Returns the collection \`Id\` of the NFT token.",""," This can represents the relationship between tokens/contracts/pallets."],"label":"PSP34::collection_id","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0xffa27a5f"},{"args":[{"label":"owner","type":{"displayName":["psp34_external","AllowanceInput1"],"type":0}},{"label":"operator","type":{"displayName":["psp34_external","AllowanceInput2"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","AllowanceInput3"],"type":18}}],"default":false,"docs":[" Returns \`true\` if the operator is approved by the owner to withdraw \`id\` token."," If \`id\` is \`None\`, returns \`true\` if the operator is approved to withdraw all owner's tokens."],"label":"PSP34::allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x4790f55a"},{"args":[{"label":"operator","type":{"displayName":["psp34_external","ApproveInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","ApproveInput2"],"type":18}},{"label":"approved","type":{"displayName":["psp34_external","ApproveInput3"],"type":20}}],"default":false,"docs":[" Approves \`operator\` to withdraw the \`id\` token from the caller's account."," If \`id\` is \`None\` approves or disapproves the operator for all tokens of the caller.",""," On success a \`Approval\` event is emitted.",""," # Errors",""," Returns \`SelfApprove\` error if it is self approve.",""," Returns \`NotApproved\` error if caller is not owner of \`id\`."],"label":"PSP34::approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x1932a8b0"},{"args":[{"label":"to","type":{"displayName":["psp34_external","TransferInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","TransferInput2"],"type":14}},{"label":"data","type":{"displayName":["psp34_external","TransferInput3"],"type":8}}],"default":false,"docs":[" Transfer approved or owned token from caller.",""," On success a \`Transfer\` event is emitted.",""," # Errors",""," Returns \`TokenNotExists\` error if \`id\` does not exist.",""," Returns \`NotApproved\` error if \`from\` doesn't have allowance for transferring.",""," Returns \`SafeTransferCheckFailed\` error if \`to\` doesn't accept transfer."],"label":"PSP34::transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3128d61b"},{"args":[{"label":"account","type":{"displayName":["psp34burnable_external","BurnInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34burnable_external","BurnInput2"],"type":14}}],"default":false,"docs":[" Destroys token with id equal to \`id\` from \`account\`",""," Caller must be approved to transfer tokens from \`account\`"," or to transfer token with \`id\`"],"label":"PSP34Burnable::burn","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x63c9877a"},{"args":[{"label":"account","type":{"displayName":["psp34mintable_external","MintInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34mintable_external","MintInput2"],"type":14}}],"default":false,"docs":[" Mints a new token with \`id\`.",""," See [\`PSP34::_mint_to\`]."],"label":"PSP34Mintable::mint","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x6c41f2ec"},{"args":[{"label":"owner","type":{"displayName":["psp34enumerable_external","OwnersTokenByIndexInput1"],"type":0}},{"label":"index","type":{"displayName":["psp34enumerable_external","OwnersTokenByIndexInput2"],"type":7}}],"default":false,"docs":[" Returns a token \`Id\` owned by \`owner\` at a given \`index\` of its token list."," Use along with \`balance_of\` to enumerate all of \`\`owner\`\`'s tokens.",""," The start index is zero."],"label":"PSP34Enumerable::owners_token_by_index","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":24},"selector":"0x3bcfb511"},{"args":[{"label":"index","type":{"displayName":["psp34enumerable_external","TokenByIndexInput1"],"type":7}}],"default":false,"docs":[" Returns a token \`Id\` at a given \`index\` of all the tokens stored by the contract."," Use along with \`total_supply\` to enumerate all tokens.",""," The start index is zero."],"label":"PSP34Enumerable::token_by_index","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":24},"selector":"0xcd0340d0"},{"args":[{"label":"id","type":{"displayName":["psp34metadata_external","GetAttributeInput1"],"type":14}},{"label":"key","type":{"displayName":["psp34metadata_external","GetAttributeInput2"],"type":9}}],"default":false,"docs":[" Returns the attribute of \`id\` for the given \`key\`.",""," If \`id\` is a collection id of the token, it returns attributes for collection."],"label":"PSP34Metadata::get_attribute","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xf19d48d1"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"leaf":{"key":"0x1cc80634","ty":0}},"root_key":"0x1cc80634"}},"name":"token_owner"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7e3fae6b","ty":3}},"root_key":"0x7e3fae6b"}},"name":"operator_approvals"},{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"enum":{"dispatchKey":"0xca32a240","name":"Id","variants":{"0":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":2}},"name":"0"}],"name":"U8"},"1":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":4}},"name":"0"}],"name":"U16"},"2":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":5}},"name":"0"}],"name":"U32"},"3":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":6}},"name":"0"}],"name":"U64"},"4":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":7}},"name":"0"}],"name":"U128"},"5":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":8}},"name":"0"}],"name":"Bytes"}}}},"root_key":"0xca32a240"}},"name":"enumerable"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Balances"}},"name":"balances"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"psp34"},{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"leaf":{"key":"0x9b2d2382","ty":9}},"root_key":"0x9b2d2382"}},"name":"attributes"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"metadata"}],"name":"Contract"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"composite":{"fields":[{"type":1,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":1,"type":{"def":{"array":{"len":32,"type":2}}}},{"id":2,"type":{"def":{"primitive":"u8"}}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"primitive":"u16"}}},{"id":5,"type":{"def":{"primitive":"u32"}}},{"id":6,"type":{"def":{"primitive":"u64"}}},{"id":7,"type":{"def":{"primitive":"u128"}}},{"id":8,"type":{"def":{"sequence":{"type":2}}}},{"id":9,"type":{"def":{"primitive":"str"}}},{"id":10,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":11}],"path":["Result"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":7}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":7},{"name":"E","type":11}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":11}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2,"typeName":"u8"}],"index":0,"name":"U8"},{"fields":[{"type":4,"typeName":"u16"}],"index":1,"name":"U16"},{"fields":[{"type":5,"typeName":"u32"}],"index":2,"name":"U32"},{"fields":[{"type":6,"typeName":"u64"}],"index":3,"name":"U64"},{"fields":[{"type":7,"typeName":"u128"}],"index":4,"name":"U128"},{"fields":[{"type":8,"typeName":"Vec"}],"index":5,"name":"Bytes"}]}},"path":["openbrush_contracts","traits","types","Id"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":16}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":16},{"name":"E","type":11}],"path":["Result"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":0}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":0}],"path":["Option"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":14}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":14},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":14}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":14}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"primitive":"bool"}}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":23}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":23}],"path":["Result"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9,"typeName":"String"}],"index":0,"name":"Custom"},{"index":1,"name":"SelfApprove"},{"index":2,"name":"NotApproved"},{"index":3,"name":"TokenExists"},{"index":4,"name":"TokenNotExists"},{"fields":[{"type":9,"typeName":"String"}],"index":5,"name":"SafeTransferCheckFailed"}]}},"path":["openbrush_contracts","traits","errors","psp34","PSP34Error"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":25}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":25},{"name":"E","type":11}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"fields":[{"type":14}],"index":0,"name":"Ok"},{"fields":[{"type":23}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":14},{"name":"E","type":23}],"path":["Result"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":9}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":9}],"path":["Option"]}},{"id":28,"type":{"def":{"composite":{"fields":[{"type":1,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":29,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"}` diff --git a/packages/nft/generated/ink/contracts/psp34.ts b/packages/nft/generated/ink/contracts/psp34.ts new file mode 100644 index 000000000..2483cdd6d --- /dev/null +++ b/packages/nft/generated/ink/contracts/psp34.ts @@ -0,0 +1,102 @@ +/* This file is auto-generated */ + +import type { ApiPromise } from '@polkadot/api' +import { Abi } from '@polkadot/api-contract' +import type { KeyringPair } from '@polkadot/keyring/types' +import { ContractPromise } from '@polkadot/api-contract' +import { ContractAbi } from '../contract-info/psp34.js' +import QueryMethods from '../query/psp34.js' +import BuildExtrinsicMethods from '../build-extrinsic/psp34.js' +import TxSignAndSendMethods from '../tx-sign-and-send/psp34.js' +import MixedMethods from '../mixed-methods/psp34.js' +import EventsClass from '../events/psp34.js' + +export default class Contract { + readonly query: QueryMethods + readonly buildExtrinsic: BuildExtrinsicMethods + readonly tx: TxSignAndSendMethods + readonly methods: MixedMethods + readonly events: EventsClass + + readonly address: string + readonly signer: KeyringPair + + readonly nativeContract: ContractPromise + readonly nativeAPI: ApiPromise + readonly contractAbi: Abi + + /** + * @constructor + + * @param address - The address of the contract. + * @param signer - The signer to use for signing transactions. + * @param nativeAPI - The API instance to use for queries. + */ + constructor(address: string, signer: KeyringPair, nativeAPI: ApiPromise) { + this.address = address + this.nativeContract = new ContractPromise(nativeAPI, ContractAbi, address) + this.nativeAPI = nativeAPI + this.signer = signer + this.contractAbi = new Abi(ContractAbi) + + this.query = new QueryMethods(this.nativeContract, this.nativeAPI, signer.address) + this.buildExtrinsic = new BuildExtrinsicMethods(this.nativeContract, this.nativeAPI) + this.tx = new TxSignAndSendMethods(nativeAPI, this.nativeContract, signer) + this.methods = new MixedMethods(nativeAPI, this.nativeContract, signer) + this.events = new EventsClass(this.nativeContract, nativeAPI) + } + + /** + * name + * + * @returns The name of the contract. + */ + get name(): string { + return this.nativeContract.abi.info.contract.name.toString() + } + + /** + * abi + * + * @returns The abi of the contract. + */ + get abi(): Abi { + return this.contractAbi + } + + /** + * withSigner + * + * @param signer - The signer to use for signing transactions. + * @returns New instance of the contract class with new signer. + * @example + * ```typescript + * const contract = new Contract(address, signerAlice, api); + * await contract.mint(signerBob.address, 100); + * await contract.withSigner(signerBob).transfer(signerAlice.address, 100); + * ``` + */ + withSigner(signer: KeyringPair): Contract { + return new Contract(this.address, signer, this.nativeAPI) + } + + /** + * withAddress + * + * @param address - The address of the contract. + * @returns New instance of the contract class to interact with new contract. + */ + withAddress(address: string): Contract { + return new Contract(address, this.signer, this.nativeAPI) + } + + /** + * withAPI + * + * @param api - The API instance to use for queries. + * @returns New instance of the contract class to interact with new API. + */ + withAPI(api: ApiPromise): Contract { + return new Contract(this.address, this.signer, api) + } +} diff --git a/packages/nft/generated/ink/data/psp34.json b/packages/nft/generated/ink/data/psp34.json new file mode 100644 index 000000000..2f90823e0 --- /dev/null +++ b/packages/nft/generated/ink/data/psp34.json @@ -0,0 +1,462 @@ +{ + "0": { + "name": "AccountId", + "body": "string | number[]", + "isResult": false, + "isPrimitive": true, + "isConvertable": false + }, + "1": { + "name": "Array", + "body": { "0": { "name": "number", "isResult": false, "isPrimitive": true, "isConvertable": false } }, + "isResult": false, + "isPrimitive": false, + "isConvertable": false + }, + "2": { "name": "number", "isResult": false, "isPrimitive": true, "isConvertable": false }, + "3": { "name": "null", "isResult": false, "isPrimitive": true, "isConvertable": false }, + "4": { "name": "number", "isResult": false, "isPrimitive": true, "isConvertable": false }, + "5": { "name": "number", "isResult": false, "isPrimitive": true, "isConvertable": false }, + "6": { "name": "number", "isResult": false, "isPrimitive": true, "isConvertable": false }, + "7": { "name": "ReturnNumber", "isResult": false, "isPrimitive": false, "isConvertable": true }, + "8": { + "name": "Array", + "body": { "0": { "name": "number", "isResult": false, "isPrimitive": true, "isConvertable": false } }, + "isResult": false, + "isPrimitive": false, + "isConvertable": false + }, + "9": { "name": "string", "isResult": false, "isPrimitive": true, "isConvertable": false }, + "10": { + "name": "Result void, + filter: (eventName: string) => boolean = () => true + ) { + // @ts-ignore + return this.__api.query.system.events(events => { + events.forEach((record: any) => { + const { event } = record + + if (event.method == 'ContractEmitted') { + const [address, data] = record.event.data + + if (address.toString() === this.__nativeContract.address.toString()) { + const { args, event } = this.__nativeContract.abi.decodeEvent(data) + + if (filter(event.identifier.toString())) callback(args, event) + } + } + }) + }) + } +} diff --git a/packages/nft/generated/ink/mixed-methods/psp34.ts b/packages/nft/generated/ink/mixed-methods/psp34.ts new file mode 100644 index 000000000..52711dd4e --- /dev/null +++ b/packages/nft/generated/ink/mixed-methods/psp34.ts @@ -0,0 +1,304 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract' +import type { ApiPromise } from '@polkadot/api' +import type { KeyringPair } from '@polkadot/keyring/types' +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types' +import type { QueryReturnType } from '@727-ventures/typechain-types' +import { queryOkJSON, queryJSON, handleReturnType } from '@727-ventures/typechain-types' +import { txSignAndSend } from '@727-ventures/typechain-types' +import type * as ArgumentTypes from '../types-arguments/psp34.js' +import type * as ReturnTypes from '../types-returns/psp34.js' +import type BN from 'bn.js' +//@ts-ignore +import { ReturnNumber } from '@727-ventures/typechain-types' +import { getTypeDescription } from './../shared/utils.js' +// @ts-ignore +import type { EventRecord } from '@polkadot/api/submittable' +import { decodeEvents } from '../shared/utils.js' +import DATA_TYPE_DESCRIPTIONS from '../data/psp34.json' +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/psp34.json' + +export default class Methods { + readonly __nativeContract: ContractPromise + readonly __keyringPair: KeyringPair + readonly __callerAddress: string + readonly __apiPromise: ApiPromise + + constructor(apiPromise: ApiPromise, nativeContract: ContractPromise, keyringPair: KeyringPair) { + this.__apiPromise = apiPromise + this.__nativeContract = nativeContract + this.__keyringPair = keyringPair + this.__callerAddress = keyringPair.address + } + + /** + * totalSupply + * + * @returns { Result } + */ + totalSupply(__options: GasLimit): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::totalSupply', + [], + __options, + result => { + return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * balanceOf + * + * @param { ArgumentTypes.AccountId } owner, + * @returns { Result } + */ + balanceOf( + owner: ArgumentTypes.AccountId, + __options: GasLimit + ): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::balanceOf', + [owner], + __options, + result => { + return handleReturnType(result, getTypeDescription(13, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * ownerOf + * + * @param { ArgumentTypes.Id } id, + * @returns { Result } + */ + ownerOf( + id: ArgumentTypes.Id, + __options: GasLimit + ): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::ownerOf', + [id], + __options, + result => { + return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * collectionId + * + * @returns { Result } + */ + collectionId(__options: GasLimit): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::collectionId', + [], + __options, + result => { + return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * allowance + * + * @param { ArgumentTypes.AccountId } owner, + * @param { ArgumentTypes.AccountId } operator, + * @param { ArgumentTypes.Id | null } id, + * @returns { Result } + */ + allowance( + owner: ArgumentTypes.AccountId, + operator: ArgumentTypes.AccountId, + id: ArgumentTypes.Id | null, + __options: GasLimit + ): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::allowance', + [owner, operator, id], + __options, + result => { + return handleReturnType(result, getTypeDescription(19, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * approve + * + * @param { ArgumentTypes.AccountId } operator, + * @param { ArgumentTypes.Id | null } id, + * @param { boolean } approved, + * @returns { void } + */ + approve(operator: ArgumentTypes.AccountId, id: ArgumentTypes.Id | null, approved: boolean, __options: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::approve', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [operator, id, approved], + __options + ) + } + + /** + * transfer + * + * @param { ArgumentTypes.AccountId } to, + * @param { ArgumentTypes.Id } id, + * @param { Array<(number | string | BN)> } data, + * @returns { void } + */ + transfer(to: ArgumentTypes.AccountId, id: ArgumentTypes.Id, data: Array, __options: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::transfer', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [to, id, data], + __options + ) + } + + /** + * burn + * + * @param { ArgumentTypes.AccountId } account, + * @param { ArgumentTypes.Id } id, + * @returns { void } + */ + burn(account: ArgumentTypes.AccountId, id: ArgumentTypes.Id, __options: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34Burnable::burn', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [account, id], + __options + ) + } + + /** + * mint + * + * @param { ArgumentTypes.AccountId } account, + * @param { ArgumentTypes.Id } id, + * @returns { void } + */ + mint(account: ArgumentTypes.AccountId, id: ArgumentTypes.Id, __options: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34Mintable::mint', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [account, id], + __options + ) + } + + /** + * ownersTokenByIndex + * + * @param { ArgumentTypes.AccountId } owner, + * @param { (string | number | BN) } index, + * @returns { Result, ReturnTypes.LangError> } + */ + ownersTokenByIndex( + owner: ArgumentTypes.AccountId, + index: string | number | BN, + __options: GasLimit + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34Enumerable::ownersTokenByIndex', + [owner, index], + __options, + result => { + return handleReturnType(result, getTypeDescription(24, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * tokenByIndex + * + * @param { (string | number | BN) } index, + * @returns { Result, ReturnTypes.LangError> } + */ + tokenByIndex( + index: string | number | BN, + __options: GasLimit + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34Enumerable::tokenByIndex', + [index], + __options, + result => { + return handleReturnType(result, getTypeDescription(24, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * getAttribute + * + * @param { ArgumentTypes.Id } id, + * @param { string } key, + * @returns { Result } + */ + getAttribute( + id: ArgumentTypes.Id, + key: string, + __options: GasLimit + ): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34Metadata::getAttribute', + [id, key], + __options, + result => { + return handleReturnType(result, getTypeDescription(26, DATA_TYPE_DESCRIPTIONS)) + } + ) + } +} diff --git a/packages/nft/generated/ink/query/psp34.ts b/packages/nft/generated/ink/query/psp34.ts new file mode 100644 index 000000000..7a20b0670 --- /dev/null +++ b/packages/nft/generated/ink/query/psp34.ts @@ -0,0 +1,314 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract' +import type { ApiPromise } from '@polkadot/api' +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types' +import type { QueryReturnType } from '@727-ventures/typechain-types' +import { queryJSON, queryOkJSON, handleReturnType } from '@727-ventures/typechain-types' +import type * as ArgumentTypes from '../types-arguments/psp34.js' +import type * as ReturnTypes from '../types-returns/psp34.js' +import type BN from 'bn.js' +//@ts-ignore +import { ReturnNumber } from '@727-ventures/typechain-types' +import { getTypeDescription } from './../shared/utils.js' +import DATA_TYPE_DESCRIPTIONS from '../data/psp34.json' + +export default class Methods { + readonly __nativeContract: ContractPromise + readonly __apiPromise: ApiPromise + readonly __callerAddress: string + + constructor(nativeContract: ContractPromise, nativeApi: ApiPromise, callerAddress: string) { + this.__nativeContract = nativeContract + this.__callerAddress = callerAddress + this.__apiPromise = nativeApi + } + + /** + * totalSupply + * + * @returns { Result } + */ + totalSupply(__options?: GasLimit): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::totalSupply', + [], + __options, + result => { + return handleReturnType(result, getTypeDescription(12, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * balanceOf + * + * @param { ArgumentTypes.AccountId } owner, + * @returns { Result } + */ + balanceOf( + owner: ArgumentTypes.AccountId, + __options?: GasLimit + ): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::balanceOf', + [owner], + __options, + result => { + return handleReturnType(result, getTypeDescription(13, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * ownerOf + * + * @param { ArgumentTypes.Id } id, + * @returns { Result } + */ + ownerOf( + id: ArgumentTypes.Id, + __options?: GasLimit + ): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::ownerOf', + [id], + __options, + result => { + return handleReturnType(result, getTypeDescription(15, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * collectionId + * + * @returns { Result } + */ + collectionId(__options?: GasLimit): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::collectionId', + [], + __options, + result => { + return handleReturnType(result, getTypeDescription(17, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * allowance + * + * @param { ArgumentTypes.AccountId } owner, + * @param { ArgumentTypes.AccountId } operator, + * @param { ArgumentTypes.Id | null } id, + * @returns { Result } + */ + allowance( + owner: ArgumentTypes.AccountId, + operator: ArgumentTypes.AccountId, + id: ArgumentTypes.Id | null, + __options?: GasLimit + ): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::allowance', + [owner, operator, id], + __options, + result => { + return handleReturnType(result, getTypeDescription(19, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * approve + * + * @param { ArgumentTypes.AccountId } operator, + * @param { ArgumentTypes.Id | null } id, + * @param { boolean } approved, + * @returns { Result, ReturnTypes.LangError> } + */ + approve( + operator: ArgumentTypes.AccountId, + id: ArgumentTypes.Id | null, + approved: boolean, + __options?: GasLimit + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::approve', + [operator, id, approved], + __options, + result => { + return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * transfer + * + * @param { ArgumentTypes.AccountId } to, + * @param { ArgumentTypes.Id } id, + * @param { Array<(number | string | BN)> } data, + * @returns { Result, ReturnTypes.LangError> } + */ + transfer( + to: ArgumentTypes.AccountId, + id: ArgumentTypes.Id, + data: Array, + __options?: GasLimit + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34::transfer', + [to, id, data], + __options, + result => { + return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * burn + * + * @param { ArgumentTypes.AccountId } account, + * @param { ArgumentTypes.Id } id, + * @returns { Result, ReturnTypes.LangError> } + */ + burn( + account: ArgumentTypes.AccountId, + id: ArgumentTypes.Id, + __options?: GasLimit + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34Burnable::burn', + [account, id], + __options, + result => { + return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * mint + * + * @param { ArgumentTypes.AccountId } account, + * @param { ArgumentTypes.Id } id, + * @returns { Result, ReturnTypes.LangError> } + */ + mint( + account: ArgumentTypes.AccountId, + id: ArgumentTypes.Id, + __options?: GasLimit + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34Mintable::mint', + [account, id], + __options, + result => { + return handleReturnType(result, getTypeDescription(21, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * ownersTokenByIndex + * + * @param { ArgumentTypes.AccountId } owner, + * @param { (string | number | BN) } index, + * @returns { Result, ReturnTypes.LangError> } + */ + ownersTokenByIndex( + owner: ArgumentTypes.AccountId, + index: string | number | BN, + __options?: GasLimit + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34Enumerable::ownersTokenByIndex', + [owner, index], + __options, + result => { + return handleReturnType(result, getTypeDescription(24, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * tokenByIndex + * + * @param { (string | number | BN) } index, + * @returns { Result, ReturnTypes.LangError> } + */ + tokenByIndex( + index: string | number | BN, + __options?: GasLimit + ): Promise, ReturnTypes.LangError>>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34Enumerable::tokenByIndex', + [index], + __options, + result => { + return handleReturnType(result, getTypeDescription(24, DATA_TYPE_DESCRIPTIONS)) + } + ) + } + + /** + * getAttribute + * + * @param { ArgumentTypes.Id } id, + * @param { string } key, + * @returns { Result } + */ + getAttribute( + id: ArgumentTypes.Id, + key: string, + __options?: GasLimit + ): Promise>> { + return queryOkJSON( + this.__apiPromise, + this.__nativeContract, + this.__callerAddress, + 'psp34Metadata::getAttribute', + [id, key], + __options, + result => { + return handleReturnType(result, getTypeDescription(26, DATA_TYPE_DESCRIPTIONS)) + } + ) + } +} diff --git a/packages/nft/generated/ink/shared/utils.ts b/packages/nft/generated/ink/shared/utils.ts new file mode 100644 index 000000000..3a505cb4f --- /dev/null +++ b/packages/nft/generated/ink/shared/utils.ts @@ -0,0 +1,40 @@ +import fs from 'fs' +import type { ContractPromise } from '@polkadot/api-contract' +import { handleEventReturn } from '@727-ventures/typechain-types' + +export function getTypeDescription(id: number | string, types: any): any { + return types[id] +} + +export function getEventTypeDescription(name: string, types: any): any { + return types[name] +} + +export function decodeEvents(events: any[], contract: ContractPromise, types: any): any[] { + return events + .filter((record: any) => { + const { event } = record + + const [address, data] = record.event.data + + return event.method == 'ContractEmitted' && address.toString() === contract.address.toString() + }) + .map((record: any) => { + const [address, data] = record.event.data + + const { args, event } = contract.abi.decodeEvent(data) + + const _event: Record = {} + + for (let i = 0; i < args.length; i++) { + _event[event.args[i]!.name] = args[i]!.toJSON() + } + + handleEventReturn(_event, getEventTypeDescription(event.identifier.toString(), types)) + + return { + name: event.identifier.toString(), + args: _event, + } + }) +} diff --git a/packages/nft/generated/ink/tx-sign-and-send/psp34.ts b/packages/nft/generated/ink/tx-sign-and-send/psp34.ts new file mode 100644 index 000000000..43b9f1ecf --- /dev/null +++ b/packages/nft/generated/ink/tx-sign-and-send/psp34.ts @@ -0,0 +1,266 @@ +/* This file is auto-generated */ + +import type { ContractPromise } from '@polkadot/api-contract' +import type { KeyringPair } from '@polkadot/keyring/types' +import type { ApiPromise } from '@polkadot/api' +import type { GasLimit, GasLimitAndRequiredValue, Result } from '@727-ventures/typechain-types' +import { txSignAndSend } from '@727-ventures/typechain-types' +import type * as ArgumentTypes from '../types-arguments/psp34.js' +import type BN from 'bn.js' +// @ts-ignore +import type { EventRecord } from '@polkadot/api/submittable' +import { decodeEvents } from '../shared/utils.js' +import EVENT_DATA_TYPE_DESCRIPTIONS from '../event-data/psp34.json' + +export default class Methods { + readonly __nativeContract: ContractPromise + readonly __keyringPair: KeyringPair + readonly __apiPromise: ApiPromise + + constructor(apiPromise: ApiPromise, nativeContract: ContractPromise, keyringPair: KeyringPair) { + this.__apiPromise = apiPromise + this.__nativeContract = nativeContract + this.__keyringPair = keyringPair + } + + /** + * totalSupply + * + */ + totalSupply(__options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::totalSupply', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [], + __options + ) + } + + /** + * balanceOf + * + * @param { ArgumentTypes.AccountId } owner, + */ + balanceOf(owner: ArgumentTypes.AccountId, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::balanceOf', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [owner], + __options + ) + } + + /** + * ownerOf + * + * @param { ArgumentTypes.Id } id, + */ + ownerOf(id: ArgumentTypes.Id, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::ownerOf', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [id], + __options + ) + } + + /** + * collectionId + * + */ + collectionId(__options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::collectionId', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [], + __options + ) + } + + /** + * allowance + * + * @param { ArgumentTypes.AccountId } owner, + * @param { ArgumentTypes.AccountId } operator, + * @param { ArgumentTypes.Id | null } id, + */ + allowance( + owner: ArgumentTypes.AccountId, + operator: ArgumentTypes.AccountId, + id: ArgumentTypes.Id | null, + __options?: GasLimit + ) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::allowance', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [owner, operator, id], + __options + ) + } + + /** + * approve + * + * @param { ArgumentTypes.AccountId } operator, + * @param { ArgumentTypes.Id | null } id, + * @param { boolean } approved, + */ + approve(operator: ArgumentTypes.AccountId, id: ArgumentTypes.Id | null, approved: boolean, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::approve', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [operator, id, approved], + __options + ) + } + + /** + * transfer + * + * @param { ArgumentTypes.AccountId } to, + * @param { ArgumentTypes.Id } id, + * @param { Array<(number | string | BN)> } data, + */ + transfer(to: ArgumentTypes.AccountId, id: ArgumentTypes.Id, data: Array, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34::transfer', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [to, id, data], + __options + ) + } + + /** + * burn + * + * @param { ArgumentTypes.AccountId } account, + * @param { ArgumentTypes.Id } id, + */ + burn(account: ArgumentTypes.AccountId, id: ArgumentTypes.Id, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34Burnable::burn', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [account, id], + __options + ) + } + + /** + * mint + * + * @param { ArgumentTypes.AccountId } account, + * @param { ArgumentTypes.Id } id, + */ + mint(account: ArgumentTypes.AccountId, id: ArgumentTypes.Id, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34Mintable::mint', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [account, id], + __options + ) + } + + /** + * ownersTokenByIndex + * + * @param { ArgumentTypes.AccountId } owner, + * @param { (string | number | BN) } index, + */ + ownersTokenByIndex(owner: ArgumentTypes.AccountId, index: string | number | BN, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34Enumerable::ownersTokenByIndex', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [owner, index], + __options + ) + } + + /** + * tokenByIndex + * + * @param { (string | number | BN) } index, + */ + tokenByIndex(index: string | number | BN, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34Enumerable::tokenByIndex', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [index], + __options + ) + } + + /** + * getAttribute + * + * @param { ArgumentTypes.Id } id, + * @param { string } key, + */ + getAttribute(id: ArgumentTypes.Id, key: string, __options?: GasLimit) { + return txSignAndSend( + this.__apiPromise, + this.__nativeContract, + this.__keyringPair, + 'psp34Metadata::getAttribute', + (events: EventRecord) => { + return decodeEvents(events, this.__nativeContract, EVENT_DATA_TYPE_DESCRIPTIONS) + }, + [id, key], + __options + ) + } +} diff --git a/packages/nft/generated/ink/types-arguments/psp34.ts b/packages/nft/generated/ink/types-arguments/psp34.ts new file mode 100644 index 000000000..ee6251b50 --- /dev/null +++ b/packages/nft/generated/ink/types-arguments/psp34.ts @@ -0,0 +1,91 @@ +import type BN from 'bn.js' + +export type AccountId = string | number[] + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput', +} + +export interface Id { + u8?: number | string | BN + u16?: number | string | BN + u32?: number | string | BN + u64?: number | string | BN + u128?: string | number | BN + bytes?: Array +} + +export class IdBuilder { + static U8(value: number | string | BN): Id { + return { + u8: value, + } + } + static U16(value: number | string | BN): Id { + return { + u16: value, + } + } + static U32(value: number | string | BN): Id { + return { + u32: value, + } + } + static U64(value: number | string | BN): Id { + return { + u64: value, + } + } + static U128(value: string | number | BN): Id { + return { + u128: value, + } + } + static Bytes(value: Array): Id { + return { + bytes: value, + } + } +} + +export interface PSP34Error { + custom?: string + selfApprove?: null + notApproved?: null + tokenExists?: null + tokenNotExists?: null + safeTransferCheckFailed?: string +} + +export class PSP34ErrorBuilder { + static Custom(value: string): PSP34Error { + return { + custom: value, + } + } + static SelfApprove(): PSP34Error { + return { + selfApprove: null, + } + } + static NotApproved(): PSP34Error { + return { + notApproved: null, + } + } + static TokenExists(): PSP34Error { + return { + tokenExists: null, + } + } + static TokenNotExists(): PSP34Error { + return { + tokenNotExists: null, + } + } + static SafeTransferCheckFailed(value: string): PSP34Error { + return { + safeTransferCheckFailed: value, + } + } +} diff --git a/packages/nft/generated/ink/types-returns/psp34.ts b/packages/nft/generated/ink/types-returns/psp34.ts new file mode 100644 index 000000000..57df86b60 --- /dev/null +++ b/packages/nft/generated/ink/types-returns/psp34.ts @@ -0,0 +1,92 @@ +import type BN from 'bn.js' +import type { ReturnNumber } from '@727-ventures/typechain-types' + +export type AccountId = string | number[] + +export enum LangError { + couldNotReadInput = 'CouldNotReadInput', +} + +export interface Id { + u8?: number + u16?: number + u32?: number + u64?: number + u128?: ReturnNumber + bytes?: Array +} + +export class IdBuilder { + static U8(value: number): Id { + return { + u8: value, + } + } + static U16(value: number): Id { + return { + u16: value, + } + } + static U32(value: number): Id { + return { + u32: value, + } + } + static U64(value: number): Id { + return { + u64: value, + } + } + static U128(value: ReturnNumber): Id { + return { + u128: value, + } + } + static Bytes(value: Array): Id { + return { + bytes: value, + } + } +} + +export interface PSP34Error { + custom?: string + selfApprove?: null + notApproved?: null + tokenExists?: null + tokenNotExists?: null + safeTransferCheckFailed?: string +} + +export class PSP34ErrorBuilder { + static Custom(value: string): PSP34Error { + return { + custom: value, + } + } + static SelfApprove(): PSP34Error { + return { + selfApprove: null, + } + } + static NotApproved(): PSP34Error { + return { + notApproved: null, + } + } + static TokenExists(): PSP34Error { + return { + tokenExists: null, + } + } + static TokenNotExists(): PSP34Error { + return { + tokenNotExists: null, + } + } + static SafeTransferCheckFailed(value: string): PSP34Error { + return { + safeTransferCheckFailed: value, + } + } +} diff --git a/packages/nft/package.json b/packages/nft/package.json index 9be6164f3..3d325881b 100644 --- a/packages/nft/package.json +++ b/packages/nft/package.json @@ -3,17 +3,20 @@ "type": "module", "exports": "./build/src/index.js", "scripts": { - "codegen": "yarn graphql-codegen --config graphql.config.cjs --project statemine && yarn graphql-codegen --config graphql.config.cjs --project rmrk2 && yarn graphql-codegen --config graphql.config.cjs --project unique", + "codegen": "sh scripts/codegen.sh", "dev": "tsc --build --watch", "build": "rm -rf build && yarn tsc --build", "check-types": "yarn tsc --build" }, "dependencies": { + "@thi.ng/iterators": "^6.1.50", "graphql": "^16.6.0", "graphql-request": "^5.2.0", "multiformats": "^11.0.2" }, "devDependencies": { + "@727-ventures/typechain-polkadot": "^1.1.0", + "@727-ventures/typechain-types": "^1.1.0", "@acala-network/types": "^5.1.1", "@graphql-codegen/cli": "^3.2.2", "@polkadot/api": "^10.9.1", diff --git a/packages/nft/scripts/codegen.sh b/packages/nft/scripts/codegen.sh new file mode 100644 index 000000000..4097e0603 --- /dev/null +++ b/packages/nft/scripts/codegen.sh @@ -0,0 +1,14 @@ +rm -rf generated + +yarn graphql-codegen --config graphql.config.cjs --project statemine & +yarn graphql-codegen --config graphql.config.cjs --project rmrk2 & +yarn graphql-codegen --config graphql.config.cjs --project unique & +npx @727-ventures/typechain-polkadot --in src/generators/ink/contracts --out generated/ink + +wait + +yarn prettier --write generated + +find generated/ink -type f -name "*.ts" -exec sed -i '' -e "s/from '\.\(.*\)'/from '\.\1.js'/" {} + +find generated/ink -type f -name "*.ts" -exec sed -i '' -e "s/\.json\.js/\.json/" {} + + diff --git a/packages/nft/src/generators/evm/index.ts b/packages/nft/src/generators/evm/index.ts index a84657ae5..2e4b4a4f0 100644 --- a/packages/nft/src/generators/evm/index.ts +++ b/packages/nft/src/generators/evm/index.ts @@ -1,11 +1,10 @@ +/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ +import { range } from '@thi.ng/iterators' import { createPublicClient, http, isAddress as isEvmAddress } from 'viem' import { type CreateNftAsyncGenerator, type Nft } from '../../types.js' import { erc721Abi } from './abi.js' import chains from './chains.js' -const range = (start: number, stop: number, step = 1) => - Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + i * step) - export const createEvmNftAsyncGenerator: CreateNftAsyncGenerator> = async function* ( address, { batchSize } @@ -28,6 +27,7 @@ export const createEvmNftAsyncGenerator: CreateNftAsyncGenerator ({ + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion erc721Address: Object.values(config.erc721ContractAddress)[index]!, balance, })) @@ -49,10 +49,10 @@ export const createEvmNftAsyncGenerator: CreateNftAsyncGenerator ({ + contracts: Array.from(range(start, end)).map(index => ({ ...wagmiContract, functionName: 'tokenOfOwnerByIndex', args: [address, BigInt(index)], @@ -72,8 +72,11 @@ export const createEvmNftAsyncGenerator: CreateNftAsyncGenerator }> = await Promise.all( - tokenUris.map(uri => - fetch(uri.replace('ipfs://', 'https://talisman.mypinata.cloud/ipfs/')).then(x => x.json()) + tokenUris.map( + async uri => + await fetch(uri.replace('ipfs://', 'https://talisman.mypinata.cloud/ipfs/')).then( + async x => await x.json() + ) ) ) @@ -91,7 +94,7 @@ export const createEvmNftAsyncGenerator: CreateNftAsyncGenerator [x.trait_type, x.value])), @@ -104,7 +107,7 @@ export const createEvmNftAsyncGenerator: CreateNftAsyncGenerator> = async function* ( + address, + options +) { + const collectionsResponse = await fetch('https://a0-api.artzero.io/getCollectionsByVolume', { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: 'limit=100&offset=0&sort=-1&isActive=true', + method: 'POST', + }) + + const collections: { ret: Array<{ nftContractAddress: string }> } = await collectionsResponse.json() + + const api = await ApiPromise.create({ provider: new WsProvider('wss://ws.azero.dev') }) + + try { + yield* createPsp34NftsAsyncGenerator({ + chainId: 'azero', + api, + contractAddresses: collections.ret.map(x => x.nftContractAddress), + getExternalLink: contractAddress => [ + { name: 'ArtZero', url: `https://a0.artzero.io/collection/${contractAddress}` }, + ], + })(address, options) + } finally { + await api.disconnect() + } +} + +export const createParasNftsAsyncGenerator: CreateNftAsyncGenerator> = async function* ( + address, + options +) { + const collectionsResponse = await fetch( + 'https://api.paras.id/marketplace/collections?chain=astar&is_verified=true&__skip=0&__limit=100', + { + method: 'GET', + } + ) + + const collections: { data: { results: Array<{ collection_id: string }> } } = await collectionsResponse.json() + + const api = await ApiPromise.create({ provider: new WsProvider('wss://rpc.astar.network') }) + + try { + yield* createPsp34NftsAsyncGenerator({ + chainId: 'astar', + api, + contractAddresses: collections.data.results.map(x => x.collection_id), + getExternalLink: contractAddress => [ + { name: 'Paras', url: `https://astar.paras.id/collection/${contractAddress}` }, + ], + })(address, options) + } finally { + await api.disconnect() + } +} diff --git a/packages/nft/src/generators/ink/contracts/psp34.contract b/packages/nft/src/generators/ink/contracts/psp34.contract new file mode 100644 index 000000000..3c5cd3419 --- /dev/null +++ b/packages/nft/src/generators/ink/contracts/psp34.contract @@ -0,0 +1 @@ +{"source":{"hash":"0xa47d10e05f992a227fcbcd6b42153497a322c615e1fb7b9f3d9a3b39d17b1fff","language":"ink! 4.2.1","compiler":"rustc 1.69.0-nightly","wasm":"0x0061736d01000000016e1160037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060057f7f7f7f7f0060047f7f7f7f0060017f017f60047f7f7f7f017f60000060057f7f7f7f7f017f60017f017e60067f7f7f7f7f7f0060037f7e7e006000017f60037e7e7f0060077f7f7f7f7f7f7f017f02bf010a057365616c310b6765745f73746f726167650008057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300663616c6c65720002057365616c3007616464726573730002057365616c300d64656275675f6d6573736167650001057365616c320b7365745f73746f726167650008057365616c310d636c6561725f73746f726167650001057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100395019301000004020200030201020202020303070202040402020405020203040e010100020204070305040107020203030203090204020203030f0409020309020100000301010602040903010401040b0503060a010a06080105030c02070601010303050001010005060806010100010101070310010505000a01010101020203020d02020d030202020302020200020101060c000604050170011c1c0608017f01418080040b0711020463616c6c0041066465706c6f7900440928010041010b1b118201666530518301536c7b8001810196012b970152484a4b8201556d72737475760afcf40193012b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b080020004101100c0b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b2002200341d8be041060000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120100e45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b6201047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206109801200120022003280208200328020c41f4c80410692003200220042006109801200020032903003702000b200341106a240020050bd50101017f230041d0006b22032400200320023602042003200136020020034184c204360224200341d4c00436022020032003360228200341086a200341206a101020032d00084107460440200320032d00093a002f2003413c6a4101360200200341c4006a4101360200200341fcc004360238200341003602302003410136024c2003200341c8006a36024020032003412f6a360248200341306a41f4c1041012000b20002003290308370300200041106a200341186a290300370300200041086a200341106a290300370300200341d0006a24000beb0201057f230041406a2202240020024100360218200242808001370224200241bec9043602202001280200200141046a280200200241206a2205108c0120012802082005108f0120022002290320370310200241086a200241106a20022802281016200228020c2103200228020820022802102101200220022802142206360220200320012005100021032002280220220420064d04400240024002400240410c20032003410c4f1b0e0402010100010b200041063a00000c020b2002412c6a4101360200200241346a4100360200200241f8c50436022820024180c40436023020024100360220200241206a4180c6041012000b2002200436023c20022001360238200241206a200241386a101e20022d00202201410647044020002002290021370001200041106a200241306a290000370000200041096a200241296a290000370000200020013a00000c010b200041073b01000b200241406b24000f0b2004200641e4c4041017000b900301017f230041106b22022400027f024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b2002200041016a36020c200141a7c00441062002410c6a4102107f0c0c0b2001280200419ac004410d200128020428020c1100000c0b0b2001280200418cc004410e200128020428020c1100000c0a0b20012802004181c004410b200128020428020c1100000c090b200128020041e7bf04411a200128020428020c1100000c080b200128020041d9bf04410e200128020428020c1100000c070b200128020041c9bf044110200128020428020c1100000c060b200128020041bdbf04410c200128020428020c1100000c050b200128020041b2bf04410b200128020428020c1100000c040b200128020041abbf044107200128020428020c1100000c030b2001280200419cbf04410f200128020428020c1100000c020b2001280200418bbf044111200128020428020c1100000c010b200128020041f8be044113200128020428020c1100000b200241106a24000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241908d0436020c20024180c404360208200241086a1054000b8a0401057f230041f0006b2202240020024100360238200242808001370244200241bec90436024041b48ca0e601200241406b2206101420012006101520022002290340370330200241086a200241306a20022802481016200228020c21042002280208200228023021012002200228023422033602402004200120061000210402402002280240220520034d0440027f024002400240410c20042004410c4f1b0e0402000001000b200241cc006a4101360200200241d4006a4100360200200241f8c50436024820024180c40436025020024100360240200241406b4180c6041012000b4100210341000c010b2002200536026c20022001360268200241406b200241e8006a100d20022d00400d02200241186a200241ca006a290100370300200241206a200241d2006a290100370300200241276a200241d9006a2900003700002002200229014237031020022d0041210341010b2101200020033a0001200020013a0000200020022903103700022000410a6a200241186a290300370000200041126a200241206a290300370000200041196a200241276a290000370000200241f0006a24000f0b2005200341e4c4041017000b200241003a0030200241cc006a4101360200200241d4006a4101360200200241fcc00436024820024100360240200241013602142002200241106a3602502002200241306a360210200241406b41f4c1041012000b2601017f230041106b220224002002200036020c20012002410c6a4104103e200241106a24000bc90101017f230041106b22022400024002400240024002400240024020002d000041016b0e050102030405000b20014100100c200220002d00013a00072001200241076a4101103e0c050b20014101100c20002f010220011084010c040b20014102100c2000280204200110140c030b20014103100c200220002903083703082001200241086a4108103e0c020b20014104100c2000290308200041106a2903002001103f0c010b20014105100c200041086a2802002000410c6a280200200110230b200241106a24000b4501017f2002200128020422034b0440418cbd04412341e8be041037000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0f0020002001200241d89404109b010bb70201047f230041306b220124002001410036021020014280800137021c200141bec90436021841ebdcfef107200141186a22021014200028020020021019200028020420021019024020002802082200280200450440200141186a4100100c0c010b200141186a22024101100c2000280200200210150b200120012903183703082001200141086a20012802201016200128020421022001280200200128020821042001200128020c220036021820022004200141186a100021022001280218220320004d0440027f024002400240410c20022002410c4f1b0e0402000001000b200141246a41013602002001412c6a4100360200200141f8c50436022020014180c40436022820014100360218200141186a4180c6041012000b41000c010b41010b200141306a24000f0b2003200041e4c4041017000b0a00200120004120103e0bac0102047f017e230041306b2202240020024100360218200242808001370224200241bec90436022041b48ca0e601200241206a2203101420002003101520022002290320370310200241086a200241106a220420022802281016200228020c2100200228020820022903102106200241003602282002200637032020012003101920022002290320370310200220042002280228101620002002280200200228020410061a200241306a24000ba60101027f230041306b2201240020014100360218200142808001370224200141bec90436022041ebdcfef107200141206a22021014200028020020021019200028020420021019024020002802082200280200450440200141206a4100100c0c010b200141206a22024101100c2000280200200210150b20012001290320370310200141086a200141106a200128022810162001280208200128020c10071a200141306a24000b6a01027f230041306b2201240020014100360218200142808001370224200141bec90436022041b48ca0e601200141206a2202101420002002101520012001290320370310200141086a200141106a200128022810162001280208200128020c10071a200141306a24000bc70101017f23004180016b22022400200241406b2001100d024020022d0040450440200241e8006a2001101e20022d00684106470440200241386a200241f8006a290300370300200241306a200241f0006a290300370300200241106a200241c9006a290000370300200241186a200241d1006a290000370300200241206a200241d9006a29000037030020022002290368370328200220022900413703082000200241086a413810091a0c020b200041063a00200c010b200041063a00200b20024180016a24000bcc0302017f027e230041e0006b22022400200241286a200110320240024002400240024002400240024020022d002841017145044020022d00290e06010203040507060b200041063a00000c070b20022001103220022d000041017145044020022d00012101200041003a0000200020013a00010c070b200041063a00000c060b200241003b01302001200241306a4102100e450440200020022f01303b0102200041013a00000c060b200041063a00000c050b200241086a20011093012002280208450440200228020c2101200041023a0000200020013602040c050b200041063a00000c040b200242003703302001200241306a4108100e45044020002002290330370308200041033a00000c040b200041063a00000c030b200241106a200110422002290310a7450440200241206a290300210320022903182104200041043a000020002004370308200041106a20033703000c030b200041063a00000c020b200041063a00000c010b200241d0006a20011036200228025404402002413b6a200241d8006a28020036000020022002290350370033200041053a000020002002290030370001200041086a200241376a2900003700000c010b200041063a00000b200241e0006a24000ba70201037f230041e0006b2201240020014180800136023041bec904200141306a2202100420014180800136025c200141bec9043602582002200141d8006a100d2001027f20012d0030450440200141216a200141c9006a290000370000200141196a200141c1006a290000370000200141116a200141396a2900003700002001200129003137000941000c010b200141003a000941010b3a0008200141306a200141086a41a08004413741d88004102020014120102120012802002103200128020422022001290330370000200241186a200141c8006a290300370000200241106a200141406b290300370000200241086a200141386a2903003700002000410c6a4120360200200041086a200236020020002003360204200041053a0000200141e0006a24000b7401017f230041106b2205240020012d000045044020002001290001370000200041186a200141196a290000370000200041106a200141116a290000370000200041086a200141096a290000370000200541106a24000f0b200520012d00013a000f200220032005410f6a419080042004102e000b5b01027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20012001417f73411f761050200228020822030d012001104e000b104f000b2000200336020420002001360200200241106a24000b7500024002400240024002400240200028020041016b0e050102030405000b20014100100c200041086a2802002000410c6a280200200110230f0b20014101100c0f0b20014102100c0f0b20014103100c0f0b20014104100c0f0b20014105100c200041086a2802002000410c6a280200200110230b5f0002402001413f4d044020022001410274100c0c010b200141ffff004d0440200141027441017220021084010c010b200141ffffffff034d04402001410274410272200210140c010b20024103100c2001200210140b200220002001103e0bb60101027f230041e0006b2201240020014180800136023041bec904200141306a2202100320014180800136025c200141bec9043602582002200141d8006a100d2001027f20012d0030450440200141216a200141c9006a290000370000200141196a200141c1006a290000370000200141116a200141396a2900003700002001200129003137000941000c010b200141003a000941010b3a00082000200141086a41e8800441c10041ac81041020200141e0006a24000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b0b002000200110274101730b0b00200020014120100a450b5b01017f230041106b22032400200341fcc3043602082003200136020420032000360200027f4101200310180d001a41002002280200450d001a200320023602082003200136020420032000360200200310180b200341106a24000bae0302057f027e230041e0006b2202240020022001360230200241fcc30436022c200241d4c0043602282002410036024020024280800137024c200241bec904360248200241286a200241c8006a2206108e0120022002290348370338200241206a200241386a20022802501016200228022421032002280220200228023821012002200228023c22053602482003200120061000210302402002280248220420054d0440027e024002400240410c20032003410c4f1b0e0401000002000b200241d4006a4101360200200241dc006a4100360200200241f8c50436025020024180c40436025820024100360248200241c8006a4180c6041012000b2002200436024c20022001360248200241086a200241c8006a10422002290308a70d0320022903102107200241186a2903000c010b42000b21082000200737030020002008370308200241e0006a24000f0b2004200541e4c4041017000b200241003a0037200241d4006a4101360200200241dc006a4101360200200241fcc004360250200241003602482002410136023c2002200241386a3602582002200241376a360238200241c8006a41f4c1041012000ba905010a7f230041106b220624002006200110360240200628020422030440200628020021090240024020062802082202450d00200241076b22014100200120024d1b2108200341036a417c7120036b220a417f46210b41002101034002400240024002400240200120036a2d00002205411874411875220741004e0440200b200a20016b410371720d020240200120084f0d000340200120036a220541046a280200200528020072418081828478710d012001200141086a22014b0d0320012008490d000b0b200120024f0d0720012002200120024b1b21050340200120036a2c00004100480d062005200141016a2201470d000b0c070b02400240200541ec9d046a2d000041026b0e03040100090b200141016a220420024f0d08200320046a2c000021040240024002400240200541f0016b0e050100000002000b2007410f6a41ff017141024b0d0b20044140480d020c0b0b200441f0006a41ff01714130490d010c0a0b2004418f7f4a0d090b200141026a220520024f0d08200320056a2c000041bf7f4a0d08200141036a220120024f0d08200120036a2c000041bf7f4c0d040c080b200141016a220420024f0d07200320046a2c00002104024002400240200541e001470440200541ed01460d012007411f6a41ff0171410c490d022007417e71416e470d0b20044140480d030c0b0b200441607141a07f460d020c0a0b200441a07f480d010c090b200441bf7f4a0d080b200141026a220120024f0d07200120036a2c000041bf7f4c0d030c070b41a08904411c41dc9d041037000b200141016a21010c020b200141016a220120024f0d04200120036a2c000041bf7f4a0d040b200141016a21010b20012002490d000b0b2000200236020820002003360204200020093602000c020b200041003602040c010b200041003602040b200641106a24000b080020002802001a0b1b002000418180014f044020004180800141bc81041017000b20000b6300024020012d00004106460440200041063a0000200020022902003702042000410c6a200241086a2902003702000c010b20002001290300370300200041106a200141106a290300370300200041086a200141086a29030037030020022802001a0b0b860101017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a41023602002005412c6a41023602002005413c6a4103360200200541c48d0436022020054100360218200541043602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041012000b5201017f230041206b220124002001410c6a4101360200200141146a4101360200200141c4ba04360208200141003602002001410536021c200120003602182001200141186a360210200141f081041012000b910101017f230041306b22022400200241146a41013602002002411c6a4101360200200241c4ba043602102002410036020820024104360224200220002d00004102742200418cc9046a28020036022c2002200041a0c9046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a106a200241306a24000b4201027f230041106b22012400200141086a2000103220012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0b3f01027f230041106b22022400200241003a000f200020012002410f6a4101100e2201047f41000520022d000f0b3a0001200020013a0000200241106a24000b7501017f230041306b22022400200241086a200110132000027f20022d00084504402000410436020441010c010b20002002290009370001200041196a200241216a290000370000200041116a200241196a290000370000200041096a200241116a29000037000041000b3a0000200241306a24000b4601017f230041306b22032400200341086a20021013024020032d00080440200041033602000c010b200120024101103520022001101a200041063602000b200341306a24000b3301017f230041106b220324002003200036020c2003410c6a20011095012002044041fcc30420011095010b200341106a24000be40201037f230041306b22022400200241186a200110320240024020022d00184101710d00024020022d0019220341037122044103470440024002400240200441016b0e020102000b200341fc017141027621030c030b200220033a0025200241013a002420022001360220200241003b012c200241206a2002412c6a41021094010d0320022f012c220341ff014d0d03200341027621030c020b200220033a0025200241013a0024200220013602202002410036022c200241206a2002412c6a41041094010d02200228022c220341808004490d02200341027621030c010b200341044f0d01200241106a200110930120022802100d0120022802142203418080808004490d010b024020012802042003490d00200241086a20031021200228020821042001200228020c22012003100e0d002000200336020820002001360204200020043602000c020b200041003602040c010b200041003602040b200241306a24000b5001017f230041206b220324002003410c6a4101360200200341146a410036020020034180c404360210200341003602002003200136021c200320003602182003200341186a360208200320021012000b3501017f230041106b22002400200042808001370204200041bec90436020020004101100c2000100b41012000280208102c103b000b6901027f230041106b22022400200242808001370204200241bec904360200024020012802002203410747044020024100100c2003410646044020024100100c0c020b20024101100c2001200210220c010b20024101100c2002100b0b20002002280208102c103b000bb70102057f017e230041306b2201240020014100360218200142808001370224200141bec9043602204100200141206a2202101420012001290320370310200141086a200141106a220320012802281016200128020c21042001280208200129031021062001410036022820012006370320200220002d0000100c200220002d0001100c200220002d0002100c20012001290320370310200120032001280228101620042001280200200128020410061a200141306a24000b0d00200041bec90420011008000b8b0101027f230041206b2202240020022001103241072103024020022d00004101710d00410621030240024020022d00010e020200010b200241086a2001101e20022d000822034106460d0020002002290009370001200041106a200241186a290000370000200041096a200241116a2900003700000c010b410721030b200020033a0000200241206a24000bce0102037f017e230041306b2203240020034100360218200342808001370224200341bec9043602204182c7b4d979200341206a22041014200020041015200141046a280200200141086a2802002004102320032003290320370310200341086a200341106a220520032802281016200328020c21002003280208200329031021062003410036022820032006370320200241046a280200200241086a2802002004102320032003290320370310200320052003280228101620002003280200200328020410061a200341306a24000b5c01037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a200320046b2001200241c8be041069200020033602080f0b41f0bc04411c41a8be041037000b2003200541b8be041017000b2a01017f230041106b220324002003200137030820032000370300200220034110103e200341106a24000b2c01017f230041106b22012400200120003b0108200120004110763a000a200141086a103a200141106a24000b9135020f7f087e23004190036b22002400024002400240102541ff017141054604402000418080013602a80141bec904200041a8016a100220002802a8012201418180014f0d01200020013602cc02200041bec9043602c802200041003602a801200041c8026a200041a8016a4104100e0d0220002802a801220441187621012004411076210220044108762103024002400240024002400240024002400240200441ff0171220441e2006b0e020103000b20044111460d010240024002402004411947044020044131460d012004413b460d08200441c700460d02200441ec00460d07200441cd01460d03200441f101460d09200441ff0147200341ff017141a2014772200241ff017141fa0047200141df004772720d0e410021020c0f0b200341ff0171413247200241ff017141a8014772200141b00147720d0d200041a8016a200041c8026a100d20002d00a8010d0d20004180026a200041c8026a103c20002d0080024107460d0d200041306a200041c8026a103220002d00304101710d0d20002d0031220841024f0d0d20004188026a290300220f4238862000290380022212420888842110200f4208882114200041b3016a350000200041b7016a330000422086842113200041c1016a2900002111200041b9016a290000210f20002900ab012115200029039002211620002d00aa01210520002d00a90121062012a72107410121020c0e0b200341ff0171412847200241ff017141d60147722001411b47720d0c200041a8016a200041c8026a100d20002d00a8010d0c20004180026a200041c8026a101e20002d00800222074106460d0c2000418f026a310000210f2000418d026a330000211120004189026a35000020002900810221102000290390022116200041f0026a200041c8026a103620002802f402220b450d0c2011200f42108684422086842114200020002f00f9023b01a8022000200041fb026a2d00003a00aa0220002f00f10220002d00f30241107472210a200041b3016a350000200041b7016a330000422086842113200041b9016a290000210f200041c1016a290000211120002900ab01211520002d00f802210c20002d00f002210820002d00a901210620002d00aa012105410221020c0d0b200341ff017141900147200241ff017141f5014772200141da0047720d0b20004180026a200041c8026a100d20002d0080020d0b200041a8016a200041c8026a100d20002d00a8010d0b200041f0026a200041c8026a103c20002d00f002220c4107460d0b200041b7026a20004180036a290000370000200041b0026a200041f9026a290000370300200020002900f1023703a802200041b1016a290000220f42388620002900a9012212420888842110200f42088821142000418b026a3500002000418f026a330000422086842113200041c2016a2f0100200041c4016a2d000041107472210a20004191026a290000210f20004199026a2900002111200041b9016a2900002116200041c1016a2d00002108200041c5016a280000210b200029008302211520002d008102210620002d00820221052012a72107410321020c0c0b200341ff017122034103460d07200341e70147200241ff017141e5014772200141df0047720d0a200041a8016a200041c8026a100d20002d00a8010d0a410421022000418c016a20002f01ae013b0100200020002801aa0136028801200041b8016a2903002210423086200041b0016a2903002212421088842115201042108821132012420888a72105200041c0016a290300210f200041c8016a310000211120002d00a901210d2012a721060c0b0b200341ff017141840147200241ff017141134772200141fe0147720d09410521020c0a0b200341ff017141e80047200241ff017141e2004772200141cd0047720d08200041a8016a200041c8026a101e4106210220002d00a80122064106460d08200041b2016a350100200041b6016a33010042208684211320002901aa01211520002903b801210f20002d00a90121050c090b200341ff017141c90147200241ff01714187014772200141fa0047720d07200041a8016a200041c8026a101d20002d00c80122074106460d07200041b2016a350100200041b6016a330100422086842113200041d1016a350000200041d5016a330000200041d7016a3100004210868442208684211420002900c901211020002901aa01211520002903d801211620002903c001211120002903b801210f20002d00a901210520002d00a8012106410721020c080b200341ff017141c10047200241ff017141f20147720d06200141ec01460d020c060b200341ff017141cf0147200241ff017141b50147722001411147720d05200041a8016a200041c8026a100d20002d00a8010d05200041d0006a200041c8026a10422000290350a70d05200041e0006a290300220f4238862000290358221642088884211041092102200041b1016a290000221142308620002900a9012212421088842115200f4208882114201142108821132012420888a72105200041c1016a2900002111200041b9016a290000210f2012a721062016a721070c060b200341ff0171419d0147200241ff017141c8004772200141d10147720d04200041a8016a200041c8026a101e20002d00a80122064106460d04200041b6016a3301002111200041b2016a35010020002901aa01211520002903b801210f20002d00a901210520004180026a200041c8026a102a200028028402450d042011422086842113410b21022000330089022000418b026a31000042108684211020002d008802210720002903800221110c050b200041a8016a200041c8026a101d20002d00c80122074106460d03200041b2016a350100200041b6016a330100422086842113200041d1016a350000200041d5016a330000200041d7016a3100004210868442208684211420002900c901211020002901aa01211520002903d801211620002903c001211120002903b801210f20002d00a901210520002d00a8012106410821020c040b200241ff017141c00047200141d00147720d02200041386a200041c8026a10422000290338a70d02200041c8006a290300221042308620002903402212421088842115201042108821132012420888a721052012a72106410a21020c030b200041043a00a801200041a8016a102f000b20014180800141e4c4041017000b1038000b20004184016a2000418c016a2f010022013b0100200041f7006a2203200041b7026a290000370000200041f0006a2204200041b0026a2903003703002000200028028801220936028001200020002903a8022212370368200041a4016a20013b010020004190016a200429030037030020004197016a2003290000370000200020093602a001200020123703880120004100360288022000428080013702ac01200041bec9043602a8014100200041a8016a22041014200020002903a80137038002200041286a20004180026a20002802b0011016200028022c210920002802282000280280022103200020002802840222013602a801200920032004100021040240024002400240027f024020002802a801220920014d0440410221010240024002400240410c20042004410c4f1b0e0400010103010b200020093602ac01200020033602a801200041a8016a103141ff017122014102460d01200041a8016a103141ff017122034102460d01200041a8016a103141ff017122044102460d01200441107420034101714108747220017221010c020b200041b4016a4101360200200041bc016a4100360200200041f8c5043602b00120004180c4043602b801200041003602a801200041a8016a4180c6041012000b410321010b024002400240200141ff017141026b0e020100020b200041b4016a4101360200200041bc016a4100360200200041a882043602b0010c050b200041b4016a4101360200200041bc016a4100360200200041c882043602b0010c040b2007ad42ff0183201042088684211220134210862015423088842113201442088620104238888421142006ad42ff01832005ad42ff018342088620154210868484211002400240024002400240027f024002400240024002400240024002400240024002400240200241016b0e0b000102030d040509060708110b200020103703a802200020113703c0022000200f3703b802200020133703b002200020143703d002200020123703c802200020163703d802200041f0026a1024200741ff01714106470440200041a8016a200041c8026a101320002d00a801450440410421020c140b2000200041c1016a2900003700e5022000200041bc016a2902003703e00220004198026a20002900e502370000200020002d00ab013a008202200020002f00a9013b018002200020002903e0023700930220002902ac01210f2000200041b4016a29020037008b022000200f37008302200804404101210220004180026a200041a8026a10270d140b20004180026a200041f0026a102604404102210220004180026a200041f0026a41fcc3041028450d140b20004188036a20004198026a29030037030020004180036a20004190026a290300370300200041f8026a20004188026a29030037030020002000290380023703f0020b024020084504402000200041c8026a4100200741ff01714106471b36028002200020004180026a3602b0012000200041a8026a3602ac012000200041f0026a3602a801200041a8016a101b20002802cc021a0c010b20004100360288022000428080013702ac01200041bec9043602a80141ebdcfef107200041a8016a22021014200041f0026a20021019200041a8026a200210190240200741ff01714106460440200041a8016a4100100c0c010b200041a8016a22024101100c200041c8026a200210150b200020002903a80137038002200041106a20004180026a220220002802b0011016200028021421032000280210200041086a20024100101620032000280208200028020c10061a0b200110404106210241000c130b200020133703f802200020103703f00220002011370388032000200f37038003200020143703b002200020123703a802200020163703b802200041a8016a200041a8026a1033027f20002d00a80145044020004198026a200041c1016a2900003700002000418f026a200041b8016a280200360000200020002d00ab013a008202200020002f00a9013b0180022000200041bc016a29020037009302200020002802ac01360083022000200041b0016a29030037008702200041a8016a2202102420004180026a20021026450d0e2000200041a8026a3602c80220004180026a200041a8016a200041c8026a10280d0e41020c010b200041e8026a200041b8016a2802003602002000200041b0016a2903003703e00220002802ac010b210220002d00a8021a4101210520024106460d0d0c0e0b200041d0016a20143703002000200a3b00e101200041e3016a200a4110763a0000200041f1016a20004190016a290300370000200041f8016a20004197016a290000370000200020123703c801200020103703a8012000200c3a00e8012000200b3602e401200020083a00e001200020163703d801200020113703c0012000200f3703b80120002000290388013700e901200020133703b001230041c0016b22012400200141086a200041a8016a220241d80010091a200141f8006a200241186a290000370300200141f0006a200241106a290000370300200141e8006a200241086a2900003703002001200229000037036020014198016a200141406b29030037030020014190016a200141386a29030037030020014188016a200141306a2903003703002001200129032837038001200141b0016a200141d8006a290300370300200141a8016a200141d0006a29030037030020012001290348220f3703a0012001200141a0016a4100200fa741ff01714106471b3602bc01200141e0006a20014180016a200141bc016a1028210020012d00a0011a200141c0016a2400230041106b22012400200142808001370204200141bec904360200230041106b2202240020014100100c200220003a000f20012002410f6a4101103e200241106a24000c150b200041b7016a2013370000200020103700af012000200d3a00a801200020002802a0013600a901200020113c00c7012000200f3700bf012000200041a4016a2f01003b00ad01230041406a22012400200141306a200041a8016a220241186a290000370300200141286a200241106a290000370300200141206a200241086a290000370300200120022900003703182001200141186a36023c200141086a2001413c6a10292001280208200141406b2400230041106b22012400200142808001370204200141bec90436020020014100100c200110140c140b200020133703b001200020103703a8012000200f3703b801230041206b22022400200241186a200041a8016a220141106a290300370300200241106a200141086a2903003703002002200129030037030820004180026a2203200241086a101320022d00081a200241206a240020014101722003412110091a200041003a00a801230041106b22022400200242808001370204200241bec904360200024020012d000045044020024100100c20012d000145044020024100100c0c020b20024101100c200141026a200210190c010b20024101100c2002100b0b41002002280208102c103b000b2000201337038802200020103703800220002011370398022000200f37039002200020143703f802200020123703f0022000201637038003200041a8016a200041f0026a103320002d00a8010d04200041f0026a2202101c20004180026a2002410110430c050b200020133703b001200020103703a801200020113703c0012000200f3703b801200020143703d002200020123703c8022000200041a8016a22013602e00220004180026a2202200041e0026a200041c8026a100f200041043602a802200041f0026a2002200041a8026a102d20002d00f0022102200041b8016a20004180036a290300370300200041b0016a200041f8026a290300370300200020002903f0023703a8010c0f0b200020133703b002200020103703a802200041a8016a220141fcc304200041a8026a100f200041043602f00220004180026a2001200041f0026a102d20002d0080022102200041b8016a20004190026a290300370300200041b0016a20004188026a29030037030020002000290380023703a8010c0e0b200020133703b001200020103703a801200020123703c801200020113703c0012000200f3703b80120004180026a2107230041d0006b22032400200041a8016a220222012802202105200128021c200341186a200141106a290300370300200341106a200141086a290300370300200320012903003703082003410036022820034280800137023c200341bec9043602384182c7b4d979200341386a22061014200341086a20061015200520061023200320032903383703202003200341206a20032802401016200328020421042003280200200328022021012003200328022422053602382004200120061000210602402003280238220420054d04400240024002400240410c20062006410c4f1b0e0401000002000b200341c4006a4101360200200341cc006a4100360200200341f8c50436024020034180c40436024820034100360238200341386a4180c6041012000b2003200436023420032001360230200341386a200341306a102a200328023c2206044020032802402101200328023821050c020b200341003a0030200341c4006a4101360200200341cc006a4101360200200341fcc00436024020034100360238200341013602242003200341206a3602482003200341306a360220200341386a41f4c1041012000b410021060b20072001360208200720063602042007200536020020032d00081a200341d0006a24000c010b2004200541e4c4041017000b200041b4016a20004188026a28020036020020002000290380023702ac01200041003602a801230041106b22002400200042808001370204200041bec90436020002402002220128020045044020004100100c200141086a280200220245044020004100100c0c020b20004101100c20022001410c6a280200200010230c010b20004101100c2000100b0b41002000280208102c103b000b200020133703b001200020103703a801200020113703c0012000200f3703b801200020143703880220002012370380022000201637039002200041f0026a200041a8016a20004180026a103420002802f0024106472202450440200110400b200041b0016a200041f8026a290300370300200020002903f0023703a8010c0d0b200041b0026a200041b8016a2802003602002000200041b0016a2903003703a802410120002802ac0122054106470d011a0b200110404106210541000b2102200041b4016a200041b0026a280200360200200020002903a8023702ac01200020053602a8010c0a0b230041106b22012400200141fcc30410292001290300210f200041186a2202200141086a2903003703082002200f370300200141106a24002000290318200041206a290300230041106b22012400200142808001370204200141bec90436020020014100100c2001103f0c0a0b2000200041e0026a3602d0022000200041a8016a3602cc02200020004180026a22033602c8022000200041a8026a22023602e002200041c8026a101b20032002410010432002101c200041f0026a220320024100103520022003101a0b2001104041062102410021050b200041b4016a200041e8026a280200360200200020002903e0023702ac01200020023602a8012005200041a8016a1039000b20004180026a101f200041b8016a20004190026a290300370300200041b0016a20004188026a29030037030020002000290380023703a801230041106b22012400200142808001370204200141bec9043602000240200041a8016a22022d0000410647044020014100100c2002200110150c010b20014101100c2001100b0b0c060b2009200141e4c4041017000b41010b200020023602a801200041a8016a1039000b20004180c4043602b801200041003602a801200041a8016a41f081041012000b2002410646230041106b22022400200242808001370204200241bec904360200024020012d00002203410747044020024100100c2003410647044020024100100c2001200210150c020b20024101100c200141046a200210220c010b20024101100c2002100b0b2002280208102c103b000b2002200041a8016a1039000b41002001280208102c103b000b6402027f037e230041106b22022400200241086a22034200370300200242003703000240200120024110100e45044020032903002105200229030021060c010b420121040b2000200637030820002004370300200041106a2005370300200241106a24000b3301017f230041106b220324002003200036020c2003410c6a20011085012002044041fcc30420011085010b200341106a24000bd80601057f23004180016b2200240002400240102541ff01712201410546044020004180800136023841bec904200041386a100220002802382201418180014f0d012000200136023c200041bec904360238200041003602580240200041386a200041d8006a4104100e0d002000280258419bddf6f405470d00200041386a2201102420004180023b0158200041286a2001200041d8006a103420002802284106470d03200041d8006a101f024002400240024002400240024020002d005841016b0e050102030405000b200020002d00593a0039200041003a00380c050b200020002f015a3b013a200041013a00380c040b2000200028025c36023c200041023a00380c030b20002000290360370340200041033a00380c020b200041c8006a200041e8006a29030037030020002000290360370340200041043a00380c010b200041e0006a2802002102200041206a200041e4006a28020022011045200041406b200028022422033602002000200028022036023c20032002200110091a200041c4006a2001360200200041053a00380b200041186a410410452000200028021c220136027420002000280218360270200141eec2b5ab0636000020004104360278200041106a4107104520002000280214220136022c20002000280210360228200141036a41eb8204280000360000200141e8820428000036000020004107360230200041386a2201200041f0006a2203200041286a2204103d200041c8006a200041e8006a290300370300200041406b200041e0006a29030037030020002000290358370338200041086a410610452000200028020c220236027420002000280208360270200241046a41f382042f00003b0000200241ef82042800003600002000410636027820004104104520002000280204220236022c20002000280200360228200241cda0cd820536000020004104360230200120032004103d200041003a003a200041003b01382001103a230041106b22002400200042808001370204200041bec90436020020004100100c20004100100c41002000280208102c103b000b1038000b200020013a0038200041386a102f000b20014180800141e4c4041017000b200041406b200041306a2903003703002000200029032837033841d082044108200041386a4180800441d88204102e000b3501017f230041106b22022400200241086a20011021200228020c21012000200228020836020020002001360204200241106a24000b0d002000200141f88204109a010bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1100000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110100450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1100000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a106720032003290310370320200341086a2005200141046a106720032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110100450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1100000d010b41000c010b41010b200341406b24000b0f00200028020020012002104941000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a200020032002104c2004280208200428020c104d200028020821030b200028020420036a2001200210091a2003200220036a22014b044041908304411c419089041037000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10490c020b230041106b22042400200441086a200020034101104c2004280208200428020c104d200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41908304411c418089041037000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1046200241206a24000bb00401067f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22062002490d0141082006200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d0120062003410110502006280204210220062802000c040b0c040b20072802042209450440200641086a200341011050200628020c210220062802080c030b20032102410041b4c904280200220520036a22082005490d021a2007280200210741b8c9042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241b8c9042002360200200321024100200320056a22082005490d031a0b41b4c904200836020041002005450d021a20052007200910090c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41b08304412141dc84041037000b1f00024020014181808080784704402001450d012000104e000b0f0b104f000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141b08604360218200141003602102001410636022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041c086043602142000200141106a360210200041908d0436020c20004180c404360208200041086a1054000b4601017f230041206b22002400200041146a41013602002000411c6a410036020020004180850436021020004180c40436021820004100360208200041086a418885041012000bc40101037f024002402001200120026a41016b410020026b7122054d044041b4c904280200220220056a22042002490d0241b8c9042802002004490440200541ffff036a22032005490d02200341107640002202417f46200241ffff0371200247720d022002411074220220034180807c716a22042002490d024100210341b8c9042004360200200220056a22042002490d030b41b4c9042004360200200221030c020b41d0bc04411c41c0bc041037000b410021030b20002001360204200020033602000b9b0302047f027e230041306b2203240020002802002202ad2106024002400240024002400240024020024190ce004f044041272100200621070240034020004104490d01200341096a20006a220241046b200720074290ce008022064290ce007e7da7220441ffff037141e4006e220541017441fe8e046a2f00003b0000200241026b2004200541e4006c6b41ffff037141017441fe8e046a2f00003b0000200041046b2100200742ffc1d72f56200621070d000b2006a7220241e3004d0d0320004102490d080c020b0c070b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341096a6a2006a72202200241ffff037141e4006e220241e4006c6b41ffff037141017441fe8e046a2f00003b00000b2002410a490d01200041024f0d000c040b200041026b2200200341096a6a200241017441fe8e046a2f00003b00000c020b2000450d020b200041016b2200200341096a6a200241306a3a00000b200041274b0d0020014180c4044100200341096a20006a412720006b1059200341306a24000f0b41c08904412141d8b3041037000b0300010b0e0020002802001a03400c000b000bb60201037f230041406a220124002001200036020c2001410736022420012001410c6a36022041002100410421030240024002400240024003402000200341b0bd046a2802006a22022000490d0120022100200341086a22034114470d000b410021002001200241104f047f200220026a22004100200020024f1b0541000b104520014100360218200120012903003703102001410136023c20014102360234200141b0bd04360230200141003602282001200141206a360238200141106a200141286a10460d0141bcc9042d000045044041bdc9042d00004101710d050b410c20012802142001280218100522002000410c4f1b4109470d020c030b41908304411c41c8b3041037000b41d086044133200141286a41d4830441f88704102e000b41bcc90441013a00000b41bdc90441013a00000b000b0c0042f5b9dbabd184bd9f010b4a01017f230041106b22052400200220034904402003200220041057000b200541086a2003200220011058200528020c21012000200528020836020020002001360204200541106a24000b0f0020002001200241b89404109b010b1500200020012002200341d8c70441c089041099010bf80301097f230041106b22072400418080c400210920042105024020002802182208410171450d00200441016a22050440412b21090c010b41a08904411c41d891041037000b02400240200841047145044041002101200521060c010b200120026a2001105a20056a22062005490d010b024020002802084504404101210520002802002206200041046a2802002200200920012002105b0d01200620032004200028020c11000021050c010b024020062000410c6a280200220a4904402008410871450d01200028021c210c2000413036021c20002d0020210d41012105200041013a002020002802002208200041046a280200220b200920012002105b0d02200741086a2000200a20066b4101105c200728020c2201418080c400460d022007280208200820032004200b28020c1100000d0220012008200b105d0d022000200d3a00202000200c36021c410021050c020b4101210520002802002206200041046a2802002200200920012002105b0d01200620032004200028020c11000021050c010b4101210520072000200a20066b4101105c20072802042208418080c400460d00200728020020002802002206200041046a2802002200200920012002105b0d00200620032004200028020c1100000d00200820062000105d21050b200741106a240020050f0b41a08904411c41e891041037000ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d0020012000105e2206200020016a22082004417c716a2004410371105e6a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41989604105f200328020c21052003280208210820032003280200200328020422002000417c7141c89904105f200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41a08904411c41d899041037000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441a08904411c41889a041037000b41a08904411c41e899041037000b41a08904411c41f899041037000b41a08904411c41b899041037000b20012002105e21020b200341106a240020020b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020032004200128020c1100000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41a08904411c41f891041037000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110100450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110100450d000b200441016b0b2000490b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41a08904411c41c8b3041037000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b418cbd04412320041037000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4106360200200341bc8c0436021020034100360208200341063602242003200341206a360218200320033602282003200341046a360220200341086a20021012000bc50101017f230041106b220624000240200120024d0440200220044d0d012002200420051017000b230041306b220024002000200236020420002001360200200041146a41023602002000411c6a41023602002000412c6a41063602002000418c950436021020004100360208200041063602242000200041206a3602182000200041046a36022820002000360220200041086a20051012000b200641086a2001200220031058200628020c21012000200628020836020020002001360204200641106a24000b820101047f200128020421022001280200210302400240200110632205418080c400470440200320026b2202200128020020012802046b2203490d0120012802082204200220036b6a22022004490d02200120023602080b20002005360204200020043602000f0b41c08904412141909b041037000b41a08904411c41a09b041037000bb70101047f200028020422012000280200460440418080c4000f0b2000200141016a36020420012d00002203411874411875410048047f2000200141026a36020420012d0001413f7121022003411f712104200341df014d044020044106742002720f0b2000200141036a36020420012d0002413f712002410674722102200341f00149044020022004410c74720f0b2000200141046a3602042004411274418080f0007120012d0003413f71200241067472720520030b0b3f01017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b200221040b20002001360204200020043602000b8a0301067f230041306b22022400200028020421042000280200210302400240200128020822064101472001280210220541014771450440024020054101470d00200141146a28020020024100360228200220033602242002200320046a36022041016a210003400240200241186a200241206a1062200228021c2105200041016b2200450d002005418080c400470d010c020b0b2005418080c400460d00200241106a200228021820032004106420022802142004200228021022001b21042000200320001b21030b2006450440200128020020032004200128020428020c11000021000c030b2001410c6a2802002200200320046a2003105a22054d0d01200241086a2001200020056b4100105c41012100200228020c2205418080c400460d0220022802082001280200220720032004200141046a280200220128020c1100000d02200520072001105d21000c020b200128020020032004200128020428020c11000021000c010b200128020020032004200128020428020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044108470d0120012802000b2802002104410121030b20002004360204200020033602000b2c0020024181014f0440200241800141ec8e041057000b200041800120026b3602042000200120026a3602000b8501002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4106360200200041a4980436021020004100360208200041063602242000200041206a360218200020003602282000200041046a360220200041086a20041012000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1047200341206a24000b850201037f23004190016b22022400027f02402001280218220341107145044020034120710d012000200110510c020b2000280200210041ff0021030340200241106a20036a413041d7002000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b200241086a200241106a200341016a1068200141fc8e0441022002280208200228020c10590c010b2000280200210041ff0021030340200241106a20036a413041372000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b2002200241106a200341016a1068200141fc8e0441022002280200200228020410590b20024190016a24000b7101017f230041206b22022400027f410120002001106b0d001a200241146a41013602002002411c6a4100360200200241c88a0436021020024180c4043602182002410036020841012001280200200141046a280200200241086a106a0d001a200041046a2001106b0b200241206a24000bde08010b7f23004190016b22032400200341003b0184012003410a3602800120034281808080a00137037820032002360274200341003602702003200236026c200320013602682003200236026420034100360260200028020421062000280200210720002802082108200341fc006a2109027f0340024002400240024020032d008501450440200341d8006a2003280268220c200328026c20032802702003280274106e0240024020032802582201450d00200328025c2100034002400240024002400240027f0240024002400240200328027822020440200220096a41016b2d00002104200041084f04402001200141036a417c712202460440200041086b210a410021020c040b200341d0006a4100200220016b22022000200020024b1b22022001200041b493041061200341c8006a200420032802502003280254106f20032802484101470d02200328024c21010c050b200341306a200420012000106f2003280234210120032802300c050b41c08904412141e8a0041037000b2002200041086b220a4b0d010b200441818284086c210b0340200241046a22052002490d04200120026a280200200b73220d417f73200d41818284086b71200120056a280200200b732205417f73200541818284086b7172418081828478710d012002200241086a22024b0d072002200a4d0d000b0b200341406b20012000200241e493041056200341386a200420032802402003280244106f410020032802384101470d011a2002200328023c6a220120024f0d0041a08904411c41f493041037000b41010b4101460440200141016a2200450d022000200328027022006a22022000490d0320032002360270200220032802782200490d05200341286a2003280268200328026c200220006b2002106e20032802282202450d05200328022c2100200341206a41002003280278200941044198a104106120022000200328022020032802241070450d05200341186a200328026020032802702200200c107120032000360260200328021c2102200328021821000c080b200320032802743602700c060b41a08904411c41c493041037000b41a08904411c41f8a0041037000b41a08904411c4188a1041037000b41a08904411c41d493041037000b200341106a2003280268200328026c20032802702003280274106e20032802142100200328021022010d000b0b4100210020032d0085010d00200341013a008501024020032d008401044020032802642101200328026021040c010b2003280264220120032802602204490d0420012004460d010b200341086a2004200120032802681071200328020c2102200328020821000b20000d010b41000c050b20082d0000450d01200741ec8d044104200628020c110000450d010c020b41c08904412141b09b041037000b2003410a36028c0120082002047f200320002002200241016b41a4970410562003418c016a41012003280200200328020410700541000b3a0000200720002002200628020c110000450d010b0b41010b20034190016a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011058200528020c2107200528020821060b2000200736020420002006360200200541106a24000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b1801017f2001200346047f200020022001100a0541010b450b1500200020012002200341bc9c0441c089041099010be60101017f230041106b220224002002410036020c20002002410c6a027f0240024020014180014f04402001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200220013a000c41010c020b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b106d200241106a24000b0d002000200141c89004109a010b0d00200028020020012002106d0b0b002000280200200110720b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1073200241206a24000b1a002000418080c40046044041cc8c04412b20011037000b20000ba10201037f418080c4002101024002400240024002400240410320002802042203418080c4006b200341ffffc3004d1b41016b0e03000102030b2000418080c40036020420002802000f0b2000418180c40036020441dc000f0b0240024002400240024020002d000841016b0e050004010203050b200041003a000841fd000f0b200041023a000841fb000f0b200041033a000841f5000f0b200041043a000841dc000f0b2000280200220241ffffffff03712002470d012002410274220141204f0d0220032001411c7176410f712201413072200141d7006a2001410a491b41e88b04107721012002450440200041013a000820010f0b2000200241016b3602000b20010f0b41f08904412141c88b041037000b41a08a04412441d88b041037000bb70701067f418280c400210402400240024002400240024002400240200141096b0e050103060602000b2001450440413021030c070b4122210320014122460d034127210320014127460d0441dc002103200141dc00460d060c050b41f40021030c050b41f20021030c040b41ee0021030c030b20024180800471450d010c020b2002418002710d010b0240024002400240024002400240024002402002410171450d002001410b742105410021034121210441212102024002400340200320044f0d02200320024101766a22022003490d0402402005200241027441e8b3046a280200410b7422064d044020052006460d03200221040c010b200241016a2203450d060b200420036b2102200320044d0d000b41c08904412141d497041037000b200241016a21030b200341204b0d032003410274220241e8b3046a28020022054115762104027f2001027f024020034120470440200241ecb3046a28020041157622022004490d0820030d0120010c030b200541808080d80549044041d7052102411f0c020b41c08904412141e4b1041037000b200341016b0b41027441e8b3046a28020041ffffff00712203490d06200120036b0b210520022004460d06200241016b2106024020022004417f736a450d0041d7052004200441d7054d1b2107200241016b210841002103034020042007460d09024020032003200441ecb4046a2d00006a22024d0440200220054d0d01200421060c030b41a08904411c41b4b2041037000b200221032008200441016a2204470d000b0b2006410171450d002001410172674102764107732103200121040c090b024020014120490d00418180c4002104200141ff00490d0802402001418080044f0440200141808008490d01200141f083386b4190fc0b49200141b0c70c6b41d0ba2b4972200141cba60c6b4105492001419ef40b6b41e20b497272200141e1d70b6b419f1849200141a29d0b6b410e49722001417e71419ef00a46200141607141e0cd0a467272720d02200141baee0a6b41064f0d0a0c020b200141d4a504412841a4a604419f0241c3a80441af02107a0d090c010b200141f2aa04412c41caab0441c401418ead0441c203107a0d080b2001410172674102764107732103200121040c080b41a08904411c41b497041037000b41a08904411c41c497041037000b4121412141d4b1041060000b41c08904412141f4b1041037000b41c0890441214184b2041037000b41c0890441214194b2041037000b200741d70541a4b2041060000b200121030b2000410536020820002004360204200020033602000bfa0201097f230041106b2209240041012108024002402002450d00200120024101746a210b20004180fe0371410876210c20012d00012102200041ff0171210e03402002210d200141026a210a0240200c20012d00002202470440200a200b462002200c4b720d030c010b200941086a2007200d2003200441b4a5041061200928020c210220092802082107024003402002450d01200241016b210220072d0000210f200741016a2107200e200f470d000b410021080c040b200a200b460d020b200141036a2102200a2101200d2207200720022d00006a22024d0d000b41a08904411c41a4a5041037000b2006450d00200520066a2101200041ffff0371210703400240200541016a210020052d00002202411874411875220341004e047f20000520002001460d0120052d0001200341ff0071410874722102200541026a0b2105200720026b22074100480d022008410173210820012005470d010c020b0b41cc8c04412b41c4a5041037000b200941106a240020084101710b890101037f230041206b22022400410121030240200128020022044127200128020428021022011101000d00200220002802004181021079200241186a200241086a280200360200200220022903003703100340200241106a10782200418080c40046044020044127200111010021030c020b200420002001110100450d000b0b200241206a240020030b6200024002402003450d00200220034d044020022003460d010c020b200120036a2c00004140480d010b2002200349044041c08904412141cc9c041037000b2000200220036b3602042000200120036a3602000f0b20012002200320022004107d000bfb0501047f23004180016b220524002005200336021c20052002360218200541106a20002001418002107e2206200020011064024002400240200528021022070440200528021421082005200736022020052008360224200541054100200120064b22061b36022c200541a8a1044180c40420061b36022802402005200120024f047f200120034f0d0120030520020b360238200541cc006a4103360200200541d4006a4103360200200541ec006a4104360200200541e4006a4104360200200541d0a104360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602682005200541206a3602602005200541386a3602580c040b200220034b0d01024002402002450d00200120024d044020012002460d010c020b200020026a2c00004140480d010b200321020b20052002360230200541086a20002001200020012002107e22002004107c20052005280208220136025c20052001200528020c6a3602582005200541d8006a1063200410772201360234027f41012001418001490d001a41022001418010490d001a41034104200141808004491b0b20006a220120004f0d0241a08904411c20041037000b20002001410020062004107d000b200541f4006a4104360200200541ec006a4104360200200541e4006a4106360200200541cc006a4104360200200541d4006a41043602002005418ca204360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602702005200541206a36026820052005411c6a3602602005200541186a3602580c010b2005200136023c20052000360238200541cc006a4105360200200541d4006a4105360200200541fc006a4104360200200541f4006a4104360200200541ec006a4109360200200541e4006a410a360200200541e0a204360248200541003602402005410636025c2005200541d8006a3602502005200541286a3602782005200541206a3602702005200541386a3602682005200541346a3602602005200541306a3602580b200541406b20041012000b8f0101037f230041106b220324000240200120024b0440200341086a200241036b22044100200220044f1b2204200241016a200020014180a4041061200328020841016b2100200328020c2101034020010440200020016a200141016b220221012c00004140480d010b0b200220046a22012004490d010b200341106a240020010f0b41a08904411c4190a4041037000b9c0201047f230041406a2205240041012107024020002802002206200120022000280204220228020c22011100000d00024020002802182208410471450440200641f48d04410120011100000d022003200020041101000d0220002802002106200028020428020c21010c010b200641f28d04410220011100000d01200541013a00172005200236020c2005200636020820052008360230200541d48d0436021c200520002d00203a00382005200028021c36023420052000290210370328200520002902083703202005200541176a3602102005200541086a3602182003200541186a20041101000d01200528021841f08d044102200528021c28020c1100000d010b200641c48a044101200111000021070b200541406b240020070b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1047200241206a24000b0b002000280200200110650b180020012802004184c9044105200128020428020c1100000b990301037f230041406a22022400200028020021034101210002402001280200220441a08d04410c200141046a280200220128020c1100000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241b08d04360230200241003602282002410b3602142002200241106a36023820022002410c6a36021020042001200241286a106a450d010c020b20032802002200200328020428020c110b0042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241b08d04360230200241003602282002410c3602142002200241106a36023820022002410c6a36021020042001200241286a106a0d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4106360200200241346a4106360200200241f88c043602182002410036021020022000410c6a3602382002200041086a3602302002410436022c200220003602282002200241286a36022020042001200241106a106a21000b200241406b240020000b2601017f230041106b22022400200220003b010e20012002410e6a4102103e200241106a24000bed0702057f057e230041c0016b22022400200241286a200020011086010240024002402002290328a74101460440200241386a290300210820022002290330220a37034020022008370348200241186a2000102920022903182207200241206a290300220b84500d012002200742017d22093703502002200b2007200956ad7c42017d22073703582009200a8520072008858450450440200220003602782002200241d0006a36027c20024184c20436029c01200241d4c004360298012002200241f8006a3602a00120024180016a20024198016a101020022d00800122034107460d03200241ef006a220420024190016a290000370000200241e8006a220520024189016a290000370300200220022900810137036020034106460d04200241b8016a2004290000370000200241b1016a2005290300370000200220022903603700a901200220033a00a801200220003602602002200241406b36026420024184c20436028401200241d4c004360280012002200241e0006a22033602880120024180016a2204200241a8016a2205108701200220003602602002200536026420024188c20436028401200241d4c00436028001200220033602880120042002290340200241c8006a29030010880120022d00a8011a0b20022000360298012002200241d0006a36029c0120024184c204360264200241d4c004360260200220024198016a220436026820024100360288012002428080013702ac01200241bec9043602a801200241e0006a2205200241a8016a2203108901200220022903a80137038001200241106a20024180016a220620022802b00110162002280210200228021410071a2002200136029c01200220003602980120024188c204360264200241d4c0043602602002200436026820024100360288012002428080013702ac01200241bec9043602a80120052003108a01200220022903a80137038001200241086a200620022802b00110162002280208200228020c10071a200220003602b001200241fcc3043602ac01200241d4c0043602a80120032002290350200241d8006a290300108b010b200241c0016a24000f0b41b0c004412141fcc2041037000b200220022d0081013a00a701200241b4016a4101360200200241bc016a4101360200200241fcc0043602b001200241003602a801200241013602642002200241e0006a3602b8012002200241a7016a360260200241a8016a41f4c1041012000b230041106b220124002001412b36020c2001418cc304360208230041206b220024002000410c6a4101360200200041146a4101360200200041c4ba04360208200041003602002000410436021c2000200141086a3602182000200041186a360210200041b8c3041012000bbe0302047f037e230041e0006b220324002003200236022c200320013602282003410036024020034280800137024c200341bec90436024841d4c0044188c204200341c8006a2206108c01200341286a2006108d0120032003290348370338200341206a200341386a20032802501016200328022421042003280220200328023821012003200328023c22023602482004200120061000210402402003280248220520024d0440027e024002400240410c20042004410c4f1b0e0402000001000b200341d4006a4101360200200341dc006a4100360200200341f8c50436025020034180c40436025820034100360248200341c8006a4180c6041012000b42000c010b2003200536024c20032001360248200341086a200341c8006a10422003290308a70d02200341186a29030021072003290310210842010b21092000200837030820002009370300200041106a2007370300200341e0006a24000f0b2005200241e4c4041017000b200341003a0037200341d4006a4101360200200341dc006a4101360200200341fcc004360250200341003602482003410136023c2003200341386a3602582003200341376a360238200341c8006a41f4c1041012000ba30102047f017e230041306b2202240020024100360218200242808001370224200241bec9043602202000200241206a220310890120022002290320370310200241086a200241106a220420022802281016200228020c2100200228020820022903102106200241003602282002200637032020012003101520022002290320370310200220042002280228101620002002280200200228020410061a200241306a24000ba50102047f017e230041306b2203240020034100360218200342808001370224200341bec9043602202000200341206a2204108a0120032003290320370310200341086a200341106a220520032802281016200328020c21002003280208200329031021072003410036022820032007370320200120022004103f20032003290320370310200320052003280228101620002003280200200328020410061a200341306a24000b1e002000280200200041046a280200200110900120002802082001108f010b1e002000280200200041046a280200200110900120002802082001108d010ba50102047f017e230041306b2203240020034100360218200342808001370224200341bec9043602202000200341206a2204108e0120032003290320370310200341086a200341106a220520032802281016200328020c21002003280208200329031021072003410036022820032007370320200120022004103f20032003290320370310200320052003280228101620002003280200200328020410061a200341306a24000b3001017f230041106b22032400200020021091012003200128020036020c20022003410c6a4104103e200341106a24000b1500200028020020011092012000280204200110150b1e002000280200200041046a2802002001109001200028020820011092010b22002000280200200110920120002802042200290300200041086a2903002001103f0b100020002002109101200120021091010b0b002000280200200110140b2100200028020045044020014100100c0f0b20014101100c2000280200200110190b4801027f230041106b220224002002410036020c024020012002410c6a4104100e450440200228020c21010c010b410121030b2000200136020420002003360200200241106a24000b4201017f20002f01042103200041003a00042003410171450440200028020020012002100e0f0b200120034108763a00002000280200200141016a200241016b100e0ba50202037f047e230041d0006b22022400200241106a20002001108601024002402002290310a74504402002200010292002290300220542017c22072005542203200241086a29030022062003ad7c220820065420052007581b0d0220022000360230200241fcc30436022c200241d4c004360228200241286a20072008108b010c010b200241206a2903002106200229031821050b20022005370328200220063703302002200136023c2002200036023820024188c204360244200241d4c0043602402002200241386a2203360248200241406b220420052006108801200220003602382002200241286a36023c20024184c204360244200241d4c0043602402002200336024820042001108701200241d0006a24000f0b41e0c304411c41c8c3041037000bcd04010a7f230041d0006b22022400200028020022002802082103200028020421044101210802400240024020012802002207412220012802042209280210220a1101000d004100210120024100360228200220043602242002200320046a360220200241186a200241206a1062200228021c2205418080c400470440200228021821000340200241306a2005418180041079024002400240410320022802342206418080c4006b200641ffffc3004d1b41016b0e03020100010b2002280230220620022d00386a220b2006490d05200b4101460d010b20002001490d0502402001450d00200120034f044020012003460d010c070b200120046a2c00004140480d060b02402000450d00200020034f044020002003470d070c010b200020046a2c00004140480d060b200241106a200120002004107120022802102206450d05200720062002280214200928020c110000450440200241c8006a200241386a280200360200200220022903303703400340200241406b10782201418080c400460440027f41012005418001490d001a41022005418010490d001a41034104200541808004491b0b20006a220120004f0d0341a08904411c419892041037000b20072001200a110100450d000b0b0c030b200241086a200241206a106220022802082100200228020c2205418080c400470d000b0b200220042003200141a89204107c200720022802002002280204200928020c1100000d0020074122200a11010021080b200241d0006a240020080f0b41a08904411c41f88b041037000b200420032001200041889204107d000bd10101017f230041106b22022400027f024002400240024002400240200028020041016b0e050102030405000b2002200041046a36020820014190c6044106200241086a410d107f0c050b200128020041d1c604410b200128020428020c1100000c040b200128020041c6c604410b200128020428020c1100000c030b200128020041bbc604410b200128020428020c1100000c020b200128020041adc604410e200128020428020c1100000c010b2002200041046a36020c20014196c60441172002410c6a410d107f0b200241106a24000b1500200020012002200341d8c70441f0c7041099010b2800200120024d04402000200220016b3602042000200120036a3602000f0b2005412120041037000b5301017f230041206b2203240020032000360204200341186a200141106a290200370300200341106a200141086a29020037030020032001290200370308200341046a2002200341086a1047200341206a24000b7301017f230041306b220424002004200136020420042000360200200441146a41023602002004411c6a41023602002004412c6a41063602002004200336021020044100360208200441063602242004200441206a3602182004200441046a36022820042004360220200441086a20021012000b0be9480700418080040be1090e00000010000000040000000f000000100000000100000001000000010000004120636f6e7472616374206265696e67206578656375746564206d757374206861766520612076616c6964206163636f756e742069642e0074220100660000007c0100000e00000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e00000074220100660000006b0100000e000000742201006600000024010000230000002f55736572732f7469656e2f50726f6a656374732f70737033342f6c69622e7273000000cc000100210000001000000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900000101002700000073746f7261676520656e7472792077617320656d70747900300101001700000043616e206d696e74cc0001002100000025000000120000004d79505350333473796d626f6c000000100000000400000004000000110000001200000013000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000100000000000000001000000140000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e7273e4010100780000008a0100001c0000006361706163697479206f766572666c6f770000006c02010011000000e40101007800000006020000050000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640e03010015000000230301000d00000098020100760000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e727300830301007400000064020000200000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730804010078000000350700000d0000000804010078000000a307000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041f089040b21617474656d707420746f206d756c7469706c792077697468206f766572666c6f770041a08a040bcc14617474656d707420746f2073686966742072696768742077697468206f766572666c6f77292e2e0045050100020000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f636861722f6d6f642e72735005010078000000bf000000350000005005010078000000bf000000210000005005010078000000c0000000330000005005010078000000ed00000009000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732000000806010020000000280601001200000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75653a0022010000000000770601000100000077060100010000001000000000000000010000001500000070616e69636b65642061742027272c20ac06010001000000ad06010003000000603a20000022010000000000c106010002000000100000000c00000004000000160000001700000018000000202020202c0a280a282f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e7273f5060100770000006500000014000000307830303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390000100000000400000004000000190000001a0000001b0000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273006008010077000000710500000d0000006008010077000000750500000d000000600801007700000005060000380000006008010077000000920900001e00000060080100770000009609000018000000600801007700000099090000160000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273380901007c0000004e0000002f000000380901007c0000005a0000001f000000380901007c0000006300000009000000380901007c0000006800000027000000380901007c000000680000003e00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820040a010012000000160a01002200000072616e676520656e6420696e64657820480a010010000000160a010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000680a0100160000007e0a01000d0000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300009c0a01007a000000be050000250000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e7273000000280b010079000000040900001e000000280b010079000000d209000017000000280b010079000000de09000018000000280b010079000000e709000014000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028e40b010015000000f90b01002b00000044050100010000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000003c0c01007900000047000000150000003c0c0100790000004f000000320000003c0c01007900000054000000110000003c0c0100790000005a000000090000003c0c01007900000064000000110000003c0c010079000000660000000d0000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273180d0100780000009100000026000000180d0100780000009100000011000000180d0100780000004f0200002d0000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e72730000c00d01007a000000ca00000013000000c00d01007a00000062010000130000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e7273005c0e01007f000000e50000001500000001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041ae9f040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041ec9f040be9232f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e727300ec0f01007b000000a101000047000000ec0f01007b000000b401000020000000ec0f01007b000000b401000011000000ec0f01007b000000b8010000260000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f6620600000ad1001000b000000b810010016000000c006010001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000e81001000e000000f610010004000000fa10010010000000c006010001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060ad1001000b0000002c1101002600000052110100080000005a11010006000000c0060100010000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f6d6f642e7273008811010077000000070100001d00000088110100770000000c010000160000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e72730000002012010081000000080000001800000020120100810000000a0000001c00000020120100810000001a0000003600000000010305050606020706080709110a1c0b190c1a0d100e0c0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206170c500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d081f0124016a046b02af03b102bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa03fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f92116f5fbfeeef5a62f4fcff53549a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6fbe935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524b2b082a161a261c1417094e042409440d19070a0648082709750b423e2a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d49070a80f6460a1d03474937030e080a0639070a813619073b031c56010f320d839b66750b80c48a4c630d843010168faa8247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781330f011d060e0408818c89046b050d0309071092604709743c80f60a73087015467a140c140c570919808781470385420f1584501f060680d52b053e2101702d031a040281401f113a050181d02a82e680f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80411030d0377045f060c04010f0c0438080a062808224e81540c1d03090736080e040907090780cb250a84062f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e72735018010084000000500000002800000050180100840000005400000009000000501801008400000052000000090000005018010084000000590000001100000050180100840000005b0000001100000050180100840000005c0000001600000050180100840000005d000000090000002f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e727300000044190100810000009500000001000000f506010077000000cd010000050000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301c6148f31ea14c40346150f06aa1514f6f21529dbca15200cf615365d1a15300da215400e0e155aee26157ece42159d0e8a1592000ee59f0017f5a00700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b0749021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a502000400025003460b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f0302010102060102019d010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a06030101020107010148020301010100020b023405050101010001060f00053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f000701110207010201056401a00700013d04000400076d07006080f0000000220100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f722f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e7273c41d01007c0000002f01000018000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a0022010000000000af1e0100010000002f55736572732f7469656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300c01e0100670000005a0000001c000000c01e0100670000005a00000009000000c01e0100670000005a00000031000000c01e0100670000006500000009000000c01e0100670000008d0000002100000045636473615265636f766572794661696c656443616c6c52756e74696d654661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465000000617474656d707420746f2073756274726163742077697468206f766572666c6f7700000040a232ca4661696c656420746f206765742076616c756520696e205261774d617070696e673a200058200100230000002f55736572732f7469656e2f2e636172676f2f6769742f636865636b6f7574732f6f70656e62727573682d636f6e7472616374732d346332393166376161623939633337642f313365383266332f6c616e672f7372632f73746f726167652f7261775f6d617070696e672e7273000000842001006d000000410000002500000002000000010000002f55736572732f7469656e2f2e636172676f2f6769742f636865636b6f7574732f6f70656e62727573682d636f6e7472616374732d346332393166376161623939633337642f313365383266332f6c616e672f7372632f73746f726167652f6d756c74695f6d617070696e672e7273000c2101006f0000002c0100001b0000005468652076616c756520756e64657220746865206c61737420696e6465782073686f756c64206578697374000c2101006f00000031010000120000000c2101006f000000850000002f0041e0c3040b8504617474656d707420746f206164642077697468206f766572666c6f77000000002f55736572732f7469656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730022010064000000e4000000140000002f55736572732f7469656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d342e322e312f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273656e636f756e746572656420756e6578706563746564206572726f720000da2201001c0000007422010066000000ed00000017000000437573746f6d536166655472616e73666572436865636b4661696c6564546f6b656e4e6f74457869737473546f6b656e4578697374734e6f74417070726f76656453656c66417070726f76652f55736572732f7469656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d323032332d30322d30372d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273005c2301007b00000082010000470041f0c7040bc301617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f7469656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e362e302f7372632f636f6465632e727300001124010061000000770000000e0000004572726f72000000190000001c000000160000001400000019000000ab1d01008f1d0100791d0100651d01004c1d01","build_info":{"build_mode":"Debug","cargo_contract_version":"3.0.1","rust_toolchain":"nightly-aarch64-apple-darwin","wasm_opt_settings":{"keep_debug_symbols":false,"optimization_passes":"Z"}}},"contract":{"name":"psp34","version":"1.0.0","authors":[""]},"spec":{"constructors":[{"args":[],"default":false,"docs":[],"label":"new","payable":false,"returnType":{"displayName":["ink_primitives","ConstructorResult"],"type":10},"selector":"0x9bae9d5e"}],"docs":[],"environment":{"accountId":{"displayName":["AccountId"],"type":0},"balance":{"displayName":["Balance"],"type":7},"blockNumber":{"displayName":["BlockNumber"],"type":5},"chainExtension":{"displayName":["ChainExtension"],"type":29},"hash":{"displayName":["Hash"],"type":28},"maxEventTopics":4,"timestamp":{"displayName":["Timestamp"],"type":6}},"events":[],"lang_error":{"displayName":["ink","LangError"],"type":11},"messages":[{"args":[],"default":false,"docs":[" Returns current NFT total supply."],"label":"PSP34::total_supply","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":12},"selector":"0x628413fe"},{"args":[{"label":"owner","type":{"displayName":["psp34_external","BalanceOfInput1"],"type":0}}],"default":false,"docs":[" Returns the balance of the owner.",""," This represents the amount of unique tokens the owner has."],"label":"PSP34::balance_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":13},"selector":"0xcde7e55f"},{"args":[{"label":"id","type":{"displayName":["psp34_external","OwnerOfInput1"],"type":14}}],"default":false,"docs":[" Returns the owner of the token if any."],"label":"PSP34::owner_of","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":15},"selector":"0x1168624d"},{"args":[],"default":false,"docs":[" Returns the collection `Id` of the NFT token.",""," This can represents the relationship between tokens/contracts/pallets."],"label":"PSP34::collection_id","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":17},"selector":"0xffa27a5f"},{"args":[{"label":"owner","type":{"displayName":["psp34_external","AllowanceInput1"],"type":0}},{"label":"operator","type":{"displayName":["psp34_external","AllowanceInput2"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","AllowanceInput3"],"type":18}}],"default":false,"docs":[" Returns `true` if the operator is approved by the owner to withdraw `id` token."," If `id` is `None`, returns `true` if the operator is approved to withdraw all owner's tokens."],"label":"PSP34::allowance","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":19},"selector":"0x4790f55a"},{"args":[{"label":"operator","type":{"displayName":["psp34_external","ApproveInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","ApproveInput2"],"type":18}},{"label":"approved","type":{"displayName":["psp34_external","ApproveInput3"],"type":20}}],"default":false,"docs":[" Approves `operator` to withdraw the `id` token from the caller's account."," If `id` is `None` approves or disapproves the operator for all tokens of the caller.",""," On success a `Approval` event is emitted.",""," # Errors",""," Returns `SelfApprove` error if it is self approve.",""," Returns `NotApproved` error if caller is not owner of `id`."],"label":"PSP34::approve","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x1932a8b0"},{"args":[{"label":"to","type":{"displayName":["psp34_external","TransferInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34_external","TransferInput2"],"type":14}},{"label":"data","type":{"displayName":["psp34_external","TransferInput3"],"type":8}}],"default":false,"docs":[" Transfer approved or owned token from caller.",""," On success a `Transfer` event is emitted.",""," # Errors",""," Returns `TokenNotExists` error if `id` does not exist.",""," Returns `NotApproved` error if `from` doesn't have allowance for transferring.",""," Returns `SafeTransferCheckFailed` error if `to` doesn't accept transfer."],"label":"PSP34::transfer","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x3128d61b"},{"args":[{"label":"account","type":{"displayName":["psp34burnable_external","BurnInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34burnable_external","BurnInput2"],"type":14}}],"default":false,"docs":[" Destroys token with id equal to `id` from `account`",""," Caller must be approved to transfer tokens from `account`"," or to transfer token with `id`"],"label":"PSP34Burnable::burn","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x63c9877a"},{"args":[{"label":"account","type":{"displayName":["psp34mintable_external","MintInput1"],"type":0}},{"label":"id","type":{"displayName":["psp34mintable_external","MintInput2"],"type":14}}],"default":false,"docs":[" Mints a new token with `id`.",""," See [`PSP34::_mint_to`]."],"label":"PSP34Mintable::mint","mutates":true,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":21},"selector":"0x6c41f2ec"},{"args":[{"label":"owner","type":{"displayName":["psp34enumerable_external","OwnersTokenByIndexInput1"],"type":0}},{"label":"index","type":{"displayName":["psp34enumerable_external","OwnersTokenByIndexInput2"],"type":7}}],"default":false,"docs":[" Returns a token `Id` owned by `owner` at a given `index` of its token list."," Use along with `balance_of` to enumerate all of ``owner``'s tokens.",""," The start index is zero."],"label":"PSP34Enumerable::owners_token_by_index","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":24},"selector":"0x3bcfb511"},{"args":[{"label":"index","type":{"displayName":["psp34enumerable_external","TokenByIndexInput1"],"type":7}}],"default":false,"docs":[" Returns a token `Id` at a given `index` of all the tokens stored by the contract."," Use along with `total_supply` to enumerate all tokens.",""," The start index is zero."],"label":"PSP34Enumerable::token_by_index","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":24},"selector":"0xcd0340d0"},{"args":[{"label":"id","type":{"displayName":["psp34metadata_external","GetAttributeInput1"],"type":14}},{"label":"key","type":{"displayName":["psp34metadata_external","GetAttributeInput2"],"type":9}}],"default":false,"docs":[" Returns the attribute of `id` for the given `key`.",""," If `id` is a collection id of the token, it returns attributes for collection."],"label":"PSP34Metadata::get_attribute","mutates":false,"payable":false,"returnType":{"displayName":["ink","MessageResult"],"type":26},"selector":"0xf19d48d1"}]},"storage":{"root":{"layout":{"struct":{"fields":[{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"leaf":{"key":"0x1cc80634","ty":0}},"root_key":"0x1cc80634"}},"name":"token_owner"},{"layout":{"root":{"layout":{"leaf":{"key":"0x7e3fae6b","ty":3}},"root_key":"0x7e3fae6b"}},"name":"operator_approvals"},{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"enum":{"dispatchKey":"0xca32a240","name":"Id","variants":{"0":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":2}},"name":"0"}],"name":"U8"},"1":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":4}},"name":"0"}],"name":"U16"},"2":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":5}},"name":"0"}],"name":"U32"},"3":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":6}},"name":"0"}],"name":"U64"},"4":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":7}},"name":"0"}],"name":"U128"},"5":{"fields":[{"layout":{"leaf":{"key":"0xca32a240","ty":8}},"name":"0"}],"name":"Bytes"}}}},"root_key":"0xca32a240"}},"name":"enumerable"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Balances"}},"name":"balances"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"psp34"},{"layout":{"struct":{"fields":[{"layout":{"root":{"layout":{"leaf":{"key":"0x9b2d2382","ty":9}},"root_key":"0x9b2d2382"}},"name":"attributes"},{"layout":{"enum":{"dispatchKey":"0x00000000","name":"Option","variants":{"0":{"fields":[],"name":"None"},"1":{"fields":[{"layout":{"leaf":{"key":"0x00000000","ty":3}},"name":"0"}],"name":"Some"}}}},"name":"_reserved"}],"name":"Data"}},"name":"metadata"}],"name":"Contract"}},"root_key":"0x00000000"}},"types":[{"id":0,"type":{"def":{"composite":{"fields":[{"type":1,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","AccountId"]}},{"id":1,"type":{"def":{"array":{"len":32,"type":2}}}},{"id":2,"type":{"def":{"primitive":"u8"}}},{"id":3,"type":{"def":{"tuple":[]}}},{"id":4,"type":{"def":{"primitive":"u16"}}},{"id":5,"type":{"def":{"primitive":"u32"}}},{"id":6,"type":{"def":{"primitive":"u64"}}},{"id":7,"type":{"def":{"primitive":"u128"}}},{"id":8,"type":{"def":{"sequence":{"type":2}}}},{"id":9,"type":{"def":{"primitive":"str"}}},{"id":10,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":11}],"path":["Result"]}},{"id":11,"type":{"def":{"variant":{"variants":[{"index":1,"name":"CouldNotReadInput"}]}},"path":["ink_primitives","LangError"]}},{"id":12,"type":{"def":{"variant":{"variants":[{"fields":[{"type":7}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":7},{"name":"E","type":11}],"path":["Result"]}},{"id":13,"type":{"def":{"variant":{"variants":[{"fields":[{"type":5}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":5},{"name":"E","type":11}],"path":["Result"]}},{"id":14,"type":{"def":{"variant":{"variants":[{"fields":[{"type":2,"typeName":"u8"}],"index":0,"name":"U8"},{"fields":[{"type":4,"typeName":"u16"}],"index":1,"name":"U16"},{"fields":[{"type":5,"typeName":"u32"}],"index":2,"name":"U32"},{"fields":[{"type":6,"typeName":"u64"}],"index":3,"name":"U64"},{"fields":[{"type":7,"typeName":"u128"}],"index":4,"name":"U128"},{"fields":[{"type":8,"typeName":"Vec"}],"index":5,"name":"Bytes"}]}},"path":["openbrush_contracts","traits","types","Id"]}},{"id":15,"type":{"def":{"variant":{"variants":[{"fields":[{"type":16}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":16},{"name":"E","type":11}],"path":["Result"]}},{"id":16,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":0}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":0}],"path":["Option"]}},{"id":17,"type":{"def":{"variant":{"variants":[{"fields":[{"type":14}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":14},{"name":"E","type":11}],"path":["Result"]}},{"id":18,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":14}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":14}],"path":["Option"]}},{"id":19,"type":{"def":{"variant":{"variants":[{"fields":[{"type":20}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":20},{"name":"E","type":11}],"path":["Result"]}},{"id":20,"type":{"def":{"primitive":"bool"}}},{"id":21,"type":{"def":{"variant":{"variants":[{"fields":[{"type":22}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":22},{"name":"E","type":11}],"path":["Result"]}},{"id":22,"type":{"def":{"variant":{"variants":[{"fields":[{"type":3}],"index":0,"name":"Ok"},{"fields":[{"type":23}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":3},{"name":"E","type":23}],"path":["Result"]}},{"id":23,"type":{"def":{"variant":{"variants":[{"fields":[{"type":9,"typeName":"String"}],"index":0,"name":"Custom"},{"index":1,"name":"SelfApprove"},{"index":2,"name":"NotApproved"},{"index":3,"name":"TokenExists"},{"index":4,"name":"TokenNotExists"},{"fields":[{"type":9,"typeName":"String"}],"index":5,"name":"SafeTransferCheckFailed"}]}},"path":["openbrush_contracts","traits","errors","psp34","PSP34Error"]}},{"id":24,"type":{"def":{"variant":{"variants":[{"fields":[{"type":25}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":25},{"name":"E","type":11}],"path":["Result"]}},{"id":25,"type":{"def":{"variant":{"variants":[{"fields":[{"type":14}],"index":0,"name":"Ok"},{"fields":[{"type":23}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":14},{"name":"E","type":23}],"path":["Result"]}},{"id":26,"type":{"def":{"variant":{"variants":[{"fields":[{"type":27}],"index":0,"name":"Ok"},{"fields":[{"type":11}],"index":1,"name":"Err"}]}},"params":[{"name":"T","type":27},{"name":"E","type":11}],"path":["Result"]}},{"id":27,"type":{"def":{"variant":{"variants":[{"index":0,"name":"None"},{"fields":[{"type":9}],"index":1,"name":"Some"}]}},"params":[{"name":"T","type":9}],"path":["Option"]}},{"id":28,"type":{"def":{"composite":{"fields":[{"type":1,"typeName":"[u8; 32]"}]}},"path":["ink_primitives","types","Hash"]}},{"id":29,"type":{"def":{"variant":{}},"path":["ink_env","types","NoChainExtension"]}}],"version":"4"} diff --git a/packages/nft/src/generators/ink/contracts/psp34.json b/packages/nft/src/generators/ink/contracts/psp34.json new file mode 100644 index 000000000..48ed1a23a --- /dev/null +++ b/packages/nft/src/generators/ink/contracts/psp34.json @@ -0,0 +1,1500 @@ +{ + "source": { + "hash": "0xa47d10e05f992a227fcbcd6b42153497a322c615e1fb7b9f3d9a3b39d17b1fff", + "language": "ink! 4.2.1", + "compiler": "rustc 1.69.0-nightly", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.0.1", + "rust_toolchain": "nightly-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "psp34", + "version": "1.0.0", + "authors": [""] + }, + "spec": { + "constructors": [ + { + "args": [], + "default": false, + "docs": [], + "label": "new", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 10 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": ["AccountId"], + "type": 0 + }, + "balance": { + "displayName": ["Balance"], + "type": 7 + }, + "blockNumber": { + "displayName": ["BlockNumber"], + "type": 5 + }, + "chainExtension": { + "displayName": ["ChainExtension"], + "type": 29 + }, + "hash": { + "displayName": ["Hash"], + "type": 28 + }, + "maxEventTopics": 4, + "timestamp": { + "displayName": ["Timestamp"], + "type": 6 + } + }, + "events": [], + "lang_error": { + "displayName": ["ink", "LangError"], + "type": 11 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Returns current NFT total supply."], + "label": "PSP34::total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 12 + }, + "selector": "0x628413fe" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["psp34_external", "BalanceOfInput1"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Returns the balance of the owner.", + "", + " This represents the amount of unique tokens the owner has." + ], + "label": "PSP34::balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 13 + }, + "selector": "0xcde7e55f" + }, + { + "args": [ + { + "label": "id", + "type": { + "displayName": ["psp34_external", "OwnerOfInput1"], + "type": 14 + } + } + ], + "default": false, + "docs": [" Returns the owner of the token if any."], + "label": "PSP34::owner_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 15 + }, + "selector": "0x1168624d" + }, + { + "args": [], + "default": false, + "docs": [ + " Returns the collection `Id` of the NFT token.", + "", + " This can represents the relationship between tokens/contracts/pallets." + ], + "label": "PSP34::collection_id", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 17 + }, + "selector": "0xffa27a5f" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["psp34_external", "AllowanceInput1"], + "type": 0 + } + }, + { + "label": "operator", + "type": { + "displayName": ["psp34_external", "AllowanceInput2"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34_external", "AllowanceInput3"], + "type": 18 + } + } + ], + "default": false, + "docs": [ + " Returns `true` if the operator is approved by the owner to withdraw `id` token.", + " If `id` is `None`, returns `true` if the operator is approved to withdraw all owner's tokens." + ], + "label": "PSP34::allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 19 + }, + "selector": "0x4790f55a" + }, + { + "args": [ + { + "label": "operator", + "type": { + "displayName": ["psp34_external", "ApproveInput1"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34_external", "ApproveInput2"], + "type": 18 + } + }, + { + "label": "approved", + "type": { + "displayName": ["psp34_external", "ApproveInput3"], + "type": 20 + } + } + ], + "default": false, + "docs": [ + " Approves `operator` to withdraw the `id` token from the caller's account.", + " If `id` is `None` approves or disapproves the operator for all tokens of the caller.", + "", + " On success a `Approval` event is emitted.", + "", + " # Errors", + "", + " Returns `SelfApprove` error if it is self approve.", + "", + " Returns `NotApproved` error if caller is not owner of `id`." + ], + "label": "PSP34::approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 21 + }, + "selector": "0x1932a8b0" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["psp34_external", "TransferInput1"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34_external", "TransferInput2"], + "type": 14 + } + }, + { + "label": "data", + "type": { + "displayName": ["psp34_external", "TransferInput3"], + "type": 8 + } + } + ], + "default": false, + "docs": [ + " Transfer approved or owned token from caller.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `TokenNotExists` error if `id` does not exist.", + "", + " Returns `NotApproved` error if `from` doesn't have allowance for transferring.", + "", + " Returns `SafeTransferCheckFailed` error if `to` doesn't accept transfer." + ], + "label": "PSP34::transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 21 + }, + "selector": "0x3128d61b" + }, + { + "args": [ + { + "label": "account", + "type": { + "displayName": ["psp34burnable_external", "BurnInput1"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34burnable_external", "BurnInput2"], + "type": 14 + } + } + ], + "default": false, + "docs": [ + " Destroys token with id equal to `id` from `account`", + "", + " Caller must be approved to transfer tokens from `account`", + " or to transfer token with `id`" + ], + "label": "PSP34Burnable::burn", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 21 + }, + "selector": "0x63c9877a" + }, + { + "args": [ + { + "label": "account", + "type": { + "displayName": ["psp34mintable_external", "MintInput1"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34mintable_external", "MintInput2"], + "type": 14 + } + } + ], + "default": false, + "docs": [" Mints a new token with `id`.", "", " See [`PSP34::_mint_to`]."], + "label": "PSP34Mintable::mint", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 21 + }, + "selector": "0x6c41f2ec" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["psp34enumerable_external", "OwnersTokenByIndexInput1"], + "type": 0 + } + }, + { + "label": "index", + "type": { + "displayName": ["psp34enumerable_external", "OwnersTokenByIndexInput2"], + "type": 7 + } + } + ], + "default": false, + "docs": [ + " Returns a token `Id` owned by `owner` at a given `index` of its token list.", + " Use along with `balance_of` to enumerate all of ``owner``'s tokens.", + "", + " The start index is zero." + ], + "label": "PSP34Enumerable::owners_token_by_index", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 24 + }, + "selector": "0x3bcfb511" + }, + { + "args": [ + { + "label": "index", + "type": { + "displayName": ["psp34enumerable_external", "TokenByIndexInput1"], + "type": 7 + } + } + ], + "default": false, + "docs": [ + " Returns a token `Id` at a given `index` of all the tokens stored by the contract.", + " Use along with `total_supply` to enumerate all tokens.", + "", + " The start index is zero." + ], + "label": "PSP34Enumerable::token_by_index", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 24 + }, + "selector": "0xcd0340d0" + }, + { + "args": [ + { + "label": "id", + "type": { + "displayName": ["psp34metadata_external", "GetAttributeInput1"], + "type": 14 + } + }, + { + "label": "key", + "type": { + "displayName": ["psp34metadata_external", "GetAttributeInput2"], + "type": 9 + } + } + ], + "default": false, + "docs": [ + " Returns the attribute of `id` for the given `key`.", + "", + " If `id` is a collection id of the token, it returns attributes for collection." + ], + "label": "PSP34Metadata::get_attribute", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 26 + }, + "selector": "0xf19d48d1" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x1cc80634", + "ty": 0 + } + }, + "root_key": "0x1cc80634" + } + }, + "name": "token_owner" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x7e3fae6b", + "ty": 3 + } + }, + "root_key": "0x7e3fae6b" + } + }, + "name": "operator_approvals" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "enum": { + "dispatchKey": "0xca32a240", + "name": "Id", + "variants": { + "0": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 2 + } + }, + "name": "0" + } + ], + "name": "U8" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 4 + } + }, + "name": "0" + } + ], + "name": "U16" + }, + "2": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 5 + } + }, + "name": "0" + } + ], + "name": "U32" + }, + "3": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 6 + } + }, + "name": "0" + } + ], + "name": "U64" + }, + "4": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 7 + } + }, + "name": "0" + } + ], + "name": "U128" + }, + "5": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 8 + } + }, + "name": "0" + } + ], + "name": "Bytes" + } + } + } + }, + "root_key": "0xca32a240" + } + }, + "name": "enumerable" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Balances" + } + }, + "name": "balances" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Data" + } + }, + "name": "psp34" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x9b2d2382", + "ty": 9 + } + }, + "root_key": "0x9b2d2382" + } + }, + "name": "attributes" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Data" + } + }, + "name": "metadata" + } + ], + "name": "Contract" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 1, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { + "id": 1, + "type": { + "def": { + "array": { + "len": 32, + "type": 2 + } + } + } + }, + { + "id": 2, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 3, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u16" + } + } + }, + { + "id": 5, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 6, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 8, + "type": { + "def": { + "sequence": { + "type": 2 + } + } + } + }, + { + "id": 9, + "type": { + "def": { + "primitive": "str" + } + } + }, + { + "id": 10, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 12, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 7 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 7 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 13, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 5 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 5 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2, + "typeName": "u8" + } + ], + "index": 0, + "name": "U8" + }, + { + "fields": [ + { + "type": 4, + "typeName": "u16" + } + ], + "index": 1, + "name": "U16" + }, + { + "fields": [ + { + "type": 5, + "typeName": "u32" + } + ], + "index": 2, + "name": "U32" + }, + { + "fields": [ + { + "type": 6, + "typeName": "u64" + } + ], + "index": 3, + "name": "U64" + }, + { + "fields": [ + { + "type": 7, + "typeName": "u128" + } + ], + "index": 4, + "name": "U128" + }, + { + "fields": [ + { + "type": 8, + "typeName": "Vec" + } + ], + "index": 5, + "name": "Bytes" + } + ] + } + }, + "path": ["openbrush_contracts", "traits", "types", "Id"] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 16 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 16 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 0 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + } + ], + "path": ["Option"] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 14 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 14 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 14 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 14 + } + ], + "path": ["Option"] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 20 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 20 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 20, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 21, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 22 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 22 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 22, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 23 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 23 + } + ], + "path": ["Result"] + } + }, + { + "id": 23, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 9, + "typeName": "String" + } + ], + "index": 0, + "name": "Custom" + }, + { + "index": 1, + "name": "SelfApprove" + }, + { + "index": 2, + "name": "NotApproved" + }, + { + "index": 3, + "name": "TokenExists" + }, + { + "index": 4, + "name": "TokenNotExists" + }, + { + "fields": [ + { + "type": 9, + "typeName": "String" + } + ], + "index": 5, + "name": "SafeTransferCheckFailed" + } + ] + } + }, + "path": ["openbrush_contracts", "traits", "errors", "psp34", "PSP34Error"] + } + }, + { + "id": 24, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 25 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 25 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 25, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 14 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 23 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 14 + }, + { + "name": "E", + "type": 23 + } + ], + "path": ["Result"] + } + }, + { + "id": 26, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 27 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 27 + }, + { + "name": "E", + "type": 11 + } + ], + "path": ["Result"] + } + }, + { + "id": 27, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 9 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 9 + } + ], + "path": ["Option"] + } + }, + { + "id": 28, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 1, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { + "id": 29, + "type": { + "def": { + "variant": {} + }, + "path": ["ink_env", "types", "NoChainExtension"] + } + } + ], + "version": "4" +} diff --git a/packages/nft/src/generators/ink/index.ts b/packages/nft/src/generators/ink/index.ts new file mode 100644 index 000000000..b5166577d --- /dev/null +++ b/packages/nft/src/generators/ink/index.ts @@ -0,0 +1 @@ +export { createArtZeroNftsAsyncGenerator, createParasNftsAsyncGenerator } from './chains.js' diff --git a/packages/nft/src/generators/ink/psp34.ts b/packages/nft/src/generators/ink/psp34.ts new file mode 100644 index 000000000..3b6f1eaa4 --- /dev/null +++ b/packages/nft/src/generators/ink/psp34.ts @@ -0,0 +1,102 @@ +import { type ApiPromise } from '@polkadot/api' +import { u8aToString } from '@polkadot/util' +import { partition, range } from '@thi.ng/iterators' +import Psp34 from '../../../generated/ink/contracts/psp34.js' +import { type Id as ArgumentId } from '../../../generated/ink/types-arguments/psp34.js' +import { type Id } from '../../../generated/ink/types-returns/psp34.js' +import type { CreateNftAsyncGenerator, Nft } from '../../types.js' + +const stringFromId = (id: Id) => { + if (id.bytes !== undefined) { + // Generated type is wrong here, bytes can also be a string + return typeof id.bytes === 'string' ? id.bytes : u8aToString(new Uint8Array(id.bytes)) + } + + if (id.u128 !== undefined) { + return id.u128.rawNumber.toString() + } + + if (id.u16 !== undefined) { + return id.u16.toString() + } + + if (id.u32 !== undefined) { + return id.u32.toString() + } + + if (id.u64 !== undefined) { + return id.u64.toString() + } + + if (id.u8 !== undefined) { + return id.u8.toString() + } + + throw new Error(`Invalid ID: ${JSON.stringify(id)}`) +} + +const returnIdToArgumentId = (id: Id): ArgumentId => ({ ...id, u128: id.u128?.rawNumber }) + +export const createPsp34NftsAsyncGenerator: (options: { + chainId: T + api: ApiPromise + contractAddresses: string[] + getExternalLink: (contractAddress: string) => Array<{ name: string; url: string }> +}) => CreateNftAsyncGenerator> = ({ chainId, api, contractAddresses, getExternalLink }) => + async function* (address, { batchSize }) { + const contracts = contractAddresses.map(contractAddress => { + return new Psp34(contractAddress, {} as any, api) + }) + + const contractBalances = await Promise.all( + contracts.map(async x => [x, await x.query.balanceOf(address).then(x => x.value.ok)] as const) + ) + + const contractsWithNonZeroBalance = contractBalances.filter((x): x is [(typeof x)[0], number] => (x[1] ?? 0) > 0) + + for (const [contract, balance] of contractsWithNonZeroBalance) { + for (const tokenIndexes of partition(batchSize, batchSize, range(0, balance), true)) { + yield* await Promise.all( + tokenIndexes.map(async tokenIndex => { + const [tokenIdResult, collectionIdResult, totalSupplyResult] = await Promise.all([ + contract.query.ownersTokenByIndex(address, tokenIndex), + contract.query.collectionId(), + contract.query.totalSupply(), + ]) + + const tokenId = tokenIdResult.value.unwrap().unwrap() + const collectionId = collectionIdResult.value.unwrap() + const totalSupply = totalSupplyResult.value.unwrap() + + const [collectionNameResult, tokenNameResult] = await Promise.all([ + contract.query.getAttribute(returnIdToArgumentId(collectionId), 'name'), + contract.query.getAttribute(returnIdToArgumentId(tokenId), 'name'), + ]) + + const collectionName = collectionNameResult.value.ok ?? undefined + const tokenName = tokenNameResult.value.ok ?? undefined + + const type = 'psp34' as const + + return { + type, + chain: chainId, + id: `${type}-${chainId}-${stringFromId(collectionId)}-${stringFromId(tokenId)}`, + name: tokenName, + description: undefined, + media: undefined, + thumbnail: undefined, + serialNumber: BigInt(stringFromId(tokenId)), + properties: undefined, + externalLinks: getExternalLink(contract.address), + collection: { + id: stringFromId(collectionId), + name: collectionName, + totalSupply: BigInt(totalSupply.rawNumber.toString()), + }, + } + }) + ) + } + } + } diff --git a/packages/nft/src/generators/orml/index.ts b/packages/nft/src/generators/orml/index.ts index 89794f22c..65fbe1879 100644 --- a/packages/nft/src/generators/orml/index.ts +++ b/packages/nft/src/generators/orml/index.ts @@ -22,8 +22,8 @@ export const createAcalaNftAsyncGenerator = createOrmlNftAsyncGenerator({ return } - return fetch(new URL(ipfsCid.toString() + '/metadata.json', 'https://talisman.mypinata.cloud/ipfs/')).then(res => - res.json() + return await fetch(new URL(ipfsCid.toString() + '/metadata.json', 'https://talisman.mypinata.cloud/ipfs/')).then( + async res => await res.json() ) }, getExternalLinks: (_, __) => [{ name: 'Acala', url: 'https://apps.acala.network/' }], @@ -36,16 +36,16 @@ export const createBitCountryNftAsyncGenerator = createOrmlNftAsyncGenerator({ const ipfsCid = parseCid(metadata) if (!ipfsCid) { - return fetch( - `https://pioneer-api.bit.country/metadata/landTokenUriPioneer/${classId}/${tokenId}/metadata.json` - ).then(x => x.json()) + return await fetch( + `https://pioneer-api.bit.country/metadata/landTokenUriPioneer/${classId.toString()}/${tokenId.toString()}/metadata.json` + ).then(async x => await x.json()) } - return fetch(new URL(ipfsCid.toString(), 'https://ipfs-cdn.bit.country')) - .then(res => res.json()) - .then(x => ({ ...x, image: x.image_url ? `https://ipfs-cdn.bit.country/${x.image_url}` : undefined })) + return await fetch(new URL(ipfsCid.toString(), 'https://ipfs-cdn.bit.country')) + .then(async res => await res.json()) + .then(x => ({ ...x, image: x.image_url ? `https://ipfs-cdn.bit.country/${x.image_url as string}` : undefined })) }, getExternalLinks: (classId, __) => [ - { name: 'Pioneer', url: `https://pioneer.bit.country/marketplace/browse?collection=${classId}` }, + { name: 'Pioneer', url: `https://pioneer.bit.country/marketplace/browse?collection=${classId.toString()}` }, ], }) diff --git a/packages/nft/src/generators/orml/orml.ts b/packages/nft/src/generators/orml/orml.ts index 9fa7d45d4..c9076c1e2 100644 --- a/packages/nft/src/generators/orml/orml.ts +++ b/packages/nft/src/generators/orml/orml.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ import '@acala-network/types/index.js' import '@acala-network/types/lookup/types-acala.js' import { ApiPromise } from '@polkadot/api' @@ -75,13 +76,13 @@ export const createOrmlNftAsyncGenerator = ({ description: tokenMetadata?.name || classMetadata?.name, media: tokenMetadata?.image || classMetadata?.image, thumbnail: tokenMetadata?.image || classMetadata?.image, - serialNumber: tokenId.toNumber(), + serialNumber: tokenId.toBigInt(), properties: undefined, externalLinks: getExternalLink(classId, tokenId), collection: { id: classId.toString(), name: classMetadata?.name, - totalSupply: ormlNftClass.totalIssuance.toNumber(), + totalSupply: ormlNftClass.totalIssuance.toBigInt(), }, } }) diff --git a/packages/nft/src/generators/rmrk2.ts b/packages/nft/src/generators/rmrk2.ts index 881dd6799..d7307a7b8 100644 --- a/packages/nft/src/generators/rmrk2.ts +++ b/packages/nft/src/generators/rmrk2.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */ import '@polkadot/api-augment/substrate' import { encodeAddress } from '@polkadot/util-crypto' import { request } from 'graphql-request' @@ -62,7 +63,7 @@ export const createRmrk2NftAsyncGenerator: CreateNftAsyncGenerator => - fetch( +const fetchIpfsMetadata = async (metadata: string): Promise => + await fetch( new URL( // Some metadata are corrupted and contains an actual IPFS link metadata.replace('ipfs://ipfs/', ''), 'https://talisman.mypinata.cloud/ipfs/' ) - ).then(res => res.json()) + ).then(async res => await res.json()) export const createStatemineNftAsyncGenerator: CreateNftAsyncGenerator> = async function* (address, { batchSize }) { diff --git a/packages/nft/src/types.ts b/packages/nft/src/types.ts index 7e549dc89..66f874f37 100644 --- a/packages/nft/src/types.ts +++ b/packages/nft/src/types.ts @@ -6,21 +6,22 @@ export type Nft = { description: string | undefined media: string | undefined thumbnail: string | undefined - serialNumber: number | undefined + serialNumber: number | bigint | undefined properties: Record | undefined externalLinks: Array<{ name: string; url: string }> | undefined collection: | { id: string name: string | undefined - totalSupply: number | undefined + totalSupply: number | bigint | undefined } | undefined } -export type CreateNftAsyncGenerator> = { - (address: string, options: { batchSize: number }): AsyncGenerator -} +export type CreateNftAsyncGenerator> = ( + address: string, + options: { batchSize: number } +) => AsyncGenerator export type IpfsMetadata = { name: string diff --git a/packages/nft/tsconfig.codegen.json b/packages/nft/tsconfig.codegen.json index d111b1aac..a7958fdb8 100644 --- a/packages/nft/tsconfig.codegen.json +++ b/packages/nft/tsconfig.codegen.json @@ -1,9 +1,12 @@ { - "extends": "@talismn/tsconfig/library", "compilerOptions": { "composite": true, + "target": "ESNext", + "moduleResolution": "nodenext", "outDir": "build", - "verbatimModuleSyntax": false + "resolveJsonModule": true, + "skipLibCheck": true, + "esModuleInterop": true }, - "include": ["generated"] + "include": ["generated", "generated/**/*.json"] } diff --git a/packages/tsconfig/library.json b/packages/tsconfig/library.json index c7b014083..e4380eef4 100644 --- a/packages/tsconfig/library.json +++ b/packages/tsconfig/library.json @@ -5,6 +5,7 @@ "target": "ESNext", "moduleResolution": "nodenext", "skipLibCheck": true, - "declaration": true + "declaration": true, + "exactOptionalPropertyTypes": false } } diff --git a/yarn.lock b/yarn.lock index 13f9573c3..3402b74f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,57 @@ __metadata: version: 6 cacheKey: 8 +"@727-ventures/typechain-polkadot-parser@npm:1.0.1": + version: 1.0.1 + resolution: "@727-ventures/typechain-polkadot-parser@npm:1.0.1" + dependencies: + "@polkadot/api": ^10.8.1 + "@polkadot/api-contract": ^10.8.1 + "@types/bn.js": ^5.1.0 + "@types/node": ^18.0.3 + camelcase: ^6.3.0 + typescript: ^4.7.4 + checksum: 7e99bc0be75817fe662ee2e3096864749fdc2dfa094862de1599d9e7b680b483507dfa7ecfe46778bcd6ade3c7f2b11b7cba65efcbce22ba90b3c66786fda11c + languageName: node + linkType: hard + +"@727-ventures/typechain-polkadot@npm:^1.1.0": + version: 1.1.0 + resolution: "@727-ventures/typechain-polkadot@npm:1.1.0" + dependencies: + "@727-ventures/typechain-polkadot-parser": 1.0.1 + "@polkadot/api": ^10.8.1 + "@polkadot/api-contract": ^10.8.1 + "@polkadot/keyring": ^12.2.2 + "@types/fs-extra": ^9.0.13 + "@types/node": ^18.11.18 + "@types/yargs": ^17.0.10 + camelcase: ^6.3.0 + eslint: ^8.18.0 + fs-extra: ^9.1.0 + handlebars: ^4.7.7 + prettier: ^2.7.1 + ts-node: ^10.7.0 + yargs: ^17.5.1 + bin: + typechain-polkadot: bin/index.js + checksum: 3d02099112d6bfb00321603eece740439593bcaddc7159d8957080f8922879fe663e13cb790ba47d75a66260155601a9a7881ab0170fbaa66464530e86fe0517 + languageName: node + linkType: hard + +"@727-ventures/typechain-types@npm:^1.1.0": + version: 1.1.0 + resolution: "@727-ventures/typechain-types@npm:1.1.0" + dependencies: + "@polkadot/api": ^10.8.1 + "@polkadot/api-contract": ^10.8.1 + "@types/bn.js": ^5.1.0 + "@types/node": ^18.0.3 + camelcase: ^6.3.0 + checksum: 65c8b14660dd788600f6581fb1267385116cea468006b667bbde78f4e7fb4d989a266f15c5bc6ae79d5b1e6daaaa3afa45350a2262446b87f9273547fbc74837 + languageName: node + linkType: hard + "@acala-network/api-derive@npm:5.1.1": version: 5.1.1 resolution: "@acala-network/api-derive@npm:5.1.1" @@ -2363,6 +2414,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^2.0.3": + version: 2.0.3 + resolution: "@eslint/eslintrc@npm:2.0.3" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.5.2 + globals: ^13.19.0 + ignore: ^5.2.0 + import-fresh: ^3.2.1 + js-yaml: ^4.1.0 + minimatch: ^3.1.2 + strip-json-comments: ^3.1.1 + checksum: ddc51f25f8524d8231db9c9bf03177e503d941a332e8d5ce3b10b09241be4d5584a378a529a27a527586bfbccf3031ae539eb891352033c340b012b4d0c81d92 + languageName: node + linkType: hard + "@eslint/js@npm:8.39.0": version: 8.39.0 resolution: "@eslint/js@npm:8.39.0" @@ -2370,6 +2438,13 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:8.42.0": + version: 8.42.0 + resolution: "@eslint/js@npm:8.42.0" + checksum: 750558843ac458f7da666122083ee05306fc087ecc1e5b21e7e14e23885775af6c55bcc92283dff1862b7b0d8863ec676c0f18c7faf1219c722fe91a8ece56b6 + languageName: node + linkType: hard + "@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/abi@npm:5.7.0" @@ -3563,6 +3638,17 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/config-array@npm:^0.11.10": + version: 0.11.10 + resolution: "@humanwhocodes/config-array@npm:0.11.10" + dependencies: + "@humanwhocodes/object-schema": ^1.2.1 + debug: ^4.1.1 + minimatch: ^3.0.5 + checksum: 1b1302e2403d0e35bc43e66d67a2b36b0ad1119efc704b5faff68c41f791a052355b010fb2d27ef022670f550de24cd6d08d5ecf0821c16326b7dcd0ee5d5d8a + languageName: node + linkType: hard + "@humanwhocodes/config-array@npm:^0.11.8": version: 0.11.8 resolution: "@humanwhocodes/config-array@npm:0.11.8" @@ -4157,6 +4243,23 @@ __metadata: languageName: node linkType: hard +"@polkadot/api-contract@npm:10.9.1": + version: 10.9.1 + resolution: "@polkadot/api-contract@npm:10.9.1" + dependencies: + "@polkadot/api": 10.9.1 + "@polkadot/api-augment": 10.9.1 + "@polkadot/types": 10.9.1 + "@polkadot/types-codec": 10.9.1 + "@polkadot/types-create": 10.9.1 + "@polkadot/util": ^12.3.1 + "@polkadot/util-crypto": ^12.3.1 + rxjs: ^7.8.1 + tslib: ^2.5.3 + checksum: 2a4b4818e5fd4ef1b385a0ad1144d986b449b531c278ccc3a441770c1e95a2fd24cd5da401d56040dcd594254e2a5c2e4a09a9de5827ee8bb951e3aad9558bed + languageName: node + linkType: hard + "@polkadot/api-derive@npm:10.9.1": version: 10.9.1 resolution: "@polkadot/api-derive@npm:10.9.1" @@ -4296,7 +4399,7 @@ __metadata: languageName: node linkType: hard -"@polkadot/keyring@npm:^12.3.1": +"@polkadot/keyring@npm:^12.2.2, @polkadot/keyring@npm:^12.3.1": version: 12.3.2 resolution: "@polkadot/keyring@npm:12.3.2" dependencies: @@ -7262,9 +7365,12 @@ __metadata: version: 0.0.0-use.local resolution: "@talismn/nft@workspace:packages/nft" dependencies: + "@727-ventures/typechain-polkadot": ^1.1.0 + "@727-ventures/typechain-types": ^1.1.0 "@acala-network/types": ^5.1.1 "@graphql-codegen/cli": ^3.2.2 "@polkadot/api": ^10.9.1 + "@thi.ng/iterators": ^6.1.50 graphql: ^16.6.0 graphql-request: ^5.2.0 multiformats: ^11.0.2 @@ -7555,6 +7661,139 @@ __metadata: languageName: node linkType: hard +"@thi.ng/api@npm:^8.8.2": + version: 8.8.2 + resolution: "@thi.ng/api@npm:8.8.2" + checksum: 9df7e7a9897cdee02751a8d9fbfb072bb6b1e90e6e2cb57de5b735c088b8f4fdb5c0769a32f7e4c9caee7d8c75b5976882185682d3f5e1d0fc56b45e846519f3 + languageName: node + linkType: hard + +"@thi.ng/arrays@npm:^2.5.13": + version: 2.5.13 + resolution: "@thi.ng/arrays@npm:2.5.13" + dependencies: + "@thi.ng/api": ^8.8.2 + "@thi.ng/checks": ^3.3.14 + "@thi.ng/compare": ^2.1.32 + "@thi.ng/equiv": ^2.1.24 + "@thi.ng/errors": ^2.2.17 + "@thi.ng/random": ^3.4.2 + checksum: 299e8c9b87e22fe6a795322736588755161012421c056fb28e0c0b6046318b2ac452d29ff110a2b2cf731d21eb009aad4d2ef7c6c95fabfcded3527e52f3da0e + languageName: node + linkType: hard + +"@thi.ng/checks@npm:^3.3.14": + version: 3.3.14 + resolution: "@thi.ng/checks@npm:3.3.14" + dependencies: + tslib: ^2.5.3 + checksum: 4a3801175ee697813600c296761523f018b479c05ff6fdc03ff6662db6c7acabe2818063e129111857505c4fa0b608cbaf532f2101ea56d9527117b70ab675d5 + languageName: node + linkType: hard + +"@thi.ng/compare@npm:^2.1.32": + version: 2.1.32 + resolution: "@thi.ng/compare@npm:2.1.32" + dependencies: + "@thi.ng/api": ^8.8.2 + checksum: d82f378ff956d35adc3d92a792a682ba8c9ca2ecb64f492bfcccff28ab0982f332b0eb4496bdb972d72cfaa2b79b884d5cd02b4408e1e60c4e3641130ae7fbe4 + languageName: node + linkType: hard + +"@thi.ng/compose@npm:^2.1.34": + version: 2.1.34 + resolution: "@thi.ng/compose@npm:2.1.34" + dependencies: + "@thi.ng/api": ^8.8.2 + "@thi.ng/errors": ^2.2.17 + checksum: 3183d76684fe50f0443effef8fd0e87cd8c2dc648275be9a97a5fa4979948e77f5a660d23577837cbe8bbf7ec07016e9a3fa018dc593214b13f3ac0dd7ae49a5 + languageName: node + linkType: hard + +"@thi.ng/dcons@npm:^3.2.45": + version: 3.2.45 + resolution: "@thi.ng/dcons@npm:3.2.45" + dependencies: + "@thi.ng/api": ^8.8.2 + "@thi.ng/checks": ^3.3.14 + "@thi.ng/compare": ^2.1.32 + "@thi.ng/equiv": ^2.1.24 + "@thi.ng/errors": ^2.2.17 + "@thi.ng/random": ^3.4.2 + "@thi.ng/transducers": ^8.4.6 + checksum: 64fcb775c7de21a9aa828302be297d85d3fcde62be50768f000da265bd4778184b642e0070166ba44b306aebe54ab11863399fa83b420abc2d999b2f8028f062 + languageName: node + linkType: hard + +"@thi.ng/equiv@npm:^2.1.24": + version: 2.1.24 + resolution: "@thi.ng/equiv@npm:2.1.24" + checksum: cfdf7f5f6c60f1c1cbad625c51ad3ab49b96d95e3b3ff414a425dce46bfa5386eaf72ae90b4babf8ac91b75220037e7fc2b6510b7f73dd9d47d08bf1410a9c35 + languageName: node + linkType: hard + +"@thi.ng/errors@npm:^2.2.17": + version: 2.2.17 + resolution: "@thi.ng/errors@npm:2.2.17" + checksum: 3ad87cb5d04d811bf69c1caefd2443e8c0327014f028e989fef4ee30c2cce831066487a4773ec078b61298a7d6395a4c3b3dcd1de9d14e56fc03b4fab2142bef + languageName: node + linkType: hard + +"@thi.ng/hex@npm:^2.3.11": + version: 2.3.11 + resolution: "@thi.ng/hex@npm:2.3.11" + checksum: 2594000633455a54daa548710ef4fea06876769563737ee9bc17ffb0de3b4663568935940e9083aca07364c64f123c2fc294a653af6571020ccd2acff17bd479 + languageName: node + linkType: hard + +"@thi.ng/iterators@npm:^6.1.50": + version: 6.1.50 + resolution: "@thi.ng/iterators@npm:6.1.50" + dependencies: + "@thi.ng/api": ^8.8.2 + "@thi.ng/dcons": ^3.2.45 + "@thi.ng/errors": ^2.2.17 + checksum: c94d2f4726c7c3a6891e670d6d0c3eb921d202babeeed44b14937612a653013db53b2e0ba58dc7a4c8a1903ad32c386da1453f43b9e38a59be1654a51f90e865 + languageName: node + linkType: hard + +"@thi.ng/math@npm:^5.4.11": + version: 5.4.11 + resolution: "@thi.ng/math@npm:5.4.11" + dependencies: + "@thi.ng/api": ^8.8.2 + checksum: 96f2cc6355965ca08d465300bc5332b8d79bd9ed38f319892d02963bfdba2e21e0638b6f4bfe7e9928a2a706b20b5ad7f48d2dcf6755d1701d507537598e2943 + languageName: node + linkType: hard + +"@thi.ng/random@npm:^3.4.2": + version: 3.4.2 + resolution: "@thi.ng/random@npm:3.4.2" + dependencies: + "@thi.ng/api": ^8.8.2 + "@thi.ng/checks": ^3.3.14 + "@thi.ng/errors": ^2.2.17 + "@thi.ng/hex": ^2.3.11 + checksum: 3b10d77dd04a3588ce463b1b689549cbe8528ec3b110099b5fc36581d39fcb54aa0476b13ef8f388692861af542a44538863a800eb289ce7c940a3d14ddef9e7 + languageName: node + linkType: hard + +"@thi.ng/transducers@npm:^8.4.6": + version: 8.4.6 + resolution: "@thi.ng/transducers@npm:8.4.6" + dependencies: + "@thi.ng/api": ^8.8.2 + "@thi.ng/arrays": ^2.5.13 + "@thi.ng/checks": ^3.3.14 + "@thi.ng/compare": ^2.1.32 + "@thi.ng/compose": ^2.1.34 + "@thi.ng/errors": ^2.2.17 + "@thi.ng/math": ^5.4.11 + "@thi.ng/random": ^3.4.2 + checksum: c2edc403fae393a605b7ecd324883ae43a8442e26dd2ecac7776cfae566a4bbb009b409531100782200cec686dec351cfa2d9e4f832e92ddc1f007da122a2638 + languageName: node + linkType: hard + "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -7861,6 +8100,15 @@ __metadata: languageName: node linkType: hard +"@types/fs-extra@npm:^9.0.13": + version: 9.0.13 + resolution: "@types/fs-extra@npm:9.0.13" + dependencies: + "@types/node": "*" + checksum: add79e212acd5ac76b97b9045834e03a7996aef60a814185e0459088fd290519a3c1620865d588fa36c4498bf614210d2a703af5cf80aa1dbc125db78f6edac3 + languageName: node + linkType: hard + "@types/glob@npm:^7.1.3": version: 7.2.0 resolution: "@types/glob@npm:7.2.0" @@ -8053,6 +8301,13 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^18.0.3, @types/node@npm:^18.11.18": + version: 18.16.18 + resolution: "@types/node@npm:18.16.18" + checksum: d32d8a0a04cd3f5ecb361bcb42f3a07623881ac90d680e06bf626defb3c663a94860d11690babe607cfe67265eceeb8a59ba5fe40c0e49f5a1b01e0088640469 + languageName: node + linkType: hard + "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -8250,7 +8505,7 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^17.0.8": +"@types/yargs@npm:^17.0.10, @types/yargs@npm:^17.0.8": version: 17.0.24 resolution: "@types/yargs@npm:17.0.24" dependencies: @@ -9247,6 +9502,13 @@ __metadata: languageName: node linkType: hard +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e + languageName: node + linkType: hard + "auto-bind@npm:~4.0.0": version: 4.0.0 resolution: "auto-bind@npm:4.0.0" @@ -13081,6 +13343,55 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^8.18.0": + version: 8.42.0 + resolution: "eslint@npm:8.42.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.4.0 + "@eslint/eslintrc": ^2.0.3 + "@eslint/js": 8.42.0 + "@humanwhocodes/config-array": ^0.11.10 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.2.0 + eslint-visitor-keys: ^3.4.1 + espree: ^9.5.2 + esquery: ^1.4.2 + esutils: ^2.0.2 + fast-deep-equal: ^3.1.3 + file-entry-cache: ^6.0.1 + find-up: ^5.0.0 + glob-parent: ^6.0.2 + globals: ^13.19.0 + graphemer: ^1.4.0 + ignore: ^5.2.0 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + is-path-inside: ^3.0.3 + js-yaml: ^4.1.0 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash.merge: ^4.6.2 + minimatch: ^3.1.2 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + strip-ansi: ^6.0.1 + strip-json-comments: ^3.1.0 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: 07105397b5f2ff4064b983b8971e8c379ec04b1dfcc9d918976b3e00377189000161dac991d82ba14f8759e466091b8c71146f602930ca810c290ee3fcb3faf0 + languageName: node + linkType: hard + "eslint@npm:^8.33.0, eslint@npm:^8.37.0, eslint@npm:^8.39.0": version: 8.39.0 resolution: "eslint@npm:8.39.0" @@ -13986,6 +14297,18 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^9.1.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: ^1.0.0 + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 + languageName: node + linkType: hard + "fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -22446,7 +22769,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.8.1, ts-node@npm:^10.9.1": +"ts-node@npm:^10.7.0, ts-node@npm:^10.8.1, ts-node@npm:^10.9.1": version: 10.9.1 resolution: "ts-node@npm:10.9.1" dependencies: @@ -24279,6 +24602,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.5.1": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: ^8.0.1 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.3 + y18n: ^5.0.5 + yargs-parser: ^21.1.1 + checksum: 73b572e863aa4a8cbef323dd911d79d193b772defd5a51aab0aca2d446655216f5002c42c5306033968193bdbf892a7a4c110b0d77954a7fdf563e653967b56a + languageName: node + linkType: hard + "yauzl@npm:^2.10.0": version: 2.10.0 resolution: "yauzl@npm:2.10.0" From 0d22b8d2285cb5fc5a7774ed102118f3fab48b04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ti=E1=BA=BFn=20Nguy=E1=BB=85n=20Kh=E1=BA=AFc?= Date: Fri, 23 Jun 2023 22:22:54 +1200 Subject: [PATCH 2/3] feat: support ArtZero & Paras made up token URI protocol --- packages/nft/src/generators/ink/psp34.ts | 62 +++++++++++++++++------- 1 file changed, 44 insertions(+), 18 deletions(-) diff --git a/packages/nft/src/generators/ink/psp34.ts b/packages/nft/src/generators/ink/psp34.ts index 3b6f1eaa4..c3e5d18db 100644 --- a/packages/nft/src/generators/ink/psp34.ts +++ b/packages/nft/src/generators/ink/psp34.ts @@ -55,26 +55,52 @@ export const createPsp34NftsAsyncGenerator: (options: { const contractsWithNonZeroBalance = contractBalances.filter((x): x is [(typeof x)[0], number] => (x[1] ?? 0) > 0) for (const [contract, balance] of contractsWithNonZeroBalance) { + const collectionIdPromise = contract.query.collectionId() + const totalSupplyPromise = contract.query.totalSupply() + const collectionNamePromise = collectionIdPromise.then(idResult => + contract.query.getAttribute(returnIdToArgumentId(idResult.value.unwrap()), 'name') + ) + + // NOTE: Paras & ArtZero fuckery + // need to remove support for both when better PSP34 collections are available + const baseUriPromise = Promise.all([ + collectionIdPromise.then(idResult => + contract.query.getAttribute(returnIdToArgumentId(idResult.value.unwrap()), 'baseUri') + ), + contract.query.getAttribute(returnIdToArgumentId({ u8: 0 }), 'baseURI'), + ]).then( + ([collectionBaseUrl, madeUpZeroIdCollectionBaseUri]) => + collectionBaseUrl.value.ok ?? madeUpZeroIdCollectionBaseUri.value.ok + ) + for (const tokenIndexes of partition(batchSize, batchSize, range(0, balance), true)) { yield* await Promise.all( tokenIndexes.map(async tokenIndex => { - const [tokenIdResult, collectionIdResult, totalSupplyResult] = await Promise.all([ - contract.query.ownersTokenByIndex(address, tokenIndex), - contract.query.collectionId(), - contract.query.totalSupply(), - ]) - + const tokenIdResult = await contract.query.ownersTokenByIndex(address, tokenIndex) const tokenId = tokenIdResult.value.unwrap().unwrap() - const collectionId = collectionIdResult.value.unwrap() - const totalSupply = totalSupplyResult.value.unwrap() - const [collectionNameResult, tokenNameResult] = await Promise.all([ - contract.query.getAttribute(returnIdToArgumentId(collectionId), 'name'), - contract.query.getAttribute(returnIdToArgumentId(tokenId), 'name'), + const tokenNameResult = await contract.query.getAttribute(returnIdToArgumentId(tokenId), 'name') + const tokenName = tokenNameResult.value.ok ?? undefined + + const [collectionId, totalSupply, collectionName, baseUri] = await Promise.all([ + collectionIdPromise.then(x => x.value.unwrap()), + totalSupplyPromise.then(x => x.value.unwrap()), + collectionNamePromise.then(x => x.value.ok), + baseUriPromise, ]) - const collectionName = collectionNameResult.value.ok ?? undefined - const tokenName = tokenNameResult.value.ok ?? undefined + const metadata = !baseUri + ? undefined + : await fetch( + new URL( + 'ipfs/' + + baseUri.replace('ipfs://', '').replaceAll('ipfs', '').replaceAll('/', '') + + `/${stringFromId(tokenId)}.json`, + 'https://talisman.mypinata.cloud' + ) + ) + .then(x => x.json()) + .catch(() => undefined) const type = 'psp34' as const @@ -82,16 +108,16 @@ export const createPsp34NftsAsyncGenerator: (options: { type, chain: chainId, id: `${type}-${chainId}-${stringFromId(collectionId)}-${stringFromId(tokenId)}`, - name: tokenName, - description: undefined, - media: undefined, - thumbnail: undefined, + name: tokenName || metadata?.name, + description: metadata?.description, + media: metadata?.image, + thumbnail: metadata?.image, serialNumber: BigInt(stringFromId(tokenId)), properties: undefined, externalLinks: getExternalLink(contract.address), collection: { id: stringFromId(collectionId), - name: collectionName, + name: collectionName ?? undefined, totalSupply: BigInt(totalSupply.rawNumber.toString()), }, } From 43cd0178271be7a3eb3fb5ca4059fcaec2463b7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ti=E1=BA=BFn=20Nguy=E1=BB=85n=20Kh=E1=BA=AFc?= Date: Mon, 3 Jul 2023 21:11:48 +1200 Subject: [PATCH 3/3] chore: update yarn.lock --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 3402b74f2..ea064e1a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19820,7 +19820,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.8.0, prettier@npm:^2.8.6, prettier@npm:^2.8.7, prettier@npm:^2.8.8": +"prettier@npm:^2.7.1, prettier@npm:^2.8.0, prettier@npm:^2.8.6, prettier@npm:^2.8.7, prettier@npm:^2.8.8": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: