From be8bec59c12eabb92aac0728410f95a44ee869d7 Mon Sep 17 00:00:00 2001 From: Ben King <9087625+benfdking@users.noreply.github.com> Date: Mon, 22 Apr 2024 16:12:01 +0100 Subject: [PATCH] feat: moving to open source first --- .github/workflows/pr.yml | 48 +- .github/workflows/release.yml | 2 +- .gitignore | 4 + .idea/quary.iml | 3 + buf.gen.yaml | 13 - .../quary/service/v1/cli_rpc_calls_connect.ts | 71 - .../es/quary/service/v1/cli_rpc_calls_pb.ts | 431 - .../quary/service/v1/column_description_pb.ts | 57 - .../quary/service/v1/connection_config_pb.ts | 447 - proto/gen/es/quary/service/v1/file_pb.ts | 90 - proto/gen/es/quary/service/v1/position_pb.ts | 53 - .../gen/es/quary/service/v1/project_dag_pb.ts | 140 - .../es/quary/service/v1/project_file_pb.ts | 487 - proto/gen/es/quary/service/v1/project_pb.ts | 84 - .../es/quary/service/v1/query_result_pb.ts | 96 - proto/gen/es/quary/service/v1/range_pb.ts | 54 - .../es/quary/service/v1/table_address_pb.ts | 53 - proto/gen/es/quary/service/v1/table_pb.ts | 473 - .../gen/es/quary/service/v1/test_result_pb.ts | 315 - .../es/quary/service/v1/test_results_pb.ts | 49 - .../gen/es/quary/service/v1/test_runner_pb.ts | 37 - proto/gen/es/quary/service/v1/types_pb.ts | 1205 --- proto/gen/json_schema/ColumnDescription.json | 25 - proto/gen/json_schema/ColumnTest.json | 22 - proto/gen/json_schema/ConnectionConfig.json | 151 - proto/gen/json_schema/DatabaseSource.json | 26 - proto/gen/json_schema/Edge.json | 19 - proto/gen/json_schema/ExecRequest.json | 16 - proto/gen/json_schema/ExecResponse.json | 11 - proto/gen/json_schema/Failed.json | 98 - proto/gen/json_schema/FailedRunResults.json | 50 - proto/gen/json_schema/File.json | 22 - proto/gen/json_schema/FileSystem.json | 36 - proto/gen/json_schema/InferredChain.json | 19 - .../InferredChainWithOperation.json | 22 - proto/gen/json_schema/ListColumnsRequest.json | 16 - .../gen/json_schema/ListColumnsResponse.json | 19 - proto/gen/json_schema/ListSourcesRequest.json | 11 - .../gen/json_schema/ListSourcesResponse.json | 107 - proto/gen/json_schema/ListTablesRequest.json | 11 - proto/gen/json_schema/ListTablesResponse.json | 33 - proto/gen/json_schema/ListViewsRequest.json | 11 - proto/gen/json_schema/ListViewsResponse.json | 33 - proto/gen/json_schema/Model.json | 61 - proto/gen/json_schema/ModelTest.json | 22 - proto/gen/json_schema/Node.json | 19 - proto/gen/json_schema/Passed.json | 59 - proto/gen/json_schema/Position.json | 20 - proto/gen/json_schema/Project.json | 844 -- proto/gen/json_schema/ProjectDag.json | 52 - proto/gen/json_schema/ProjectFile.json | 203 - proto/gen/json_schema/ProjectFileColumn.json | 42 - proto/gen/json_schema/ProjectFileSource.json | 94 - proto/gen/json_schema/QueryRequest.json | 16 - proto/gen/json_schema/QueryResponse.json | 50 - proto/gen/json_schema/QueryResult.json | 39 - proto/gen/json_schema/QueryResultColumn.json | 25 - proto/gen/json_schema/Range.json | 36 - proto/gen/json_schema/Row.json | 116 - proto/gen/json_schema/RowDescription.json | 44 - proto/gen/json_schema/RowTest.json | 57 - proto/gen/json_schema/RowTestDetails.json | 37 - proto/gen/json_schema/Seed.json | 22 - proto/gen/json_schema/Snapshot.json | 67 - proto/gen/json_schema/Source.json | 52 - proto/gen/json_schema/Table.json | 179 - proto/gen/json_schema/TableAddress.json | 20 - proto/gen/json_schema/Test.json | 271 - proto/gen/json_schema/TestAcceptedValues.json | 31 - proto/gen/json_schema/TestGreaterThan.json | 28 - .../json_schema/TestGreaterThanOrEqual.json | 28 - proto/gen/json_schema/TestLessThan.json | 28 - .../gen/json_schema/TestLessThanOrEqual.json | 28 - .../json_schema/TestMultiColumnUnique.json | 28 - proto/gen/json_schema/TestNotNull.json | 25 - proto/gen/json_schema/TestRelationship.json | 34 - proto/gen/json_schema/TestResult.json | 144 - proto/gen/json_schema/TestResults.json | 158 - proto/gen/json_schema/TestRunner.json | 20 - proto/gen/json_schema/TestSQLFile.json | 22 - proto/gen/json_schema/TestUnique.json | 25 - proto/gen/json_schema/Var.json | 19 - proto/gen/rust/Cargo.toml | 14 - proto/gen/rust/src/lib.rs | 3124 ------ proto/gen/rust/src/quary.service.v1.serde.rs | 9562 ----------------- proto/gen/ts/google/protobuf/empty.ts | 72 - .../gen/ts/quary/service/v1/cli_rpc_calls.ts | 783 -- .../ts/quary/service/v1/column_description.ts | 135 - .../ts/quary/service/v1/connection_config.ts | 965 -- proto/gen/ts/quary/service/v1/file.ts | 310 - proto/gen/ts/quary/service/v1/position.ts | 120 - proto/gen/ts/quary/service/v1/project.ts | 816 -- proto/gen/ts/quary/service/v1/project_dag.ts | 278 - proto/gen/ts/quary/service/v1/project_file.ts | 1175 -- proto/gen/ts/quary/service/v1/query_result.ts | 199 - proto/gen/ts/quary/service/v1/range.ts | 104 - proto/gen/ts/quary/service/v1/table.ts | 1042 -- .../gen/ts/quary/service/v1/table_address.ts | 120 - proto/gen/ts/quary/service/v1/test_result.ts | 672 -- proto/gen/ts/quary/service/v1/test_results.ts | 102 - proto/gen/ts/quary/service/v1/test_runner.ts | 44 - proto/gen/ts/quary/service/v1/types.ts | 2590 ----- 102 files changed, 40 insertions(+), 30222 deletions(-) delete mode 100644 proto/gen/es/quary/service/v1/cli_rpc_calls_connect.ts delete mode 100644 proto/gen/es/quary/service/v1/cli_rpc_calls_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/column_description_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/connection_config_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/file_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/position_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/project_dag_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/project_file_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/project_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/query_result_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/range_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/table_address_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/table_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/test_result_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/test_results_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/test_runner_pb.ts delete mode 100644 proto/gen/es/quary/service/v1/types_pb.ts delete mode 100644 proto/gen/json_schema/ColumnDescription.json delete mode 100644 proto/gen/json_schema/ColumnTest.json delete mode 100644 proto/gen/json_schema/ConnectionConfig.json delete mode 100644 proto/gen/json_schema/DatabaseSource.json delete mode 100644 proto/gen/json_schema/Edge.json delete mode 100644 proto/gen/json_schema/ExecRequest.json delete mode 100644 proto/gen/json_schema/ExecResponse.json delete mode 100644 proto/gen/json_schema/Failed.json delete mode 100644 proto/gen/json_schema/FailedRunResults.json delete mode 100644 proto/gen/json_schema/File.json delete mode 100644 proto/gen/json_schema/FileSystem.json delete mode 100644 proto/gen/json_schema/InferredChain.json delete mode 100644 proto/gen/json_schema/InferredChainWithOperation.json delete mode 100644 proto/gen/json_schema/ListColumnsRequest.json delete mode 100644 proto/gen/json_schema/ListColumnsResponse.json delete mode 100644 proto/gen/json_schema/ListSourcesRequest.json delete mode 100644 proto/gen/json_schema/ListSourcesResponse.json delete mode 100644 proto/gen/json_schema/ListTablesRequest.json delete mode 100644 proto/gen/json_schema/ListTablesResponse.json delete mode 100644 proto/gen/json_schema/ListViewsRequest.json delete mode 100644 proto/gen/json_schema/ListViewsResponse.json delete mode 100644 proto/gen/json_schema/Model.json delete mode 100644 proto/gen/json_schema/ModelTest.json delete mode 100644 proto/gen/json_schema/Node.json delete mode 100644 proto/gen/json_schema/Passed.json delete mode 100644 proto/gen/json_schema/Position.json delete mode 100644 proto/gen/json_schema/Project.json delete mode 100644 proto/gen/json_schema/ProjectDag.json delete mode 100644 proto/gen/json_schema/ProjectFile.json delete mode 100644 proto/gen/json_schema/ProjectFileColumn.json delete mode 100644 proto/gen/json_schema/ProjectFileSource.json delete mode 100644 proto/gen/json_schema/QueryRequest.json delete mode 100644 proto/gen/json_schema/QueryResponse.json delete mode 100644 proto/gen/json_schema/QueryResult.json delete mode 100644 proto/gen/json_schema/QueryResultColumn.json delete mode 100644 proto/gen/json_schema/Range.json delete mode 100644 proto/gen/json_schema/Row.json delete mode 100644 proto/gen/json_schema/RowDescription.json delete mode 100644 proto/gen/json_schema/RowTest.json delete mode 100644 proto/gen/json_schema/RowTestDetails.json delete mode 100644 proto/gen/json_schema/Seed.json delete mode 100644 proto/gen/json_schema/Snapshot.json delete mode 100644 proto/gen/json_schema/Source.json delete mode 100644 proto/gen/json_schema/Table.json delete mode 100644 proto/gen/json_schema/TableAddress.json delete mode 100644 proto/gen/json_schema/Test.json delete mode 100644 proto/gen/json_schema/TestAcceptedValues.json delete mode 100644 proto/gen/json_schema/TestGreaterThan.json delete mode 100644 proto/gen/json_schema/TestGreaterThanOrEqual.json delete mode 100644 proto/gen/json_schema/TestLessThan.json delete mode 100644 proto/gen/json_schema/TestLessThanOrEqual.json delete mode 100644 proto/gen/json_schema/TestMultiColumnUnique.json delete mode 100644 proto/gen/json_schema/TestNotNull.json delete mode 100644 proto/gen/json_schema/TestRelationship.json delete mode 100644 proto/gen/json_schema/TestResult.json delete mode 100644 proto/gen/json_schema/TestResults.json delete mode 100644 proto/gen/json_schema/TestRunner.json delete mode 100644 proto/gen/json_schema/TestSQLFile.json delete mode 100644 proto/gen/json_schema/TestUnique.json delete mode 100644 proto/gen/json_schema/Var.json delete mode 100644 proto/gen/rust/Cargo.toml delete mode 100644 proto/gen/rust/src/lib.rs delete mode 100644 proto/gen/rust/src/quary.service.v1.serde.rs delete mode 100644 proto/gen/ts/google/protobuf/empty.ts delete mode 100644 proto/gen/ts/quary/service/v1/cli_rpc_calls.ts delete mode 100644 proto/gen/ts/quary/service/v1/column_description.ts delete mode 100644 proto/gen/ts/quary/service/v1/connection_config.ts delete mode 100644 proto/gen/ts/quary/service/v1/file.ts delete mode 100644 proto/gen/ts/quary/service/v1/position.ts delete mode 100644 proto/gen/ts/quary/service/v1/project.ts delete mode 100644 proto/gen/ts/quary/service/v1/project_dag.ts delete mode 100644 proto/gen/ts/quary/service/v1/project_file.ts delete mode 100644 proto/gen/ts/quary/service/v1/query_result.ts delete mode 100644 proto/gen/ts/quary/service/v1/range.ts delete mode 100644 proto/gen/ts/quary/service/v1/table.ts delete mode 100644 proto/gen/ts/quary/service/v1/table_address.ts delete mode 100644 proto/gen/ts/quary/service/v1/test_result.ts delete mode 100644 proto/gen/ts/quary/service/v1/test_results.ts delete mode 100644 proto/gen/ts/quary/service/v1/test_runner.ts delete mode 100644 proto/gen/ts/quary/service/v1/types.ts diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 650c8720..e114b062 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -10,20 +10,35 @@ concurrency: env: CARGO_INCREMENTAL: 0 jobs: + github-actions-ratchet-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # ratchet:actions/checkout@v4 + - name: Set up Go + uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # ratchet:actions/setup-go@v4 + - name: Install ratchet + run: go install github.com/sethvargo/ratchet@latest + - name: Ratchet Check + run: make ratchet_check rust-lint: name: Rust Lint runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # ratchet:actions/checkout@v3 + uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # ratchet:actions/checkout@v4 - name: Install stable toolchain uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # ratchet:actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - target: wasm32-unknown-unknown override: true components: rustfmt, clippy + - name: Set up Homebrew + id: set-up-homebrew + uses: Homebrew/actions/setup-homebrew@35cdeaf60df48fb1fb7eac25fea4ebde1f72fc46 # ratchet:Homebrew/actions/setup-homebrew@master + - name: Install buf + run: brew install bufbuild/buf/buf + - run: make proto - name: Run cargo fmt uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # ratchet:actions-rs/cargo@v1 with: @@ -33,25 +48,21 @@ jobs: uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # ratchet:actions-rs/cargo@v1 with: command: clippy - github-actions-ratchet-check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # ratchet:actions/checkout@v3 - - name: Set up Go - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # ratchet:actions/setup-go@v4 - - name: Install ratchet - run: go install github.com/sethvargo/ratchet@latest - - name: Ratchet Check - run: make ratchet_check rust-test: name: Rust Test runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # ratchet:actions/checkout@v3 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # ratchet:actions/checkout@v4 - uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # ratchet:actions-rs/toolchain@v1 with: toolchain: stable profile: minimal + - name: Set up Homebrew + id: set-up-homebrew + uses: Homebrew/actions/setup-homebrew@35cdeaf60df48fb1fb7eac25fea4ebde1f72fc46 # ratchet:Homebrew/actions/setup-homebrew@master + - name: Install buf + run: brew install bufbuild/buf/buf + - run: make proto - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # ratchet:Swatinem/rust-cache@v2 - uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # ratchet:actions-rs/cargo@v1 with: @@ -60,8 +71,7 @@ jobs: name: Rust Build runs-on: ubuntu-latest steps: - - name: Checkout sources - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # ratchet:actions/checkout@v3 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # ratchet:actions/checkout@v4 - name: Install stable toolchain uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # ratchet:actions-rs/toolchain@v1 with: @@ -73,13 +83,19 @@ jobs: - uses: taiki-e/cache-cargo-install-action@e57d133d3c2bc6196d57ce056266ea53dd4feb6d # ratchet:taiki-e/cache-cargo-install-action@v1 with: tool: wasm-bindgen-cli + - name: Set up Homebrew + id: set-up-homebrew + uses: Homebrew/actions/setup-homebrew@35cdeaf60df48fb1fb7eac25fea4ebde1f72fc46 # ratchet:Homebrew/actions/setup-homebrew@master + - name: Install buf + run: brew install bufbuild/buf/buf + - run: make proto - name: Check CI scripts run: make rust_build sqlfluff-template: name: Lint template with SQLFluff runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # ratchet:actions/checkout@v3 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # ratchet:actions/checkout@v4 - name: Install SQLFluff run: pip install sqlfluff - name: Lint template diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 841e769d..6b4fe514 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # ratchet:actions/checkout@v4 + uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # ratchet:actions/checkout@v4 - name: Fetch Release Assets id: fetch-assets uses: actions/github-script@211cb3fefb35a799baa5156f9321bb774fe56294 # ratchet:actions/github-script@v5 diff --git a/.gitignore b/.gitignore index 58b3c17f..6909be02 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# Generated proto + +proto/gen + # Terrraform auth_details.tf diff --git a/.idea/quary.iml b/.idea/quary.iml index 7e656f2e..70e4b9f6 100644 --- a/.idea/quary.iml +++ b/.idea/quary.iml @@ -9,6 +9,9 @@ + + + diff --git a/buf.gen.yaml b/buf.gen.yaml index cb39986e..6102a483 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -1,10 +1,5 @@ version: v1 plugins: - - plugin: buf.build/community/stephenh-ts-proto - out: proto/gen/ts - opt: - - oneof=unions - - globalThisPolyfill=true - out: proto/gen/rust/src plugin: buf.build/community/neoeinstein-prost opt: @@ -16,11 +11,3 @@ plugins: out: proto/gen/rust/src - out: proto/gen/json_schema plugin: buf.build/community/chrusty-jsonschema - - plugin: buf.build/bufbuild/connect-es - out: proto/gen/es - opt: - - target=ts - - plugin: buf.build/bufbuild/es - out: proto/gen/es - opt: - - target=ts diff --git a/proto/gen/es/quary/service/v1/cli_rpc_calls_connect.ts b/proto/gen/es/quary/service/v1/cli_rpc_calls_connect.ts deleted file mode 100644 index 97474cb8..00000000 --- a/proto/gen/es/quary/service/v1/cli_rpc_calls_connect.ts +++ /dev/null @@ -1,71 +0,0 @@ -// @generated by protoc-gen-connect-es v0.13.0 with parameter "target=ts" -// @generated from file quary/service/v1/cli_rpc_calls.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import { ExecRequest, ExecResponse, ListColumnsRequest, ListColumnsResponse, ListSourcesRequest, ListSourcesResponse, ListTablesRequest, ListTablesResponse, ListViewsRequest, ListViewsResponse, QueryRequest, QueryResponse } from "./cli_rpc_calls_pb.js"; -import { MethodKind } from "@bufbuild/protobuf"; - -/** - * @generated from service quary.service.v1.CLIRPCService - */ -export const CLIRPCService = { - typeName: "quary.service.v1.CLIRPCService", - methods: { - /** - * @generated from rpc quary.service.v1.CLIRPCService.ListTables - */ - listTables: { - name: "ListTables", - I: ListTablesRequest, - O: ListTablesResponse, - kind: MethodKind.Unary, - }, - /** - * @generated from rpc quary.service.v1.CLIRPCService.ListViews - */ - listViews: { - name: "ListViews", - I: ListViewsRequest, - O: ListViewsResponse, - kind: MethodKind.Unary, - }, - /** - * @generated from rpc quary.service.v1.CLIRPCService.Exec - */ - exec: { - name: "Exec", - I: ExecRequest, - O: ExecResponse, - kind: MethodKind.Unary, - }, - /** - * @generated from rpc quary.service.v1.CLIRPCService.Query - */ - query: { - name: "Query", - I: QueryRequest, - O: QueryResponse, - kind: MethodKind.Unary, - }, - /** - * @generated from rpc quary.service.v1.CLIRPCService.ListColumns - */ - listColumns: { - name: "ListColumns", - I: ListColumnsRequest, - O: ListColumnsResponse, - kind: MethodKind.Unary, - }, - /** - * @generated from rpc quary.service.v1.CLIRPCService.ListSources - */ - listSources: { - name: "ListSources", - I: ListSourcesRequest, - O: ListSourcesResponse, - kind: MethodKind.Unary, - }, - } -} as const; - diff --git a/proto/gen/es/quary/service/v1/cli_rpc_calls_pb.ts b/proto/gen/es/quary/service/v1/cli_rpc_calls_pb.ts deleted file mode 100644 index 9b96fcc8..00000000 --- a/proto/gen/es/quary/service/v1/cli_rpc_calls_pb.ts +++ /dev/null @@ -1,431 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/cli_rpc_calls.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { TableAddress } from "./table_address_pb.js"; -import { QueryResult } from "./query_result_pb.js"; -import { ProjectFileSource } from "./project_file_pb.js"; - -/** - * @generated from message quary.service.v1.ListTablesRequest - */ -export class ListTablesRequest extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ListTablesRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListTablesRequest { - return new ListTablesRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListTablesRequest { - return new ListTablesRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListTablesRequest { - return new ListTablesRequest().fromJsonString(jsonString, options); - } - - static equals(a: ListTablesRequest | PlainMessage | undefined, b: ListTablesRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ListTablesRequest, a, b); - } -} - -/** - * @generated from message quary.service.v1.ListTablesResponse - */ -export class ListTablesResponse extends Message { - /** - * @generated from field: repeated quary.service.v1.TableAddress tables = 1; - */ - tables: TableAddress[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ListTablesResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "tables", kind: "message", T: TableAddress, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListTablesResponse { - return new ListTablesResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListTablesResponse { - return new ListTablesResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListTablesResponse { - return new ListTablesResponse().fromJsonString(jsonString, options); - } - - static equals(a: ListTablesResponse | PlainMessage | undefined, b: ListTablesResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ListTablesResponse, a, b); - } -} - -/** - * @generated from message quary.service.v1.ListViewsRequest - */ -export class ListViewsRequest extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ListViewsRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListViewsRequest { - return new ListViewsRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListViewsRequest { - return new ListViewsRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListViewsRequest { - return new ListViewsRequest().fromJsonString(jsonString, options); - } - - static equals(a: ListViewsRequest | PlainMessage | undefined, b: ListViewsRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ListViewsRequest, a, b); - } -} - -/** - * @generated from message quary.service.v1.ListViewsResponse - */ -export class ListViewsResponse extends Message { - /** - * @generated from field: repeated quary.service.v1.TableAddress views = 1; - */ - views: TableAddress[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ListViewsResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "views", kind: "message", T: TableAddress, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListViewsResponse { - return new ListViewsResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListViewsResponse { - return new ListViewsResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListViewsResponse { - return new ListViewsResponse().fromJsonString(jsonString, options); - } - - static equals(a: ListViewsResponse | PlainMessage | undefined, b: ListViewsResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ListViewsResponse, a, b); - } -} - -/** - * @generated from message quary.service.v1.ExecRequest - */ -export class ExecRequest extends Message { - /** - * @generated from field: string query = 1; - */ - query = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ExecRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "query", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ExecRequest { - return new ExecRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ExecRequest { - return new ExecRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ExecRequest { - return new ExecRequest().fromJsonString(jsonString, options); - } - - static equals(a: ExecRequest | PlainMessage | undefined, b: ExecRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ExecRequest, a, b); - } -} - -/** - * @generated from message quary.service.v1.ExecResponse - */ -export class ExecResponse extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ExecResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ExecResponse { - return new ExecResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ExecResponse { - return new ExecResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ExecResponse { - return new ExecResponse().fromJsonString(jsonString, options); - } - - static equals(a: ExecResponse | PlainMessage | undefined, b: ExecResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ExecResponse, a, b); - } -} - -/** - * @generated from message quary.service.v1.QueryRequest - */ -export class QueryRequest extends Message { - /** - * @generated from field: string query = 1; - */ - query = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.QueryRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "query", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): QueryRequest { - return new QueryRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): QueryRequest { - return new QueryRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): QueryRequest { - return new QueryRequest().fromJsonString(jsonString, options); - } - - static equals(a: QueryRequest | PlainMessage | undefined, b: QueryRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(QueryRequest, a, b); - } -} - -/** - * @generated from message quary.service.v1.QueryResponse - */ -export class QueryResponse extends Message { - /** - * @generated from field: quary.service.v1.QueryResult result = 1; - */ - result?: QueryResult; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.QueryResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "result", kind: "message", T: QueryResult }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): QueryResponse { - return new QueryResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): QueryResponse { - return new QueryResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): QueryResponse { - return new QueryResponse().fromJsonString(jsonString, options); - } - - static equals(a: QueryResponse | PlainMessage | undefined, b: QueryResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(QueryResponse, a, b); - } -} - -/** - * @generated from message quary.service.v1.ListColumnsRequest - */ -export class ListColumnsRequest extends Message { - /** - * @generated from field: string table_name = 1; - */ - tableName = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ListColumnsRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "table_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListColumnsRequest { - return new ListColumnsRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListColumnsRequest { - return new ListColumnsRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListColumnsRequest { - return new ListColumnsRequest().fromJsonString(jsonString, options); - } - - static equals(a: ListColumnsRequest | PlainMessage | undefined, b: ListColumnsRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ListColumnsRequest, a, b); - } -} - -/** - * @generated from message quary.service.v1.ListColumnsResponse - */ -export class ListColumnsResponse extends Message { - /** - * @generated from field: repeated string columns = 1; - */ - columns: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ListColumnsResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "columns", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListColumnsResponse { - return new ListColumnsResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListColumnsResponse { - return new ListColumnsResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListColumnsResponse { - return new ListColumnsResponse().fromJsonString(jsonString, options); - } - - static equals(a: ListColumnsResponse | PlainMessage | undefined, b: ListColumnsResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ListColumnsResponse, a, b); - } -} - -/** - * @generated from message quary.service.v1.ListSourcesRequest - */ -export class ListSourcesRequest extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ListSourcesRequest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListSourcesRequest { - return new ListSourcesRequest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListSourcesRequest { - return new ListSourcesRequest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListSourcesRequest { - return new ListSourcesRequest().fromJsonString(jsonString, options); - } - - static equals(a: ListSourcesRequest | PlainMessage | undefined, b: ListSourcesRequest | PlainMessage | undefined): boolean { - return proto3.util.equals(ListSourcesRequest, a, b); - } -} - -/** - * @generated from message quary.service.v1.ListSourcesResponse - */ -export class ListSourcesResponse extends Message { - /** - * @generated from field: repeated quary.service.v1.ProjectFileSource sources = 1; - */ - sources: ProjectFileSource[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ListSourcesResponse"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "sources", kind: "message", T: ProjectFileSource, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ListSourcesResponse { - return new ListSourcesResponse().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ListSourcesResponse { - return new ListSourcesResponse().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ListSourcesResponse { - return new ListSourcesResponse().fromJsonString(jsonString, options); - } - - static equals(a: ListSourcesResponse | PlainMessage | undefined, b: ListSourcesResponse | PlainMessage | undefined): boolean { - return proto3.util.equals(ListSourcesResponse, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/column_description_pb.ts b/proto/gen/es/quary/service/v1/column_description_pb.ts deleted file mode 100644 index 72be8406..00000000 --- a/proto/gen/es/quary/service/v1/column_description_pb.ts +++ /dev/null @@ -1,57 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/column_description.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * @generated from message quary.service.v1.ColumnDescription - */ -export class ColumnDescription extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - /** - * @generated from field: repeated string tests = 3; - */ - tests: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ColumnDescription"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 3, name: "tests", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ColumnDescription { - return new ColumnDescription().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ColumnDescription { - return new ColumnDescription().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ColumnDescription { - return new ColumnDescription().fromJsonString(jsonString, options); - } - - static equals(a: ColumnDescription | PlainMessage | undefined, b: ColumnDescription | PlainMessage | undefined): boolean { - return proto3.util.equals(ColumnDescription, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/connection_config_pb.ts b/proto/gen/es/quary/service/v1/connection_config_pb.ts deleted file mode 100644 index a12afcce..00000000 --- a/proto/gen/es/quary/service/v1/connection_config_pb.ts +++ /dev/null @@ -1,447 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/connection_config.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * @generated from message quary.service.v1.Var - */ -export class Var extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: string value = 2; - */ - value = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Var"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Var { - return new Var().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Var { - return new Var().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Var { - return new Var().fromJsonString(jsonString, options); - } - - static equals(a: Var | PlainMessage | undefined, b: Var | PlainMessage | undefined): boolean { - return proto3.util.equals(Var, a, b); - } -} - -/** - * Configuration describes the configuration of the project. - * - * @generated from message quary.service.v1.ConnectionConfig - */ -export class ConnectionConfig extends Message { - /** - * @generated from oneof quary.service.v1.ConnectionConfig.config - */ - config: { - /** - * @generated from field: quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB duckdb = 1; - */ - value: ConnectionConfig_ConnectionConfigDuckDB; - case: "duckdb"; - } | { - /** - * @generated from field: quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory duckdb_in_memory = 2; - */ - value: ConnectionConfig_ConnectionConfigDuckDBInMemory; - case: "duckdbInMemory"; - } | { - /** - * @generated from field: quary.service.v1.ConnectionConfig.ConnectionConfigSqLite sqlite = 3; - */ - value: ConnectionConfig_ConnectionConfigSqLite; - case: "sqlite"; - } | { - /** - * @generated from field: quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory sqlite_in_memory = 4; - */ - value: ConnectionConfig_ConnectionConfigSqLiteInMemory; - case: "sqliteInMemory"; - } | { - /** - * @generated from field: quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery big_query = 5; - */ - value: ConnectionConfig_ConnectionConfigBigQuery; - case: "bigQuery"; - } | { - /** - * @generated from field: quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake snowflake = 6; - */ - value: ConnectionConfig_ConnectionConfigSnowflake; - case: "snowflake"; - } | { - /** - * @generated from field: quary.service.v1.ConnectionConfig.ConnectionConfigPostgres postgres = 7; - */ - value: ConnectionConfig_ConnectionConfigPostgres; - case: "postgres"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - /** - * @generated from field: repeated quary.service.v1.Var vars = 8; - */ - vars: Var[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ConnectionConfig"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "duckdb", kind: "message", T: ConnectionConfig_ConnectionConfigDuckDB, oneof: "config" }, - { no: 2, name: "duckdb_in_memory", kind: "message", T: ConnectionConfig_ConnectionConfigDuckDBInMemory, oneof: "config" }, - { no: 3, name: "sqlite", kind: "message", T: ConnectionConfig_ConnectionConfigSqLite, oneof: "config" }, - { no: 4, name: "sqlite_in_memory", kind: "message", T: ConnectionConfig_ConnectionConfigSqLiteInMemory, oneof: "config" }, - { no: 5, name: "big_query", kind: "message", T: ConnectionConfig_ConnectionConfigBigQuery, oneof: "config" }, - { no: 6, name: "snowflake", kind: "message", T: ConnectionConfig_ConnectionConfigSnowflake, oneof: "config" }, - { no: 7, name: "postgres", kind: "message", T: ConnectionConfig_ConnectionConfigPostgres, oneof: "config" }, - { no: 8, name: "vars", kind: "message", T: Var, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectionConfig { - return new ConnectionConfig().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectionConfig { - return new ConnectionConfig().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectionConfig { - return new ConnectionConfig().fromJsonString(jsonString, options); - } - - static equals(a: ConnectionConfig | PlainMessage | undefined, b: ConnectionConfig | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectionConfig, a, b); - } -} - -/** - * @generated from message quary.service.v1.ConnectionConfig.ConnectionConfigSqLite - */ -export class ConnectionConfig_ConnectionConfigSqLite extends Message { - /** - * @generated from field: string path = 1; - */ - path = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ConnectionConfig.ConnectionConfigSqLite"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectionConfig_ConnectionConfigSqLite { - return new ConnectionConfig_ConnectionConfigSqLite().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectionConfig_ConnectionConfigSqLite { - return new ConnectionConfig_ConnectionConfigSqLite().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectionConfig_ConnectionConfigSqLite { - return new ConnectionConfig_ConnectionConfigSqLite().fromJsonString(jsonString, options); - } - - static equals(a: ConnectionConfig_ConnectionConfigSqLite | PlainMessage | undefined, b: ConnectionConfig_ConnectionConfigSqLite | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectionConfig_ConnectionConfigSqLite, a, b); - } -} - -/** - * @generated from message quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory - */ -export class ConnectionConfig_ConnectionConfigSqLiteInMemory extends Message { - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectionConfig_ConnectionConfigSqLiteInMemory { - return new ConnectionConfig_ConnectionConfigSqLiteInMemory().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectionConfig_ConnectionConfigSqLiteInMemory { - return new ConnectionConfig_ConnectionConfigSqLiteInMemory().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectionConfig_ConnectionConfigSqLiteInMemory { - return new ConnectionConfig_ConnectionConfigSqLiteInMemory().fromJsonString(jsonString, options); - } - - static equals(a: ConnectionConfig_ConnectionConfigSqLiteInMemory | PlainMessage | undefined, b: ConnectionConfig_ConnectionConfigSqLiteInMemory | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectionConfig_ConnectionConfigSqLiteInMemory, a, b); - } -} - -/** - * @generated from message quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB - */ -export class ConnectionConfig_ConnectionConfigDuckDB extends Message { - /** - * @generated from field: string path = 1; - */ - path = ""; - - /** - * @generated from field: optional string schema = 2; - */ - schema?: string; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "schema", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectionConfig_ConnectionConfigDuckDB { - return new ConnectionConfig_ConnectionConfigDuckDB().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectionConfig_ConnectionConfigDuckDB { - return new ConnectionConfig_ConnectionConfigDuckDB().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectionConfig_ConnectionConfigDuckDB { - return new ConnectionConfig_ConnectionConfigDuckDB().fromJsonString(jsonString, options); - } - - static equals(a: ConnectionConfig_ConnectionConfigDuckDB | PlainMessage | undefined, b: ConnectionConfig_ConnectionConfigDuckDB | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectionConfig_ConnectionConfigDuckDB, a, b); - } -} - -/** - * @generated from message quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory - */ -export class ConnectionConfig_ConnectionConfigDuckDBInMemory extends Message { - /** - * @generated from field: optional string schema = 1; - */ - schema?: string; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "schema", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectionConfig_ConnectionConfigDuckDBInMemory { - return new ConnectionConfig_ConnectionConfigDuckDBInMemory().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectionConfig_ConnectionConfigDuckDBInMemory { - return new ConnectionConfig_ConnectionConfigDuckDBInMemory().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectionConfig_ConnectionConfigDuckDBInMemory { - return new ConnectionConfig_ConnectionConfigDuckDBInMemory().fromJsonString(jsonString, options); - } - - static equals(a: ConnectionConfig_ConnectionConfigDuckDBInMemory | PlainMessage | undefined, b: ConnectionConfig_ConnectionConfigDuckDBInMemory | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectionConfig_ConnectionConfigDuckDBInMemory, a, b); - } -} - -/** - * @generated from message quary.service.v1.ConnectionConfig.ConnectionConfigPostgres - */ -export class ConnectionConfig_ConnectionConfigPostgres extends Message { - /** - * @generated from field: string schema = 1; - */ - schema = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ConnectionConfig.ConnectionConfigPostgres"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "schema", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectionConfig_ConnectionConfigPostgres { - return new ConnectionConfig_ConnectionConfigPostgres().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectionConfig_ConnectionConfigPostgres { - return new ConnectionConfig_ConnectionConfigPostgres().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectionConfig_ConnectionConfigPostgres { - return new ConnectionConfig_ConnectionConfigPostgres().fromJsonString(jsonString, options); - } - - static equals(a: ConnectionConfig_ConnectionConfigPostgres | PlainMessage | undefined, b: ConnectionConfig_ConnectionConfigPostgres | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectionConfig_ConnectionConfigPostgres, a, b); - } -} - -/** - * @generated from message quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery - */ -export class ConnectionConfig_ConnectionConfigBigQuery extends Message { - /** - * @generated from field: string project_id = 1; - */ - projectId = ""; - - /** - * @generated from field: string dataset_id = 2; - */ - datasetId = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "project_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "dataset_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectionConfig_ConnectionConfigBigQuery { - return new ConnectionConfig_ConnectionConfigBigQuery().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectionConfig_ConnectionConfigBigQuery { - return new ConnectionConfig_ConnectionConfigBigQuery().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectionConfig_ConnectionConfigBigQuery { - return new ConnectionConfig_ConnectionConfigBigQuery().fromJsonString(jsonString, options); - } - - static equals(a: ConnectionConfig_ConnectionConfigBigQuery | PlainMessage | undefined, b: ConnectionConfig_ConnectionConfigBigQuery | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectionConfig_ConnectionConfigBigQuery, a, b); - } -} - -/** - * @generated from message quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake - */ -export class ConnectionConfig_ConnectionConfigSnowflake extends Message { - /** - * @generated from field: string account_url = 1; - */ - accountUrl = ""; - - /** - * @generated from field: string client_id = 2; - */ - clientId = ""; - - /** - * @generated from field: string client_secret = 3; - */ - clientSecret = ""; - - /** - * TODO: think about making optional - * - * @generated from field: string role = 4; - */ - role = ""; - - /** - * @generated from field: string database = 5; - */ - database = ""; - - /** - * @generated from field: string schema = 6; - */ - schema = ""; - - /** - * @generated from field: string warehouse = 7; - */ - warehouse = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "account_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "client_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "client_secret", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "role", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "database", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 6, name: "schema", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 7, name: "warehouse", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ConnectionConfig_ConnectionConfigSnowflake { - return new ConnectionConfig_ConnectionConfigSnowflake().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ConnectionConfig_ConnectionConfigSnowflake { - return new ConnectionConfig_ConnectionConfigSnowflake().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ConnectionConfig_ConnectionConfigSnowflake { - return new ConnectionConfig_ConnectionConfigSnowflake().fromJsonString(jsonString, options); - } - - static equals(a: ConnectionConfig_ConnectionConfigSnowflake | PlainMessage | undefined, b: ConnectionConfig_ConnectionConfigSnowflake | PlainMessage | undefined): boolean { - return proto3.util.equals(ConnectionConfig_ConnectionConfigSnowflake, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/file_pb.ts b/proto/gen/es/quary/service/v1/file_pb.ts deleted file mode 100644 index be21ea7f..00000000 --- a/proto/gen/es/quary/service/v1/file_pb.ts +++ /dev/null @@ -1,90 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/file.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * @generated from message quary.service.v1.File - */ -export class File extends Message { - /** - * The name of the file. Names are relative to the root of the file system. - * - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: bytes contents = 2; - */ - contents = new Uint8Array(0); - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.File"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "contents", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): File { - return new File().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): File { - return new File().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): File { - return new File().fromJsonString(jsonString, options); - } - - static equals(a: File | PlainMessage | undefined, b: File | PlainMessage | undefined): boolean { - return proto3.util.equals(File, a, b); - } -} - -/** - * @generated from message quary.service.v1.FileSystem - */ -export class FileSystem extends Message { - /** - * @generated from field: map files = 1; - */ - files: { [key: string]: File } = {}; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.FileSystem"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "files", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: File} }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): FileSystem { - return new FileSystem().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): FileSystem { - return new FileSystem().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): FileSystem { - return new FileSystem().fromJsonString(jsonString, options); - } - - static equals(a: FileSystem | PlainMessage | undefined, b: FileSystem | PlainMessage | undefined): boolean { - return proto3.util.equals(FileSystem, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/position_pb.ts b/proto/gen/es/quary/service/v1/position_pb.ts deleted file mode 100644 index 88eed9b2..00000000 --- a/proto/gen/es/quary/service/v1/position_pb.ts +++ /dev/null @@ -1,53 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/position.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * Position is a simple representation of a line and character position in a file. - * - * @generated from message quary.service.v1.Position - */ -export class Position extends Message { - /** - * @generated from field: uint32 line = 1; - */ - line = 0; - - /** - * @generated from field: uint32 character = 2; - */ - character = 0; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Position"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "line", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - { no: 2, name: "character", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Position { - return new Position().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Position { - return new Position().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Position { - return new Position().fromJsonString(jsonString, options); - } - - static equals(a: Position | PlainMessage | undefined, b: Position | PlainMessage | undefined): boolean { - return proto3.util.equals(Position, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/project_dag_pb.ts b/proto/gen/es/quary/service/v1/project_dag_pb.ts deleted file mode 100644 index 8301c0e9..00000000 --- a/proto/gen/es/quary/service/v1/project_dag_pb.ts +++ /dev/null @@ -1,140 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/project_dag.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * DirectedAcyclicGraph represents a directed acyclic graph that is used to visualize the project dependencies in a - * project. - * - * @generated from message quary.service.v1.ProjectDag - */ -export class ProjectDag extends Message { - /** - * @generated from field: repeated quary.service.v1.Node nodes = 1; - */ - nodes: Node[] = []; - - /** - * @generated from field: repeated quary.service.v1.Edge edges = 2; - */ - edges: Edge[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ProjectDag"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "nodes", kind: "message", T: Node, repeated: true }, - { no: 2, name: "edges", kind: "message", T: Edge, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ProjectDag { - return new ProjectDag().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ProjectDag { - return new ProjectDag().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ProjectDag { - return new ProjectDag().fromJsonString(jsonString, options); - } - - static equals(a: ProjectDag | PlainMessage | undefined, b: ProjectDag | PlainMessage | undefined): boolean { - return proto3.util.equals(ProjectDag, a, b); - } -} - -/** - * @generated from message quary.service.v1.Node - */ -export class Node extends Message { - /** - * @generated from field: string id = 1; - */ - id = ""; - - /** - * @generated from field: bool is_cached = 2; - */ - isCached = false; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Node"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "is_cached", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Node { - return new Node().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Node { - return new Node().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Node { - return new Node().fromJsonString(jsonString, options); - } - - static equals(a: Node | PlainMessage | undefined, b: Node | PlainMessage | undefined): boolean { - return proto3.util.equals(Node, a, b); - } -} - -/** - * @generated from message quary.service.v1.Edge - */ -export class Edge extends Message { - /** - * @generated from field: string to = 1; - */ - to = ""; - - /** - * @generated from field: string from = 2; - */ - from = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Edge"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "to", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "from", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Edge { - return new Edge().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Edge { - return new Edge().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Edge { - return new Edge().fromJsonString(jsonString, options); - } - - static equals(a: Edge | PlainMessage | undefined, b: Edge | PlainMessage | undefined): boolean { - return proto3.util.equals(Edge, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/project_file_pb.ts b/proto/gen/es/quary/service/v1/project_file_pb.ts deleted file mode 100644 index 9e26c9ff..00000000 --- a/proto/gen/es/quary/service/v1/project_file_pb.ts +++ /dev/null @@ -1,487 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/project_file.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * @generated from message quary.service.v1.ProjectFile - */ -export class ProjectFile extends Message { - /** - * @generated from field: repeated quary.service.v1.ProjectFileSource sources = 1; - */ - sources: ProjectFileSource[] = []; - - /** - * @generated from field: repeated quary.service.v1.ProjectFile.Model models = 2; - */ - models: ProjectFile_Model[] = []; - - /** - * @generated from field: repeated quary.service.v1.ProjectFile.Snapshot snapshots = 3; - */ - snapshots: ProjectFile_Snapshot[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ProjectFile"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "sources", kind: "message", T: ProjectFileSource, repeated: true }, - { no: 2, name: "models", kind: "message", T: ProjectFile_Model, repeated: true }, - { no: 3, name: "snapshots", kind: "message", T: ProjectFile_Snapshot, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ProjectFile { - return new ProjectFile().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ProjectFile { - return new ProjectFile().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ProjectFile { - return new ProjectFile().fromJsonString(jsonString, options); - } - - static equals(a: ProjectFile | PlainMessage | undefined, b: ProjectFile | PlainMessage | undefined): boolean { - return proto3.util.equals(ProjectFile, a, b); - } -} - -/** - * @generated from message quary.service.v1.ProjectFile.Model - */ -export class ProjectFile_Model extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * Tags are used to group different parts of the project together. For example, you could tag all models that are - * related to a specific department with the same tag. - * - * @generated from field: repeated string tags = 6; - */ - tags: string[] = []; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - /** - * The materialization of the model, available types are specified by each database. - * - * @generated from field: optional string materialization = 4; - */ - materialization?: string; - - /** - * @generated from field: repeated quary.service.v1.ModelTest tests = 5; - */ - tests: ModelTest[] = []; - - /** - * @generated from field: repeated quary.service.v1.ProjectFileColumn columns = 3; - */ - columns: ProjectFileColumn[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ProjectFile.Model"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 6, name: "tags", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 4, name: "materialization", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 5, name: "tests", kind: "message", T: ModelTest, repeated: true }, - { no: 3, name: "columns", kind: "message", T: ProjectFileColumn, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ProjectFile_Model { - return new ProjectFile_Model().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ProjectFile_Model { - return new ProjectFile_Model().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ProjectFile_Model { - return new ProjectFile_Model().fromJsonString(jsonString, options); - } - - static equals(a: ProjectFile_Model | PlainMessage | undefined, b: ProjectFile_Model | PlainMessage | undefined): boolean { - return proto3.util.equals(ProjectFile_Model, a, b); - } -} - -/** - * @generated from message quary.service.v1.ProjectFile.Snapshot - */ -export class ProjectFile_Snapshot extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * Tags are used to group different parts of the project together. For example, you could tag all models that are - * related to a specific department with the same tag. - * - * @generated from field: repeated string tags = 4; - */ - tags: string[] = []; - - /** - * @generated from field: optional string description = 5; - */ - description?: string; - - /** - * @generated from field: string unique_key = 2; - */ - uniqueKey = ""; - - /** - * @generated from field: quary.service.v1.ProjectFile.SnapshotStrategy strategy = 3; - */ - strategy?: ProjectFile_SnapshotStrategy; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ProjectFile.Snapshot"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "tags", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 5, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 2, name: "unique_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "strategy", kind: "message", T: ProjectFile_SnapshotStrategy }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ProjectFile_Snapshot { - return new ProjectFile_Snapshot().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ProjectFile_Snapshot { - return new ProjectFile_Snapshot().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ProjectFile_Snapshot { - return new ProjectFile_Snapshot().fromJsonString(jsonString, options); - } - - static equals(a: ProjectFile_Snapshot | PlainMessage | undefined, b: ProjectFile_Snapshot | PlainMessage | undefined): boolean { - return proto3.util.equals(ProjectFile_Snapshot, a, b); - } -} - -/** - * @generated from message quary.service.v1.ProjectFile.SnapshotStrategy - */ -export class ProjectFile_SnapshotStrategy extends Message { - /** - * @generated from oneof quary.service.v1.ProjectFile.SnapshotStrategy.strategy_type - */ - strategyType: { - /** - * @generated from field: quary.service.v1.ProjectFile.TimestampStrategy timestamp = 1; - */ - value: ProjectFile_TimestampStrategy; - case: "timestamp"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ProjectFile.SnapshotStrategy"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "timestamp", kind: "message", T: ProjectFile_TimestampStrategy, oneof: "strategy_type" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ProjectFile_SnapshotStrategy { - return new ProjectFile_SnapshotStrategy().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ProjectFile_SnapshotStrategy { - return new ProjectFile_SnapshotStrategy().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ProjectFile_SnapshotStrategy { - return new ProjectFile_SnapshotStrategy().fromJsonString(jsonString, options); - } - - static equals(a: ProjectFile_SnapshotStrategy | PlainMessage | undefined, b: ProjectFile_SnapshotStrategy | PlainMessage | undefined): boolean { - return proto3.util.equals(ProjectFile_SnapshotStrategy, a, b); - } -} - -/** - * @generated from message quary.service.v1.ProjectFile.TimestampStrategy - */ -export class ProjectFile_TimestampStrategy extends Message { - /** - * @generated from field: string updated_at = 1; - */ - updatedAt = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ProjectFile.TimestampStrategy"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "updated_at", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ProjectFile_TimestampStrategy { - return new ProjectFile_TimestampStrategy().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ProjectFile_TimestampStrategy { - return new ProjectFile_TimestampStrategy().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ProjectFile_TimestampStrategy { - return new ProjectFile_TimestampStrategy().fromJsonString(jsonString, options); - } - - static equals(a: ProjectFile_TimestampStrategy | PlainMessage | undefined, b: ProjectFile_TimestampStrategy | PlainMessage | undefined): boolean { - return proto3.util.equals(ProjectFile_TimestampStrategy, a, b); - } -} - -/** - * @generated from message quary.service.v1.ProjectFileSource - */ -export class ProjectFileSource extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * Tags are used to group different parts of the project together. For example, you could tag all sources that are - * related to a specific department with the same tag. - * - * @generated from field: repeated string tags = 6; - */ - tags: string[] = []; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - /** - * The full path of the source table in the database. This is used to reference the table itself. For example: - * - 'public.users' for where the schema is 'public' and the table is 'users' - * - 'project_id_123.dataset_id_123.table_id_123' for a BigQuery table - * - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: repeated quary.service.v1.ModelTest tests = 5; - */ - tests: ModelTest[] = []; - - /** - * @generated from field: repeated quary.service.v1.ProjectFileColumn columns = 4; - */ - columns: ProjectFileColumn[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ProjectFileSource"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 6, name: "tags", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "tests", kind: "message", T: ModelTest, repeated: true }, - { no: 4, name: "columns", kind: "message", T: ProjectFileColumn, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ProjectFileSource { - return new ProjectFileSource().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ProjectFileSource { - return new ProjectFileSource().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ProjectFileSource { - return new ProjectFileSource().fromJsonString(jsonString, options); - } - - static equals(a: ProjectFileSource | PlainMessage | undefined, b: ProjectFileSource | PlainMessage | undefined): boolean { - return proto3.util.equals(ProjectFileSource, a, b); - } -} - -/** - * Standard types are: - * - not_null - * - unique - * - 'relationship' which takes into data (model and field) - * - * @generated from message quary.service.v1.ProjectFileColumn - */ -export class ProjectFileColumn extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - /** - * @generated from field: repeated quary.service.v1.ColumnTest tests = 3; - */ - tests: ColumnTest[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ProjectFileColumn"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 3, name: "tests", kind: "message", T: ColumnTest, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ProjectFileColumn { - return new ProjectFileColumn().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ProjectFileColumn { - return new ProjectFileColumn().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ProjectFileColumn { - return new ProjectFileColumn().fromJsonString(jsonString, options); - } - - static equals(a: ProjectFileColumn | PlainMessage | undefined, b: ProjectFileColumn | PlainMessage | undefined): boolean { - return proto3.util.equals(ProjectFileColumn, a, b); - } -} - -/** - * @generated from message quary.service.v1.ColumnTest - */ -export class ColumnTest extends Message { - /** - * @generated from field: string type = 1; - */ - type = ""; - - /** - * @generated from field: map info = 2; - */ - info: { [key: string]: string } = {}; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ColumnTest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "info", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ColumnTest { - return new ColumnTest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ColumnTest { - return new ColumnTest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ColumnTest { - return new ColumnTest().fromJsonString(jsonString, options); - } - - static equals(a: ColumnTest | PlainMessage | undefined, b: ColumnTest | PlainMessage | undefined): boolean { - return proto3.util.equals(ColumnTest, a, b); - } -} - -/** - * @generated from message quary.service.v1.ModelTest - */ -export class ModelTest extends Message { - /** - * @generated from field: string type = 1; - */ - type = ""; - - /** - * @generated from field: map info = 2; - */ - info: { [key: string]: string } = {}; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.ModelTest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "info", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): ModelTest { - return new ModelTest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): ModelTest { - return new ModelTest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): ModelTest { - return new ModelTest().fromJsonString(jsonString, options); - } - - static equals(a: ModelTest | PlainMessage | undefined, b: ModelTest | PlainMessage | undefined): boolean { - return proto3.util.equals(ModelTest, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/project_pb.ts b/proto/gen/es/quary/service/v1/project_pb.ts deleted file mode 100644 index ea615b87..00000000 --- a/proto/gen/es/quary/service/v1/project_pb.ts +++ /dev/null @@ -1,84 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/project.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { Model, Seed, Snapshot, Source, Test } from "./types_pb.js"; -import { ProjectFile } from "./project_file_pb.js"; -import { ConnectionConfig } from "./connection_config_pb.js"; - -/** - * @generated from message quary.service.v1.Project - */ -export class Project extends Message { - /** - * @generated from field: map seeds = 3; - */ - seeds: { [key: string]: Seed } = {}; - - /** - * @generated from field: map models = 4; - */ - models: { [key: string]: Model } = {}; - - /** - * @generated from field: map tests = 5; - */ - tests: { [key: string]: Test } = {}; - - /** - * @generated from field: map sources = 6; - */ - sources: { [key: string]: Source } = {}; - - /** - * @generated from field: map snapshots = 9; - */ - snapshots: { [key: string]: Snapshot } = {}; - - /** - * @generated from field: map project_files = 7; - */ - projectFiles: { [key: string]: ProjectFile } = {}; - - /** - * @generated from field: quary.service.v1.ConnectionConfig connection_config = 8; - */ - connectionConfig?: ConnectionConfig; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Project"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 3, name: "seeds", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: Seed} }, - { no: 4, name: "models", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: Model} }, - { no: 5, name: "tests", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: Test} }, - { no: 6, name: "sources", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: Source} }, - { no: 9, name: "snapshots", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: Snapshot} }, - { no: 7, name: "project_files", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "message", T: ProjectFile} }, - { no: 8, name: "connection_config", kind: "message", T: ConnectionConfig }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Project { - return new Project().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Project { - return new Project().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Project { - return new Project().fromJsonString(jsonString, options); - } - - static equals(a: Project | PlainMessage | undefined, b: Project | PlainMessage | undefined): boolean { - return proto3.util.equals(Project, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/query_result_pb.ts b/proto/gen/es/quary/service/v1/query_result_pb.ts deleted file mode 100644 index 6df26ab9..00000000 --- a/proto/gen/es/quary/service/v1/query_result_pb.ts +++ /dev/null @@ -1,96 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/query_result.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * QueryResult is the result of a ran query. - * - * @generated from message quary.service.v1.QueryResult - */ -export class QueryResult extends Message { - /** - * @generated from field: repeated quary.service.v1.QueryResultColumn columns = 1; - */ - columns: QueryResultColumn[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.QueryResult"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "columns", kind: "message", T: QueryResultColumn, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): QueryResult { - return new QueryResult().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): QueryResult { - return new QueryResult().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): QueryResult { - return new QueryResult().fromJsonString(jsonString, options); - } - - static equals(a: QueryResult | PlainMessage | undefined, b: QueryResult | PlainMessage | undefined): boolean { - return proto3.util.equals(QueryResult, a, b); - } -} - -/** - * @generated from message quary.service.v1.QueryResultColumn - */ -export class QueryResultColumn extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: optional string type = 3; - */ - type?: string; - - /** - * @generated from field: repeated string values = 2; - */ - values: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.QueryResultColumn"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "type", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 2, name: "values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): QueryResultColumn { - return new QueryResultColumn().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): QueryResultColumn { - return new QueryResultColumn().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): QueryResultColumn { - return new QueryResultColumn().fromJsonString(jsonString, options); - } - - static equals(a: QueryResultColumn | PlainMessage | undefined, b: QueryResultColumn | PlainMessage | undefined): boolean { - return proto3.util.equals(QueryResultColumn, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/range_pb.ts b/proto/gen/es/quary/service/v1/range_pb.ts deleted file mode 100644 index 0dd51233..00000000 --- a/proto/gen/es/quary/service/v1/range_pb.ts +++ /dev/null @@ -1,54 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/range.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { Position } from "./position_pb.js"; - -/** - * Range represents a range of positions in a file. - * - * @generated from message quary.service.v1.Range - */ -export class Range extends Message { - /** - * @generated from field: quary.service.v1.Position start = 1; - */ - start?: Position; - - /** - * @generated from field: quary.service.v1.Position end = 2; - */ - end?: Position; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Range"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "start", kind: "message", T: Position }, - { no: 2, name: "end", kind: "message", T: Position }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Range { - return new Range().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Range { - return new Range().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Range { - return new Range().fromJsonString(jsonString, options); - } - - static equals(a: Range | PlainMessage | undefined, b: Range | PlainMessage | undefined): boolean { - return proto3.util.equals(Range, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/table_address_pb.ts b/proto/gen/es/quary/service/v1/table_address_pb.ts deleted file mode 100644 index baa956f2..00000000 --- a/proto/gen/es/quary/service/v1/table_address_pb.ts +++ /dev/null @@ -1,53 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/table_address.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * TableAddress is a struct that represents a table in a database. It contains the name of the table and the full path. - * - * @generated from message quary.service.v1.TableAddress - */ -export class TableAddress extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: string full_path = 2; - */ - fullPath = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TableAddress"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "full_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TableAddress { - return new TableAddress().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TableAddress { - return new TableAddress().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TableAddress { - return new TableAddress().fromJsonString(jsonString, options); - } - - static equals(a: TableAddress | PlainMessage | undefined, b: TableAddress | PlainMessage | undefined): boolean { - return proto3.util.equals(TableAddress, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/table_pb.ts b/proto/gen/es/quary/service/v1/table_pb.ts deleted file mode 100644 index ea99675c..00000000 --- a/proto/gen/es/quary/service/v1/table_pb.ts +++ /dev/null @@ -1,473 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/table.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Empty, Message, proto3 } from "@bufbuild/protobuf"; -import { ColumnTest } from "./project_file_pb.js"; - -/** - * Table is a table in the project that is used to visualise columns, descriptions, and column tests. - * - * @generated from message quary.service.v1.Table - */ -export class Table extends Message { - /** - * @generated from oneof quary.service.v1.Table.table_type - */ - tableType: { - /** - * @generated from field: quary.service.v1.Table.PresentInSchema present = 1; - */ - value: Table_PresentInSchema; - case: "present"; - } | { - /** - * @generated from field: quary.service.v1.Table.NotPresentInSchema not_present = 2; - */ - value: Table_NotPresentInSchema; - case: "notPresent"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage
) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Table"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "present", kind: "message", T: Table_PresentInSchema, oneof: "table_type" }, - { no: 2, name: "not_present", kind: "message", T: Table_NotPresentInSchema, oneof: "table_type" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Table { - return new Table().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Table { - return new Table().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Table { - return new Table().fromJsonString(jsonString, options); - } - - static equals(a: Table | PlainMessage
| undefined, b: Table | PlainMessage
| undefined): boolean { - return proto3.util.equals(Table, a, b); - } -} - -/** - * PresentInSchema is a table that is present in a SQL document and in the YAML definitions. - * Values are inferred and read from YAML. - * - * @generated from message quary.service.v1.Table.PresentInSchema - */ -export class Table_PresentInSchema extends Message { - /** - * @generated from field: repeated quary.service.v1.Table.PresentInSchema.PresentRow rows = 1; - */ - rows: Table_PresentInSchema_PresentRow[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Table.PresentInSchema"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "rows", kind: "message", T: Table_PresentInSchema_PresentRow, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Table_PresentInSchema { - return new Table_PresentInSchema().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Table_PresentInSchema { - return new Table_PresentInSchema().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Table_PresentInSchema { - return new Table_PresentInSchema().fromJsonString(jsonString, options); - } - - static equals(a: Table_PresentInSchema | PlainMessage | undefined, b: Table_PresentInSchema | PlainMessage | undefined): boolean { - return proto3.util.equals(Table_PresentInSchema, a, b); - } -} - -/** - * @generated from message quary.service.v1.Table.PresentInSchema.PresentRow - */ -export class Table_PresentInSchema_PresentRow extends Message { - /** - * @generated from oneof quary.service.v1.Table.PresentInSchema.PresentRow.row - */ - row: { - /** - * @generated from field: quary.service.v1.Row present_in_sql_and_definitions = 1; - */ - value: Row; - case: "presentInSqlAndDefinitions"; - } | { - /** - * @generated from field: quary.service.v1.Row missing_in_definitions = 2; - */ - value: Row; - case: "missingInDefinitions"; - } | { - /** - * @generated from field: quary.service.v1.Row present_in_definitions_but_not_recognisable_in_sql = 3; - */ - value: Row; - case: "presentInDefinitionsButNotRecognisableInSql"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Table.PresentInSchema.PresentRow"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "present_in_sql_and_definitions", kind: "message", T: Row, oneof: "row" }, - { no: 2, name: "missing_in_definitions", kind: "message", T: Row, oneof: "row" }, - { no: 3, name: "present_in_definitions_but_not_recognisable_in_sql", kind: "message", T: Row, oneof: "row" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Table_PresentInSchema_PresentRow { - return new Table_PresentInSchema_PresentRow().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Table_PresentInSchema_PresentRow { - return new Table_PresentInSchema_PresentRow().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Table_PresentInSchema_PresentRow { - return new Table_PresentInSchema_PresentRow().fromJsonString(jsonString, options); - } - - static equals(a: Table_PresentInSchema_PresentRow | PlainMessage | undefined, b: Table_PresentInSchema_PresentRow | PlainMessage | undefined): boolean { - return proto3.util.equals(Table_PresentInSchema_PresentRow, a, b); - } -} - -/** - * NotPresentInSchema is a table that is present as SQL but not in the YAML definitions. And so all the values - * are inferred. - * - * @generated from message quary.service.v1.Table.NotPresentInSchema - */ -export class Table_NotPresentInSchema extends Message { - /** - * @generated from field: repeated quary.service.v1.Row rows = 1; - */ - rows: Row[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Table.NotPresentInSchema"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "rows", kind: "message", T: Row, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Table_NotPresentInSchema { - return new Table_NotPresentInSchema().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Table_NotPresentInSchema { - return new Table_NotPresentInSchema().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Table_NotPresentInSchema { - return new Table_NotPresentInSchema().fromJsonString(jsonString, options); - } - - static equals(a: Table_NotPresentInSchema | PlainMessage | undefined, b: Table_NotPresentInSchema | PlainMessage | undefined): boolean { - return proto3.util.equals(Table_NotPresentInSchema, a, b); - } -} - -/** - * Row is a row in the table. - * - * @generated from message quary.service.v1.Row - */ -export class Row extends Message { - /** - * @generated from field: string title = 1; - */ - title = ""; - - /** - * @generated from field: repeated quary.service.v1.RowTest tests = 2; - */ - tests: RowTest[] = []; - - /** - * @generated from field: quary.service.v1.RowDescription description = 3; - */ - description?: RowDescription; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Row"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "title", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "tests", kind: "message", T: RowTest, repeated: true }, - { no: 3, name: "description", kind: "message", T: RowDescription }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Row { - return new Row().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Row { - return new Row().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Row { - return new Row().fromJsonString(jsonString, options); - } - - static equals(a: Row | PlainMessage | undefined, b: Row | PlainMessage | undefined): boolean { - return proto3.util.equals(Row, a, b); - } -} - -/** - * TableTest is a test that is run against a row in a table. It is a oneof because the test can be inferred from the - * YAML definitions, or it can be present in the SQL document. - * - * @generated from message quary.service.v1.RowTest - */ -export class RowTest extends Message { - /** - * @generated from oneof quary.service.v1.RowTest.test - */ - test: { - /** - * @generated from field: quary.service.v1.RowTestDetails present_and_not_inferred = 1; - */ - value: RowTestDetails; - case: "presentAndNotInferred"; - } | { - /** - * @generated from field: quary.service.v1.RowTestDetails present_and_inferred = 2; - */ - value: RowTestDetails; - case: "presentAndInferred"; - } | { - /** - * @generated from field: quary.service.v1.RowTestDetails not_present_but_inferred = 3; - */ - value: RowTestDetails; - case: "notPresentButInferred"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.RowTest"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "present_and_not_inferred", kind: "message", T: RowTestDetails, oneof: "test" }, - { no: 2, name: "present_and_inferred", kind: "message", T: RowTestDetails, oneof: "test" }, - { no: 3, name: "not_present_but_inferred", kind: "message", T: RowTestDetails, oneof: "test" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): RowTest { - return new RowTest().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): RowTest { - return new RowTest().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): RowTest { - return new RowTest().fromJsonString(jsonString, options); - } - - static equals(a: RowTest | PlainMessage | undefined, b: RowTest | PlainMessage | undefined): boolean { - return proto3.util.equals(RowTest, a, b); - } -} - -/** - * RowTestDetails encapsulates the details of tests associated with row and column data. - * The 'column_test' field within this structure is specifically used to manage test operations - * such as deletion and addition. These operations are typically invoked through callbacks. - * - * @generated from message quary.service.v1.RowTestDetails - */ -export class RowTestDetails extends Message { - /** - * @generated from field: string text = 1; - */ - text = ""; - - /** - * @generated from field: quary.service.v1.ColumnTest column_test = 2; - */ - columnTest?: ColumnTest; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.RowTestDetails"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "text", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "column_test", kind: "message", T: ColumnTest }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): RowTestDetails { - return new RowTestDetails().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): RowTestDetails { - return new RowTestDetails().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): RowTestDetails { - return new RowTestDetails().fromJsonString(jsonString, options); - } - - static equals(a: RowTestDetails | PlainMessage | undefined, b: RowTestDetails | PlainMessage | undefined): boolean { - return proto3.util.equals(RowTestDetails, a, b); - } -} - -/** - * RowDescription is a description of a row in a table. It is a oneof because the description can be inferred from the - * YAML definitions and/or it can be present in the SQL document. - * - * @generated from message quary.service.v1.RowDescription - */ -export class RowDescription extends Message { - /** - * @generated from oneof quary.service.v1.RowDescription.description - */ - description: { - /** - * @generated from field: string present = 1; - */ - value: string; - case: "present"; - } | { - /** - * @generated from field: string present_and_inferred_identical = 2; - */ - value: string; - case: "presentAndInferredIdentical"; - } | { - /** - * @generated from field: quary.service.v1.RowDescription.PresentWithInference present_with_different_inference = 3; - */ - value: RowDescription_PresentWithInference; - case: "presentWithDifferentInference"; - } | { - /** - * @generated from field: string inferred = 4; - */ - value: string; - case: "inferred"; - } | { - /** - * @generated from field: google.protobuf.Empty not_present = 5; - */ - value: Empty; - case: "notPresent"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.RowDescription"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "present", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "description" }, - { no: 2, name: "present_and_inferred_identical", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "description" }, - { no: 3, name: "present_with_different_inference", kind: "message", T: RowDescription_PresentWithInference, oneof: "description" }, - { no: 4, name: "inferred", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "description" }, - { no: 5, name: "not_present", kind: "message", T: Empty, oneof: "description" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): RowDescription { - return new RowDescription().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): RowDescription { - return new RowDescription().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): RowDescription { - return new RowDescription().fromJsonString(jsonString, options); - } - - static equals(a: RowDescription | PlainMessage | undefined, b: RowDescription | PlainMessage | undefined): boolean { - return proto3.util.equals(RowDescription, a, b); - } -} - -/** - * @generated from message quary.service.v1.RowDescription.PresentWithInference - */ -export class RowDescription_PresentWithInference extends Message { - /** - * @generated from field: string present = 1; - */ - present = ""; - - /** - * @generated from field: string inferred = 2; - */ - inferred = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.RowDescription.PresentWithInference"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "present", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "inferred", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): RowDescription_PresentWithInference { - return new RowDescription_PresentWithInference().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): RowDescription_PresentWithInference { - return new RowDescription_PresentWithInference().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): RowDescription_PresentWithInference { - return new RowDescription_PresentWithInference().fromJsonString(jsonString, options); - } - - static equals(a: RowDescription_PresentWithInference | PlainMessage | undefined, b: RowDescription_PresentWithInference | PlainMessage | undefined): boolean { - return proto3.util.equals(RowDescription_PresentWithInference, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/test_result_pb.ts b/proto/gen/es/quary/service/v1/test_result_pb.ts deleted file mode 100644 index e4d39495..00000000 --- a/proto/gen/es/quary/service/v1/test_result_pb.ts +++ /dev/null @@ -1,315 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/test_result.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Empty, Message, proto3 } from "@bufbuild/protobuf"; -import { QueryResult } from "./query_result_pb.js"; - -/** - * TestResult is the result of a test serializable so it can be shared - * - * @generated from message quary.service.v1.TestResult - */ -export class TestResult extends Message { - /** - * @generated from field: string test_name = 1; - */ - testName = ""; - - /** - * @generated from field: string query = 2; - */ - query = ""; - - /** - * @generated from oneof quary.service.v1.TestResult.test_result - */ - testResult: { - /** - * @generated from field: quary.service.v1.Passed passed = 3; - */ - value: Passed; - case: "passed"; - } | { - /** - * @generated from field: quary.service.v1.Failed failed = 4; - */ - value: Failed; - case: "failed"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestResult"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "test_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "query", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "passed", kind: "message", T: Passed, oneof: "test_result" }, - { no: 4, name: "failed", kind: "message", T: Failed, oneof: "test_result" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestResult { - return new TestResult().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestResult { - return new TestResult().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestResult { - return new TestResult().fromJsonString(jsonString, options); - } - - static equals(a: TestResult | PlainMessage | undefined, b: TestResult | PlainMessage | undefined): boolean { - return proto3.util.equals(TestResult, a, b); - } -} - -/** - * @generated from message quary.service.v1.InferredChain - */ -export class InferredChain extends Message { - /** - * @generated from field: repeated string inferred_chain = 1; - */ - inferredChain: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.InferredChain"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "inferred_chain", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): InferredChain { - return new InferredChain().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): InferredChain { - return new InferredChain().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): InferredChain { - return new InferredChain().fromJsonString(jsonString, options); - } - - static equals(a: InferredChain | PlainMessage | undefined, b: InferredChain | PlainMessage | undefined): boolean { - return proto3.util.equals(InferredChain, a, b); - } -} - -/** - * @generated from message quary.service.v1.InferredChainWithOperation - */ -export class InferredChainWithOperation extends Message { - /** - * @generated from field: repeated string inferred_chain = 1; - */ - inferredChain: string[] = []; - - /** - * @generated from field: string operation = 2; - */ - operation = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.InferredChainWithOperation"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "inferred_chain", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 2, name: "operation", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): InferredChainWithOperation { - return new InferredChainWithOperation().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): InferredChainWithOperation { - return new InferredChainWithOperation().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): InferredChainWithOperation { - return new InferredChainWithOperation().fromJsonString(jsonString, options); - } - - static equals(a: InferredChainWithOperation | PlainMessage | undefined, b: InferredChainWithOperation | PlainMessage | undefined): boolean { - return proto3.util.equals(InferredChainWithOperation, a, b); - } -} - -/** - * @generated from message quary.service.v1.Passed - */ -export class Passed extends Message { - /** - * @generated from oneof quary.service.v1.Passed.reason - */ - reason: { - /** - * @generated from field: google.protobuf.Empty ran = 1; - */ - value: Empty; - case: "ran"; - } | { - /** - * @generated from field: quary.service.v1.InferredChain inferred_from_tests = 2; - */ - value: InferredChain; - case: "inferredFromTests"; - } | { - /** - * inferred_from_logic adds a logic string which explains how it is derived - * - * @generated from field: string inferred_from_logic = 3; - */ - value: string; - case: "inferredFromLogic"; - } | { - /** - * inferred_through_tests_operation infers that the test was inferred and implied through the operation - * - * @generated from field: quary.service.v1.InferredChainWithOperation inferred_through_tests_operation = 4; - */ - value: InferredChainWithOperation; - case: "inferredThroughTestsOperation"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Passed"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "ran", kind: "message", T: Empty, oneof: "reason" }, - { no: 2, name: "inferred_from_tests", kind: "message", T: InferredChain, oneof: "reason" }, - { no: 3, name: "inferred_from_logic", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "reason" }, - { no: 4, name: "inferred_through_tests_operation", kind: "message", T: InferredChainWithOperation, oneof: "reason" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Passed { - return new Passed().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Passed { - return new Passed().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Passed { - return new Passed().fromJsonString(jsonString, options); - } - - static equals(a: Passed | PlainMessage | undefined, b: Passed | PlainMessage | undefined): boolean { - return proto3.util.equals(Passed, a, b); - } -} - -/** - * @generated from message quary.service.v1.Failed - */ -export class Failed extends Message { - /** - * @generated from oneof quary.service.v1.Failed.reason - */ - reason: { - /** - * @generated from field: quary.service.v1.FailedRunResults ran = 1; - */ - value: FailedRunResults; - case: "ran"; - } | { - /** - * @generated from field: quary.service.v1.InferredChain inferred_from_tests = 2; - */ - value: InferredChain; - case: "inferredFromTests"; - } | { - /** - * @generated from field: quary.service.v1.InferredChainWithOperation inferred_through_tests_operation = 3; - */ - value: InferredChainWithOperation; - case: "inferredThroughTestsOperation"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Failed"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "ran", kind: "message", T: FailedRunResults, oneof: "reason" }, - { no: 2, name: "inferred_from_tests", kind: "message", T: InferredChain, oneof: "reason" }, - { no: 3, name: "inferred_through_tests_operation", kind: "message", T: InferredChainWithOperation, oneof: "reason" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Failed { - return new Failed().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Failed { - return new Failed().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Failed { - return new Failed().fromJsonString(jsonString, options); - } - - static equals(a: Failed | PlainMessage | undefined, b: Failed | PlainMessage | undefined): boolean { - return proto3.util.equals(Failed, a, b); - } -} - -/** - * @generated from message quary.service.v1.FailedRunResults - */ -export class FailedRunResults extends Message { - /** - * @generated from field: quary.service.v1.QueryResult query_result = 1; - */ - queryResult?: QueryResult; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.FailedRunResults"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "query_result", kind: "message", T: QueryResult }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): FailedRunResults { - return new FailedRunResults().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): FailedRunResults { - return new FailedRunResults().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): FailedRunResults { - return new FailedRunResults().fromJsonString(jsonString, options); - } - - static equals(a: FailedRunResults | PlainMessage | undefined, b: FailedRunResults | PlainMessage | undefined): boolean { - return proto3.util.equals(FailedRunResults, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/test_results_pb.ts b/proto/gen/es/quary/service/v1/test_results_pb.ts deleted file mode 100644 index 92801bab..00000000 --- a/proto/gen/es/quary/service/v1/test_results_pb.ts +++ /dev/null @@ -1,49 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/test_results.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; -import { TestResult } from "./test_result_pb.js"; - -/** - * WasmRunTestResponse is a temporary message type to work on inferring in Rust rather than in Typescript. - * The goal is to make better interfaces over time. - * - * @generated from message quary.service.v1.TestResults - */ -export class TestResults extends Message { - /** - * @generated from field: repeated quary.service.v1.TestResult results = 1; - */ - results: TestResult[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestResults"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "results", kind: "message", T: TestResult, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestResults { - return new TestResults().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestResults { - return new TestResults().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestResults { - return new TestResults().fromJsonString(jsonString, options); - } - - static equals(a: TestResults | PlainMessage | undefined, b: TestResults | PlainMessage | undefined): boolean { - return proto3.util.equals(TestResults, a, b); - } -} - diff --git a/proto/gen/es/quary/service/v1/test_runner_pb.ts b/proto/gen/es/quary/service/v1/test_runner_pb.ts deleted file mode 100644 index 637806f5..00000000 --- a/proto/gen/es/quary/service/v1/test_runner_pb.ts +++ /dev/null @@ -1,37 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/test_runner.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import { proto3 } from "@bufbuild/protobuf"; - -/** - * @generated from enum quary.service.v1.TestRunner - */ -export enum TestRunner { - /** - * @generated from enum value: TEST_RUNNER_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, - - /** - * TEST_RUNNER_ALL is a runner that will run all the tests in the test suite. - * - * @generated from enum value: TEST_RUNNER_ALL = 1; - */ - ALL = 1, - - /** - * TEST_RUNNER_NONE is a runner that will run skip tests in the test suite that can be inferred from other tests in the test suite. - * - * @generated from enum value: TEST_RUNNER_SKIP = 2; - */ - SKIP = 2, -} -// Retrieve enum metadata with: proto3.getEnumType(TestRunner) -proto3.util.setEnumType(TestRunner, "quary.service.v1.TestRunner", [ - { no: 0, name: "TEST_RUNNER_UNSPECIFIED" }, - { no: 1, name: "TEST_RUNNER_ALL" }, - { no: 2, name: "TEST_RUNNER_SKIP" }, -]); - diff --git a/proto/gen/es/quary/service/v1/types_pb.ts b/proto/gen/es/quary/service/v1/types_pb.ts deleted file mode 100644 index a3c8b3ab..00000000 --- a/proto/gen/es/quary/service/v1/types_pb.ts +++ /dev/null @@ -1,1205 +0,0 @@ -// @generated by protoc-gen-es v1.8.0 with parameter "target=ts" -// @generated from file quary/service/v1/types.proto (package quary.service.v1, syntax proto3) -/* eslint-disable */ -// @ts-nocheck - -import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; -import { Message, proto3 } from "@bufbuild/protobuf"; - -/** - * @generated from message quary.service.v1.Test - */ -export class Test extends Message { - /** - * @generated from oneof quary.service.v1.Test.test_type - */ - testType: { - /** - * @generated from field: quary.service.v1.TestSQLFile sql = 1; - */ - value: TestSQLFile; - case: "sql"; - } | { - /** - * @generated from field: quary.service.v1.TestUnique unique = 2; - */ - value: TestUnique; - case: "unique"; - } | { - /** - * @generated from field: quary.service.v1.TestNotNull not_null = 3; - */ - value: TestNotNull; - case: "notNull"; - } | { - /** - * @generated from field: quary.service.v1.TestRelationship relationship = 4; - */ - value: TestRelationship; - case: "relationship"; - } | { - /** - * @generated from field: quary.service.v1.TestAcceptedValues accepted_values = 5; - */ - value: TestAcceptedValues; - case: "acceptedValues"; - } | { - /** - * @generated from field: quary.service.v1.TestGreaterThanOrEqual greater_than_or_equal = 6; - */ - value: TestGreaterThanOrEqual; - case: "greaterThanOrEqual"; - } | { - /** - * @generated from field: quary.service.v1.TestLessThanOrEqual less_than_or_equal = 7; - */ - value: TestLessThanOrEqual; - case: "lessThanOrEqual"; - } | { - /** - * @generated from field: quary.service.v1.TestGreaterThan greater_than = 8; - */ - value: TestGreaterThan; - case: "greaterThan"; - } | { - /** - * @generated from field: quary.service.v1.TestLessThan less_than = 9; - */ - value: TestLessThan; - case: "lessThan"; - } | { - /** - * @generated from field: quary.service.v1.TestMultiColumnUnique multi_column_unique = 10; - */ - value: TestMultiColumnUnique; - case: "multiColumnUnique"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Test"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "sql", kind: "message", T: TestSQLFile, oneof: "test_type" }, - { no: 2, name: "unique", kind: "message", T: TestUnique, oneof: "test_type" }, - { no: 3, name: "not_null", kind: "message", T: TestNotNull, oneof: "test_type" }, - { no: 4, name: "relationship", kind: "message", T: TestRelationship, oneof: "test_type" }, - { no: 5, name: "accepted_values", kind: "message", T: TestAcceptedValues, oneof: "test_type" }, - { no: 6, name: "greater_than_or_equal", kind: "message", T: TestGreaterThanOrEqual, oneof: "test_type" }, - { no: 7, name: "less_than_or_equal", kind: "message", T: TestLessThanOrEqual, oneof: "test_type" }, - { no: 8, name: "greater_than", kind: "message", T: TestGreaterThan, oneof: "test_type" }, - { no: 9, name: "less_than", kind: "message", T: TestLessThan, oneof: "test_type" }, - { no: 10, name: "multi_column_unique", kind: "message", T: TestMultiColumnUnique, oneof: "test_type" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Test { - return new Test().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Test { - return new Test().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Test { - return new Test().fromJsonString(jsonString, options); - } - - static equals(a: Test | PlainMessage | undefined, b: Test | PlainMessage | undefined): boolean { - return proto3.util.equals(Test, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestSQLFile - */ -export class TestSQLFile extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: repeated string references = 2; - */ - references: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestSQLFile"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "references", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestSQLFile { - return new TestSQLFile().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestSQLFile { - return new TestSQLFile().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestSQLFile { - return new TestSQLFile().fromJsonString(jsonString, options); - } - - static equals(a: TestSQLFile | PlainMessage | undefined, b: TestSQLFile | PlainMessage | undefined): boolean { - return proto3.util.equals(TestSQLFile, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestUnique - */ -export class TestUnique extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string model = 2; - */ - model = ""; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: string column = 4; - */ - column = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestUnique"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestUnique { - return new TestUnique().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestUnique { - return new TestUnique().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestUnique { - return new TestUnique().fromJsonString(jsonString, options); - } - - static equals(a: TestUnique | PlainMessage | undefined, b: TestUnique | PlainMessage | undefined): boolean { - return proto3.util.equals(TestUnique, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestNotNull - */ -export class TestNotNull extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string model = 2; - */ - model = ""; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: string column = 4; - */ - column = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestNotNull"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestNotNull { - return new TestNotNull().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestNotNull { - return new TestNotNull().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestNotNull { - return new TestNotNull().fromJsonString(jsonString, options); - } - - static equals(a: TestNotNull | PlainMessage | undefined, b: TestNotNull | PlainMessage | undefined): boolean { - return proto3.util.equals(TestNotNull, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestGreaterThanOrEqual - */ -export class TestGreaterThanOrEqual extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string model = 2; - */ - model = ""; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: string column = 4; - */ - column = ""; - - /** - * @generated from field: string value = 5; - */ - value = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestGreaterThanOrEqual"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestGreaterThanOrEqual { - return new TestGreaterThanOrEqual().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestGreaterThanOrEqual { - return new TestGreaterThanOrEqual().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestGreaterThanOrEqual { - return new TestGreaterThanOrEqual().fromJsonString(jsonString, options); - } - - static equals(a: TestGreaterThanOrEqual | PlainMessage | undefined, b: TestGreaterThanOrEqual | PlainMessage | undefined): boolean { - return proto3.util.equals(TestGreaterThanOrEqual, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestLessThanOrEqual - */ -export class TestLessThanOrEqual extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string model = 2; - */ - model = ""; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: string column = 4; - */ - column = ""; - - /** - * @generated from field: string value = 5; - */ - value = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestLessThanOrEqual"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestLessThanOrEqual { - return new TestLessThanOrEqual().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestLessThanOrEqual { - return new TestLessThanOrEqual().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestLessThanOrEqual { - return new TestLessThanOrEqual().fromJsonString(jsonString, options); - } - - static equals(a: TestLessThanOrEqual | PlainMessage | undefined, b: TestLessThanOrEqual | PlainMessage | undefined): boolean { - return proto3.util.equals(TestLessThanOrEqual, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestGreaterThan - */ -export class TestGreaterThan extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string model = 2; - */ - model = ""; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: string column = 4; - */ - column = ""; - - /** - * @generated from field: string value = 5; - */ - value = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestGreaterThan"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestGreaterThan { - return new TestGreaterThan().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestGreaterThan { - return new TestGreaterThan().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestGreaterThan { - return new TestGreaterThan().fromJsonString(jsonString, options); - } - - static equals(a: TestGreaterThan | PlainMessage | undefined, b: TestGreaterThan | PlainMessage | undefined): boolean { - return proto3.util.equals(TestGreaterThan, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestLessThan - */ -export class TestLessThan extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string model = 2; - */ - model = ""; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: string column = 4; - */ - column = ""; - - /** - * @generated from field: string value = 5; - */ - value = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestLessThan"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestLessThan { - return new TestLessThan().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestLessThan { - return new TestLessThan().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestLessThan { - return new TestLessThan().fromJsonString(jsonString, options); - } - - static equals(a: TestLessThan | PlainMessage | undefined, b: TestLessThan | PlainMessage | undefined): boolean { - return proto3.util.equals(TestLessThan, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestRelationship - */ -export class TestRelationship extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string source_model = 2; - */ - sourceModel = ""; - - /** - * @generated from field: string source_path = 3; - */ - sourcePath = ""; - - /** - * @generated from field: string source_column = 4; - */ - sourceColumn = ""; - - /** - * @generated from field: string target_model = 5; - */ - targetModel = ""; - - /** - * @generated from field: string target_path = 7; - */ - targetPath = ""; - - /** - * @generated from field: string target_column = 8; - */ - targetColumn = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestRelationship"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "source_model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "source_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "source_column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "target_model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 7, name: "target_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 8, name: "target_column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestRelationship { - return new TestRelationship().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestRelationship { - return new TestRelationship().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestRelationship { - return new TestRelationship().fromJsonString(jsonString, options); - } - - static equals(a: TestRelationship | PlainMessage | undefined, b: TestRelationship | PlainMessage | undefined): boolean { - return proto3.util.equals(TestRelationship, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestAcceptedValues - */ -export class TestAcceptedValues extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string model = 2; - */ - model = ""; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: string column = 4; - */ - column = ""; - - /** - * @generated from field: repeated string accepted_values = 5; - */ - acceptedValues: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestAcceptedValues"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "column", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "accepted_values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestAcceptedValues { - return new TestAcceptedValues().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestAcceptedValues { - return new TestAcceptedValues().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestAcceptedValues { - return new TestAcceptedValues().fromJsonString(jsonString, options); - } - - static equals(a: TestAcceptedValues | PlainMessage | undefined, b: TestAcceptedValues | PlainMessage | undefined): boolean { - return proto3.util.equals(TestAcceptedValues, a, b); - } -} - -/** - * @generated from message quary.service.v1.TestMultiColumnUnique - */ -export class TestMultiColumnUnique extends Message { - /** - * @generated from field: string file_path = 1; - */ - filePath = ""; - - /** - * @generated from field: string model = 2; - */ - model = ""; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * @generated from field: repeated string columns = 4; - */ - columns: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.TestMultiColumnUnique"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "columns", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): TestMultiColumnUnique { - return new TestMultiColumnUnique().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): TestMultiColumnUnique { - return new TestMultiColumnUnique().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): TestMultiColumnUnique { - return new TestMultiColumnUnique().fromJsonString(jsonString, options); - } - - static equals(a: TestMultiColumnUnique | PlainMessage | undefined, b: TestMultiColumnUnique | PlainMessage | undefined): boolean { - return proto3.util.equals(TestMultiColumnUnique, a, b); - } -} - -/** - * @generated from message quary.service.v1.Seed - */ -export class Seed extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: string file_path = 2; - */ - filePath = ""; - - /** - * @generated from field: string file_sha256_hash = 3; - */ - fileSha256Hash = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Seed"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "file_sha256_hash", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Seed { - return new Seed().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Seed { - return new Seed().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Seed { - return new Seed().fromJsonString(jsonString, options); - } - - static equals(a: Seed | PlainMessage | undefined, b: Seed | PlainMessage | undefined): boolean { - return proto3.util.equals(Seed, a, b); - } -} - -/** - * @generated from message quary.service.v1.Model - */ -export class Model extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - /** - * Tags are used to group different parts of the project together. - * - * @generated from field: repeated string tags = 4; - */ - tags: string[] = []; - - /** - * @generated from field: string file_path = 3; - */ - filePath = ""; - - /** - * @generated from field: string file_sha256_hash = 7; - */ - fileSha256Hash = ""; - - /** - * @generated from field: optional string materialization = 8; - */ - materialization?: string; - - /** - * @generated from field: repeated quary.service.v1.Model.ModelColum columns = 5; - */ - columns: Model_ModelColum[] = []; - - /** - * References to other models/seeds/snapshots that are used in the model. These are unique keys and sorted - * alphabetically. - * - * @generated from field: repeated string references = 6; - */ - references: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Model"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 4, name: "tags", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 3, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 7, name: "file_sha256_hash", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 8, name: "materialization", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 5, name: "columns", kind: "message", T: Model_ModelColum, repeated: true }, - { no: 6, name: "references", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Model { - return new Model().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Model { - return new Model().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Model { - return new Model().fromJsonString(jsonString, options); - } - - static equals(a: Model | PlainMessage | undefined, b: Model | PlainMessage | undefined): boolean { - return proto3.util.equals(Model, a, b); - } -} - -/** - * @generated from message quary.service.v1.Model.ModelColum - */ -export class Model_ModelColum extends Message { - /** - * @generated from field: string title = 1; - */ - title = ""; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Model.ModelColum"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "title", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Model_ModelColum { - return new Model_ModelColum().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Model_ModelColum { - return new Model_ModelColum().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Model_ModelColum { - return new Model_ModelColum().fromJsonString(jsonString, options); - } - - static equals(a: Model_ModelColum | PlainMessage | undefined, b: Model_ModelColum | PlainMessage | undefined): boolean { - return proto3.util.equals(Model_ModelColum, a, b); - } -} - -/** - * @generated from message quary.service.v1.Snapshot - */ -export class Snapshot extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - /** - * Tags are used to group different parts of the project together. - * - * @generated from field: repeated string tags = 8; - */ - tags: string[] = []; - - /** - * @generated from field: string file_path = 3; - */ - filePath = ""; - - /** - * @generated from field: string file_sha256_hash = 4; - */ - fileSha256Hash = ""; - - /** - * @generated from field: string unique_key = 5; - */ - uniqueKey = ""; - - /** - * @generated from field: quary.service.v1.Snapshot.SnapshotStrategy strategy = 6; - */ - strategy?: Snapshot_SnapshotStrategy; - - /** - * References to other seeds/sources that are used in the snapshot. These are unique keys and sorted - * alphabetically. - * - * @generated from field: repeated string references = 7; - */ - references: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Snapshot"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 8, name: "tags", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 3, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 4, name: "file_sha256_hash", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "unique_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 6, name: "strategy", kind: "message", T: Snapshot_SnapshotStrategy }, - { no: 7, name: "references", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Snapshot { - return new Snapshot().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Snapshot { - return new Snapshot().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Snapshot { - return new Snapshot().fromJsonString(jsonString, options); - } - - static equals(a: Snapshot | PlainMessage | undefined, b: Snapshot | PlainMessage | undefined): boolean { - return proto3.util.equals(Snapshot, a, b); - } -} - -/** - * @generated from message quary.service.v1.Snapshot.SnapshotStrategy - */ -export class Snapshot_SnapshotStrategy extends Message { - /** - * @generated from oneof quary.service.v1.Snapshot.SnapshotStrategy.strategy_type - */ - strategyType: { - /** - * @generated from field: quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy timestamp = 1; - */ - value: Snapshot_SnapshotStrategy_TimestampStrategy; - case: "timestamp"; - } | { case: undefined; value?: undefined } = { case: undefined }; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Snapshot.SnapshotStrategy"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "timestamp", kind: "message", T: Snapshot_SnapshotStrategy_TimestampStrategy, oneof: "strategy_type" }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Snapshot_SnapshotStrategy { - return new Snapshot_SnapshotStrategy().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Snapshot_SnapshotStrategy { - return new Snapshot_SnapshotStrategy().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Snapshot_SnapshotStrategy { - return new Snapshot_SnapshotStrategy().fromJsonString(jsonString, options); - } - - static equals(a: Snapshot_SnapshotStrategy | PlainMessage | undefined, b: Snapshot_SnapshotStrategy | PlainMessage | undefined): boolean { - return proto3.util.equals(Snapshot_SnapshotStrategy, a, b); - } -} - -/** - * @generated from message quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy - */ -export class Snapshot_SnapshotStrategy_TimestampStrategy extends Message { - /** - * @generated from field: string updated_at = 1; - */ - updatedAt = ""; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "updated_at", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Snapshot_SnapshotStrategy_TimestampStrategy { - return new Snapshot_SnapshotStrategy_TimestampStrategy().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Snapshot_SnapshotStrategy_TimestampStrategy { - return new Snapshot_SnapshotStrategy_TimestampStrategy().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Snapshot_SnapshotStrategy_TimestampStrategy { - return new Snapshot_SnapshotStrategy_TimestampStrategy().fromJsonString(jsonString, options); - } - - static equals(a: Snapshot_SnapshotStrategy_TimestampStrategy | PlainMessage | undefined, b: Snapshot_SnapshotStrategy_TimestampStrategy | PlainMessage | undefined): boolean { - return proto3.util.equals(Snapshot_SnapshotStrategy_TimestampStrategy, a, b); - } -} - -/** - * Generic source structure, used as input to generate the quary-specific source structure - * - * @generated from message quary.service.v1.DatabaseSource - */ -export class DatabaseSource extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: string path = 2; - */ - path = ""; - - /** - * @generated from field: repeated string columns = 3; - */ - columns: string[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.DatabaseSource"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 3, name: "columns", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): DatabaseSource { - return new DatabaseSource().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): DatabaseSource { - return new DatabaseSource().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): DatabaseSource { - return new DatabaseSource().fromJsonString(jsonString, options); - } - - static equals(a: DatabaseSource | PlainMessage | undefined, b: DatabaseSource | PlainMessage | undefined): boolean { - return proto3.util.equals(DatabaseSource, a, b); - } -} - -/** - * @generated from message quary.service.v1.Source - */ -export class Source extends Message { - /** - * @generated from field: string name = 1; - */ - name = ""; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - /** - * @generated from field: string path = 3; - */ - path = ""; - - /** - * Tags are used to group different parts of the project together. - * - * @generated from field: repeated string tags = 6; - */ - tags: string[] = []; - - /** - * TODO Replace File path references with whole file references - * - * @generated from field: string file_path = 4; - */ - filePath = ""; - - /** - * @generated from field: repeated quary.service.v1.Source.SourceColumn columns = 5; - */ - columns: Source_SourceColumn[] = []; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Source"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - { no: 3, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 6, name: "tags", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, - { no: 4, name: "file_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 5, name: "columns", kind: "message", T: Source_SourceColumn, repeated: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Source { - return new Source().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Source { - return new Source().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Source { - return new Source().fromJsonString(jsonString, options); - } - - static equals(a: Source | PlainMessage | undefined, b: Source | PlainMessage | undefined): boolean { - return proto3.util.equals(Source, a, b); - } -} - -/** - * @generated from message quary.service.v1.Source.SourceColumn - */ -export class Source_SourceColumn extends Message { - /** - * @generated from field: string title = 1; - */ - title = ""; - - /** - * @generated from field: optional string description = 2; - */ - description?: string; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "quary.service.v1.Source.SourceColumn"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "title", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): Source_SourceColumn { - return new Source_SourceColumn().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): Source_SourceColumn { - return new Source_SourceColumn().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): Source_SourceColumn { - return new Source_SourceColumn().fromJsonString(jsonString, options); - } - - static equals(a: Source_SourceColumn | PlainMessage | undefined, b: Source_SourceColumn | PlainMessage | undefined): boolean { - return proto3.util.equals(Source_SourceColumn, a, b); - } -} - diff --git a/proto/gen/json_schema/ColumnDescription.json b/proto/gen/json_schema/ColumnDescription.json deleted file mode 100644 index 4d8695c2..00000000 --- a/proto/gen/json_schema/ColumnDescription.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ColumnDescription", - "definitions": { - "ColumnDescription": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tests": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Description" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ColumnTest.json b/proto/gen/json_schema/ColumnTest.json deleted file mode 100644 index 4a6447dc..00000000 --- a/proto/gen/json_schema/ColumnTest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ColumnTest", - "definitions": { - "ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ConnectionConfig.json b/proto/gen/json_schema/ConnectionConfig.json deleted file mode 100644 index cb6cf267..00000000 --- a/proto/gen/json_schema/ConnectionConfig.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ConnectionConfig", - "definitions": { - "ConnectionConfig": { - "properties": { - "duckdb": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB", - "additionalProperties": true - }, - "duckdb_in_memory": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory", - "additionalProperties": true - }, - "sqlite": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigSqLite", - "additionalProperties": true - }, - "sqlite_in_memory": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory", - "additionalProperties": true - }, - "big_query": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery", - "additionalProperties": true - }, - "snowflake": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake", - "additionalProperties": true - }, - "postgres": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigPostgres", - "additionalProperties": true - }, - "vars": { - "items": { - "$ref": "#/definitions/quary.service.v1.Var" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config", - "description": "Configuration describes the configuration of the project." - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery": { - "properties": { - "project_id": { - "type": "string" - }, - "dataset_id": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Big Query" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB": { - "properties": { - "path": { - "type": "string" - }, - "schema": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Duck DB" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory": { - "properties": { - "schema": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Duck DB In Memory" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigPostgres": { - "properties": { - "schema": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Postgres" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake": { - "properties": { - "account_url": { - "type": "string" - }, - "client_id": { - "type": "string" - }, - "client_secret": { - "type": "string" - }, - "role": { - "type": "string", - "description": "TODO: think about making optional" - }, - "database": { - "type": "string" - }, - "schema": { - "type": "string" - }, - "warehouse": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Snowflake" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigSqLite": { - "properties": { - "path": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Sq Lite" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory": { - "additionalProperties": true, - "type": "object", - "title": "Connection Config Sq Lite In Memory" - }, - "quary.service.v1.Var": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Var" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/DatabaseSource.json b/proto/gen/json_schema/DatabaseSource.json deleted file mode 100644 index e243d7b5..00000000 --- a/proto/gen/json_schema/DatabaseSource.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/DatabaseSource", - "definitions": { - "DatabaseSource": { - "properties": { - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "columns": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Database Source", - "description": "Generic source structure, used as input to generate the quary-specific source structure" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Edge.json b/proto/gen/json_schema/Edge.json deleted file mode 100644 index 27e85254..00000000 --- a/proto/gen/json_schema/Edge.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Edge", - "definitions": { - "Edge": { - "properties": { - "to": { - "type": "string" - }, - "from": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Edge" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ExecRequest.json b/proto/gen/json_schema/ExecRequest.json deleted file mode 100644 index 3e846407..00000000 --- a/proto/gen/json_schema/ExecRequest.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ExecRequest", - "definitions": { - "ExecRequest": { - "properties": { - "query": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Exec Request" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ExecResponse.json b/proto/gen/json_schema/ExecResponse.json deleted file mode 100644 index 37cdbe58..00000000 --- a/proto/gen/json_schema/ExecResponse.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ExecResponse", - "definitions": { - "ExecResponse": { - "additionalProperties": true, - "type": "object", - "title": "Exec Response" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Failed.json b/proto/gen/json_schema/Failed.json deleted file mode 100644 index 28fbe1d2..00000000 --- a/proto/gen/json_schema/Failed.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Failed", - "definitions": { - "Failed": { - "properties": { - "ran": { - "$ref": "#/definitions/quary.service.v1.FailedRunResults", - "additionalProperties": true - }, - "inferred_from_tests": { - "$ref": "#/definitions/quary.service.v1.InferredChain", - "additionalProperties": true - }, - "inferred_through_tests_operation": { - "$ref": "#/definitions/quary.service.v1.InferredChainWithOperation", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Failed" - }, - "quary.service.v1.FailedRunResults": { - "properties": { - "query_result": { - "$ref": "#/definitions/quary.service.v1.QueryResult", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Failed Run Results" - }, - "quary.service.v1.InferredChain": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain" - }, - "quary.service.v1.InferredChainWithOperation": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operation": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain With Operation" - }, - "quary.service.v1.QueryResult": { - "properties": { - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.QueryResultColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result", - "description": "QueryResult is the result of a ran query." - }, - "quary.service.v1.QueryResultColumn": { - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result Column" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/FailedRunResults.json b/proto/gen/json_schema/FailedRunResults.json deleted file mode 100644 index 01b5cb96..00000000 --- a/proto/gen/json_schema/FailedRunResults.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/FailedRunResults", - "definitions": { - "FailedRunResults": { - "properties": { - "query_result": { - "$ref": "#/definitions/quary.service.v1.QueryResult", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Failed Run Results" - }, - "quary.service.v1.QueryResult": { - "properties": { - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.QueryResultColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result", - "description": "QueryResult is the result of a ran query." - }, - "quary.service.v1.QueryResultColumn": { - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result Column" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/File.json b/proto/gen/json_schema/File.json deleted file mode 100644 index ae952eba..00000000 --- a/proto/gen/json_schema/File.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/File", - "definitions": { - "File": { - "properties": { - "name": { - "type": "string", - "description": "The name of the file. Names are relative to the root of the file system." - }, - "contents": { - "type": "string", - "format": "binary", - "binaryEncoding": "base64" - } - }, - "additionalProperties": true, - "type": "object", - "title": "File" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/FileSystem.json b/proto/gen/json_schema/FileSystem.json deleted file mode 100644 index b016b025..00000000 --- a/proto/gen/json_schema/FileSystem.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/FileSystem", - "definitions": { - "FileSystem": { - "properties": { - "files": { - "additionalProperties": { - "$ref": "#/definitions/quary.service.v1.File", - "additionalProperties": true - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "File System" - }, - "quary.service.v1.File": { - "properties": { - "name": { - "type": "string", - "description": "The name of the file. Names are relative to the root of the file system." - }, - "contents": { - "type": "string", - "format": "binary", - "binaryEncoding": "base64" - } - }, - "additionalProperties": true, - "type": "object", - "title": "File" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/InferredChain.json b/proto/gen/json_schema/InferredChain.json deleted file mode 100644 index 0b999a4f..00000000 --- a/proto/gen/json_schema/InferredChain.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/InferredChain", - "definitions": { - "InferredChain": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/InferredChainWithOperation.json b/proto/gen/json_schema/InferredChainWithOperation.json deleted file mode 100644 index bb9e0cc7..00000000 --- a/proto/gen/json_schema/InferredChainWithOperation.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/InferredChainWithOperation", - "definitions": { - "InferredChainWithOperation": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operation": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain With Operation" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ListColumnsRequest.json b/proto/gen/json_schema/ListColumnsRequest.json deleted file mode 100644 index cca4a58c..00000000 --- a/proto/gen/json_schema/ListColumnsRequest.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ListColumnsRequest", - "definitions": { - "ListColumnsRequest": { - "properties": { - "table_name": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "List Columns Request" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ListColumnsResponse.json b/proto/gen/json_schema/ListColumnsResponse.json deleted file mode 100644 index f0d78052..00000000 --- a/proto/gen/json_schema/ListColumnsResponse.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ListColumnsResponse", - "definitions": { - "ListColumnsResponse": { - "properties": { - "columns": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "List Columns Response" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ListSourcesRequest.json b/proto/gen/json_schema/ListSourcesRequest.json deleted file mode 100644 index 62de9dfb..00000000 --- a/proto/gen/json_schema/ListSourcesRequest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ListSourcesRequest", - "definitions": { - "ListSourcesRequest": { - "additionalProperties": true, - "type": "object", - "title": "List Sources Request" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ListSourcesResponse.json b/proto/gen/json_schema/ListSourcesResponse.json deleted file mode 100644 index 5cb3d18f..00000000 --- a/proto/gen/json_schema/ListSourcesResponse.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ListSourcesResponse", - "definitions": { - "ListSourcesResponse": { - "properties": { - "sources": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileSource" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "List Sources Response" - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - }, - "quary.service.v1.ModelTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model Test" - }, - "quary.service.v1.ProjectFileColumn": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ColumnTest" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Column", - "description": "Standard types are: - not_null - unique - 'relationship' which takes into data (model and field)" - }, - "quary.service.v1.ProjectFileSource": { - "properties": { - "name": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together. For example, you could tag all sources that are related to a specific department with the same tag." - }, - "description": { - "type": "string" - }, - "path": { - "type": "string", - "description": "The full path of the source table in the database. This is used to reference the table itself. For example: - 'public.users' for where the schema is 'public' and the table is 'users' - 'project_id_123.dataset_id_123.table_id_123' for a BigQuery table" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ModelTest" - }, - "type": "array" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Source" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ListTablesRequest.json b/proto/gen/json_schema/ListTablesRequest.json deleted file mode 100644 index e0498b7b..00000000 --- a/proto/gen/json_schema/ListTablesRequest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ListTablesRequest", - "definitions": { - "ListTablesRequest": { - "additionalProperties": true, - "type": "object", - "title": "List Tables Request" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ListTablesResponse.json b/proto/gen/json_schema/ListTablesResponse.json deleted file mode 100644 index b48be7a0..00000000 --- a/proto/gen/json_schema/ListTablesResponse.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ListTablesResponse", - "definitions": { - "ListTablesResponse": { - "properties": { - "tables": { - "items": { - "$ref": "#/definitions/quary.service.v1.TableAddress" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "List Tables Response" - }, - "quary.service.v1.TableAddress": { - "properties": { - "name": { - "type": "string" - }, - "full_path": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Table Address", - "description": "TableAddress is a struct that represents a table in a database. It contains the name of the table and the full path." - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ListViewsRequest.json b/proto/gen/json_schema/ListViewsRequest.json deleted file mode 100644 index 52536429..00000000 --- a/proto/gen/json_schema/ListViewsRequest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ListViewsRequest", - "definitions": { - "ListViewsRequest": { - "additionalProperties": true, - "type": "object", - "title": "List Views Request" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ListViewsResponse.json b/proto/gen/json_schema/ListViewsResponse.json deleted file mode 100644 index 4840bf3f..00000000 --- a/proto/gen/json_schema/ListViewsResponse.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ListViewsResponse", - "definitions": { - "ListViewsResponse": { - "properties": { - "views": { - "items": { - "$ref": "#/definitions/quary.service.v1.TableAddress" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "List Views Response" - }, - "quary.service.v1.TableAddress": { - "properties": { - "name": { - "type": "string" - }, - "full_path": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Table Address", - "description": "TableAddress is a struct that represents a table in a database. It contains the name of the table and the full path." - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Model.json b/proto/gen/json_schema/Model.json deleted file mode 100644 index de90270f..00000000 --- a/proto/gen/json_schema/Model.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Model", - "definitions": { - "Model": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together." - }, - "file_path": { - "type": "string" - }, - "file_sha256_hash": { - "type": "string" - }, - "materialization": { - "type": "string" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.Model.ModelColum" - }, - "type": "array" - }, - "references": { - "items": { - "type": "string" - }, - "type": "array", - "description": "References to other models/seeds/snapshots that are used in the model. These are unique keys and sorted alphabetically." - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model" - }, - "quary.service.v1.Model.ModelColum": { - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model Colum" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ModelTest.json b/proto/gen/json_schema/ModelTest.json deleted file mode 100644 index 98d2dcb6..00000000 --- a/proto/gen/json_schema/ModelTest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ModelTest", - "definitions": { - "ModelTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model Test" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Node.json b/proto/gen/json_schema/Node.json deleted file mode 100644 index 1cec0f3c..00000000 --- a/proto/gen/json_schema/Node.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Node", - "definitions": { - "Node": { - "properties": { - "id": { - "type": "string" - }, - "is_cached": { - "type": "boolean" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Node" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Passed.json b/proto/gen/json_schema/Passed.json deleted file mode 100644 index beb436e1..00000000 --- a/proto/gen/json_schema/Passed.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Passed", - "definitions": { - "Passed": { - "properties": { - "ran": { - "additionalProperties": true, - "type": "object" - }, - "inferred_from_tests": { - "$ref": "#/definitions/quary.service.v1.InferredChain", - "additionalProperties": true - }, - "inferred_from_logic": { - "type": "string", - "description": "inferred_from_logic adds a logic string which explains how it is derived" - }, - "inferred_through_tests_operation": { - "$ref": "#/definitions/quary.service.v1.InferredChainWithOperation", - "additionalProperties": true, - "description": "inferred_through_tests_operation infers that the test was inferred and implied through the operation" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Passed" - }, - "quary.service.v1.InferredChain": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain" - }, - "quary.service.v1.InferredChainWithOperation": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operation": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain With Operation" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Position.json b/proto/gen/json_schema/Position.json deleted file mode 100644 index 7849d031..00000000 --- a/proto/gen/json_schema/Position.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Position", - "definitions": { - "Position": { - "properties": { - "line": { - "type": "integer" - }, - "character": { - "type": "integer" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Position", - "description": "Position is a simple representation of a line and character position in a file." - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Project.json b/proto/gen/json_schema/Project.json deleted file mode 100644 index cca4a520..00000000 --- a/proto/gen/json_schema/Project.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Project", - "definitions": { - "Project": { - "properties": { - "seeds": { - "additionalProperties": { - "$ref": "#/definitions/quary.service.v1.Seed", - "additionalProperties": true - }, - "type": "object" - }, - "models": { - "additionalProperties": { - "$ref": "#/definitions/quary.service.v1.Model", - "additionalProperties": true - }, - "type": "object" - }, - "tests": { - "additionalProperties": { - "$ref": "#/definitions/quary.service.v1.Test", - "additionalProperties": true - }, - "type": "object" - }, - "sources": { - "additionalProperties": { - "$ref": "#/definitions/quary.service.v1.Source", - "additionalProperties": true - }, - "type": "object" - }, - "snapshots": { - "additionalProperties": { - "$ref": "#/definitions/quary.service.v1.Snapshot", - "additionalProperties": true - }, - "type": "object" - }, - "project_files": { - "additionalProperties": { - "$ref": "#/definitions/quary.service.v1.ProjectFile", - "additionalProperties": true - }, - "type": "object" - }, - "connection_config": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project" - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - }, - "quary.service.v1.ConnectionConfig": { - "properties": { - "duckdb": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB", - "additionalProperties": true - }, - "duckdb_in_memory": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory", - "additionalProperties": true - }, - "sqlite": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigSqLite", - "additionalProperties": true - }, - "sqlite_in_memory": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory", - "additionalProperties": true - }, - "big_query": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery", - "additionalProperties": true - }, - "snowflake": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake", - "additionalProperties": true - }, - "postgres": { - "$ref": "#/definitions/quary.service.v1.ConnectionConfig.ConnectionConfigPostgres", - "additionalProperties": true - }, - "vars": { - "items": { - "$ref": "#/definitions/quary.service.v1.Var" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config", - "description": "Configuration describes the configuration of the project." - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery": { - "properties": { - "project_id": { - "type": "string" - }, - "dataset_id": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Big Query" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB": { - "properties": { - "path": { - "type": "string" - }, - "schema": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Duck DB" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory": { - "properties": { - "schema": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Duck DB In Memory" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigPostgres": { - "properties": { - "schema": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Postgres" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake": { - "properties": { - "account_url": { - "type": "string" - }, - "client_id": { - "type": "string" - }, - "client_secret": { - "type": "string" - }, - "role": { - "type": "string", - "description": "TODO: think about making optional" - }, - "database": { - "type": "string" - }, - "schema": { - "type": "string" - }, - "warehouse": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Snowflake" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigSqLite": { - "properties": { - "path": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Connection Config Sq Lite" - }, - "quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory": { - "additionalProperties": true, - "type": "object", - "title": "Connection Config Sq Lite In Memory" - }, - "quary.service.v1.Model": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together." - }, - "file_path": { - "type": "string" - }, - "file_sha256_hash": { - "type": "string" - }, - "materialization": { - "type": "string" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.Model.ModelColum" - }, - "type": "array" - }, - "references": { - "items": { - "type": "string" - }, - "type": "array", - "description": "References to other models/seeds/snapshots that are used in the model. These are unique keys and sorted alphabetically." - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model" - }, - "quary.service.v1.Model.ModelColum": { - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model Colum" - }, - "quary.service.v1.ModelTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model Test" - }, - "quary.service.v1.ProjectFile": { - "properties": { - "sources": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileSource" - }, - "type": "array" - }, - "models": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFile.Model" - }, - "type": "array" - }, - "snapshots": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFile.Snapshot" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File" - }, - "quary.service.v1.ProjectFile.Model": { - "properties": { - "name": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together. For example, you could tag all models that are related to a specific department with the same tag." - }, - "description": { - "type": "string" - }, - "materialization": { - "type": "string", - "description": "The materialization of the model, available types are specified by each database." - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ModelTest" - }, - "type": "array" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model" - }, - "quary.service.v1.ProjectFile.Snapshot": { - "properties": { - "name": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together. For example, you could tag all models that are related to a specific department with the same tag." - }, - "description": { - "type": "string" - }, - "unique_key": { - "type": "string" - }, - "strategy": { - "$ref": "#/definitions/quary.service.v1.ProjectFile.SnapshotStrategy", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Snapshot" - }, - "quary.service.v1.ProjectFile.SnapshotStrategy": { - "properties": { - "timestamp": { - "$ref": "#/definitions/quary.service.v1.ProjectFile.TimestampStrategy", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Snapshot Strategy" - }, - "quary.service.v1.ProjectFile.TimestampStrategy": { - "properties": { - "updated_at": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Timestamp Strategy" - }, - "quary.service.v1.ProjectFileColumn": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ColumnTest" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Column", - "description": "Standard types are: - not_null - unique - 'relationship' which takes into data (model and field)" - }, - "quary.service.v1.ProjectFileSource": { - "properties": { - "name": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together. For example, you could tag all sources that are related to a specific department with the same tag." - }, - "description": { - "type": "string" - }, - "path": { - "type": "string", - "description": "The full path of the source table in the database. This is used to reference the table itself. For example: - 'public.users' for where the schema is 'public' and the table is 'users' - 'project_id_123.dataset_id_123.table_id_123' for a BigQuery table" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ModelTest" - }, - "type": "array" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Source" - }, - "quary.service.v1.Seed": { - "properties": { - "name": { - "type": "string" - }, - "file_path": { - "type": "string" - }, - "file_sha256_hash": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Seed" - }, - "quary.service.v1.Snapshot": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together." - }, - "file_path": { - "type": "string" - }, - "file_sha256_hash": { - "type": "string" - }, - "unique_key": { - "type": "string" - }, - "strategy": { - "$ref": "#/definitions/quary.service.v1.Snapshot.SnapshotStrategy", - "additionalProperties": true - }, - "references": { - "items": { - "type": "string" - }, - "type": "array", - "description": "References to other seeds/sources that are used in the snapshot. These are unique keys and sorted alphabetically." - } - }, - "additionalProperties": true, - "type": "object", - "title": "Snapshot" - }, - "quary.service.v1.Snapshot.SnapshotStrategy": { - "properties": { - "timestamp": { - "$ref": "#/definitions/quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Snapshot Strategy" - }, - "quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy": { - "properties": { - "updated_at": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Timestamp Strategy" - }, - "quary.service.v1.Source": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "path": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together." - }, - "file_path": { - "type": "string", - "description": "TODO Replace File path references with whole file references" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.Source.SourceColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Source" - }, - "quary.service.v1.Source.SourceColumn": { - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Source Column" - }, - "quary.service.v1.Test": { - "properties": { - "sql": { - "$ref": "#/definitions/quary.service.v1.TestSQLFile", - "additionalProperties": true - }, - "unique": { - "$ref": "#/definitions/quary.service.v1.TestUnique", - "additionalProperties": true - }, - "not_null": { - "$ref": "#/definitions/quary.service.v1.TestNotNull", - "additionalProperties": true - }, - "relationship": { - "$ref": "#/definitions/quary.service.v1.TestRelationship", - "additionalProperties": true - }, - "accepted_values": { - "$ref": "#/definitions/quary.service.v1.TestAcceptedValues", - "additionalProperties": true - }, - "greater_than_or_equal": { - "$ref": "#/definitions/quary.service.v1.TestGreaterThanOrEqual", - "additionalProperties": true - }, - "less_than_or_equal": { - "$ref": "#/definitions/quary.service.v1.TestLessThanOrEqual", - "additionalProperties": true - }, - "greater_than": { - "$ref": "#/definitions/quary.service.v1.TestGreaterThan", - "additionalProperties": true - }, - "less_than": { - "$ref": "#/definitions/quary.service.v1.TestLessThan", - "additionalProperties": true - }, - "multi_column_unique": { - "$ref": "#/definitions/quary.service.v1.TestMultiColumnUnique", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "TODO Will eventually in the tests want to store more than the file_path but also the line location", - "description": "TODO Will eventually in the tests want to store more than the file_path but also the line location" - }, - "quary.service.v1.TestAcceptedValues": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "accepted_values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Accepted Values" - }, - "quary.service.v1.TestGreaterThan": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Greater Than" - }, - "quary.service.v1.TestGreaterThanOrEqual": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Greater Than Or Equal" - }, - "quary.service.v1.TestLessThan": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Less Than" - }, - "quary.service.v1.TestLessThanOrEqual": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Less Than Or Equal" - }, - "quary.service.v1.TestMultiColumnUnique": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "columns": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Multi Column Unique" - }, - "quary.service.v1.TestNotNull": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Not Null" - }, - "quary.service.v1.TestRelationship": { - "properties": { - "file_path": { - "type": "string" - }, - "source_model": { - "type": "string" - }, - "source_path": { - "type": "string" - }, - "source_column": { - "type": "string" - }, - "target_model": { - "type": "string" - }, - "target_path": { - "type": "string" - }, - "target_column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Relationship" - }, - "quary.service.v1.TestSQLFile": { - "properties": { - "file_path": { - "type": "string" - }, - "references": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test SQL File" - }, - "quary.service.v1.TestUnique": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Unique" - }, - "quary.service.v1.Var": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Var" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ProjectDag.json b/proto/gen/json_schema/ProjectDag.json deleted file mode 100644 index 58195d06..00000000 --- a/proto/gen/json_schema/ProjectDag.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ProjectDag", - "definitions": { - "ProjectDag": { - "properties": { - "nodes": { - "items": { - "$ref": "#/definitions/quary.service.v1.Node" - }, - "type": "array" - }, - "edges": { - "items": { - "$ref": "#/definitions/quary.service.v1.Edge" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project Dag", - "description": "DirectedAcyclicGraph represents a directed acyclic graph that is used to visualize the project dependencies in a project." - }, - "quary.service.v1.Edge": { - "properties": { - "to": { - "type": "string" - }, - "from": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Edge" - }, - "quary.service.v1.Node": { - "properties": { - "id": { - "type": "string" - }, - "is_cached": { - "type": "boolean" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Node" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ProjectFile.json b/proto/gen/json_schema/ProjectFile.json deleted file mode 100644 index 10955cb4..00000000 --- a/proto/gen/json_schema/ProjectFile.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ProjectFile", - "definitions": { - "ProjectFile": { - "properties": { - "sources": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileSource" - }, - "type": "array" - }, - "models": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFile.Model" - }, - "type": "array" - }, - "snapshots": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFile.Snapshot" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File" - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - }, - "quary.service.v1.ModelTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model Test" - }, - "quary.service.v1.ProjectFile.Model": { - "properties": { - "name": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together. For example, you could tag all models that are related to a specific department with the same tag." - }, - "description": { - "type": "string" - }, - "materialization": { - "type": "string", - "description": "The materialization of the model, available types are specified by each database." - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ModelTest" - }, - "type": "array" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model" - }, - "quary.service.v1.ProjectFile.Snapshot": { - "properties": { - "name": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together. For example, you could tag all models that are related to a specific department with the same tag." - }, - "description": { - "type": "string" - }, - "unique_key": { - "type": "string" - }, - "strategy": { - "$ref": "#/definitions/quary.service.v1.ProjectFile.SnapshotStrategy", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Snapshot" - }, - "quary.service.v1.ProjectFile.SnapshotStrategy": { - "properties": { - "timestamp": { - "$ref": "#/definitions/quary.service.v1.ProjectFile.TimestampStrategy", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Snapshot Strategy" - }, - "quary.service.v1.ProjectFile.TimestampStrategy": { - "properties": { - "updated_at": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Timestamp Strategy" - }, - "quary.service.v1.ProjectFileColumn": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ColumnTest" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Column", - "description": "Standard types are: - not_null - unique - 'relationship' which takes into data (model and field)" - }, - "quary.service.v1.ProjectFileSource": { - "properties": { - "name": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together. For example, you could tag all sources that are related to a specific department with the same tag." - }, - "description": { - "type": "string" - }, - "path": { - "type": "string", - "description": "The full path of the source table in the database. This is used to reference the table itself. For example: - 'public.users' for where the schema is 'public' and the table is 'users' - 'project_id_123.dataset_id_123.table_id_123' for a BigQuery table" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ModelTest" - }, - "type": "array" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Source" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ProjectFileColumn.json b/proto/gen/json_schema/ProjectFileColumn.json deleted file mode 100644 index 8b4d2b13..00000000 --- a/proto/gen/json_schema/ProjectFileColumn.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ProjectFileColumn", - "definitions": { - "ProjectFileColumn": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ColumnTest" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Column", - "description": "Standard types are: - not_null - unique - 'relationship' which takes into data (model and field)" - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/ProjectFileSource.json b/proto/gen/json_schema/ProjectFileSource.json deleted file mode 100644 index 1f5cb66d..00000000 --- a/proto/gen/json_schema/ProjectFileSource.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/ProjectFileSource", - "definitions": { - "ProjectFileSource": { - "properties": { - "name": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together. For example, you could tag all sources that are related to a specific department with the same tag." - }, - "description": { - "type": "string" - }, - "path": { - "type": "string", - "description": "The full path of the source table in the database. This is used to reference the table itself. For example: - 'public.users' for where the schema is 'public' and the table is 'users' - 'project_id_123.dataset_id_123.table_id_123' for a BigQuery table" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ModelTest" - }, - "type": "array" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.ProjectFileColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Source" - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - }, - "quary.service.v1.ModelTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Model Test" - }, - "quary.service.v1.ProjectFileColumn": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.ColumnTest" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Project File Column", - "description": "Standard types are: - not_null - unique - 'relationship' which takes into data (model and field)" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/QueryRequest.json b/proto/gen/json_schema/QueryRequest.json deleted file mode 100644 index 323f1f75..00000000 --- a/proto/gen/json_schema/QueryRequest.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/QueryRequest", - "definitions": { - "QueryRequest": { - "properties": { - "query": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Request" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/QueryResponse.json b/proto/gen/json_schema/QueryResponse.json deleted file mode 100644 index 230cfa6e..00000000 --- a/proto/gen/json_schema/QueryResponse.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/QueryResponse", - "definitions": { - "QueryResponse": { - "properties": { - "result": { - "$ref": "#/definitions/quary.service.v1.QueryResult", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Response" - }, - "quary.service.v1.QueryResult": { - "properties": { - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.QueryResultColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result", - "description": "QueryResult is the result of a ran query." - }, - "quary.service.v1.QueryResultColumn": { - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result Column" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/QueryResult.json b/proto/gen/json_schema/QueryResult.json deleted file mode 100644 index 7aad300e..00000000 --- a/proto/gen/json_schema/QueryResult.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/QueryResult", - "definitions": { - "QueryResult": { - "properties": { - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.QueryResultColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result", - "description": "QueryResult is the result of a ran query." - }, - "quary.service.v1.QueryResultColumn": { - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result Column" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/QueryResultColumn.json b/proto/gen/json_schema/QueryResultColumn.json deleted file mode 100644 index a58c72a1..00000000 --- a/proto/gen/json_schema/QueryResultColumn.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/QueryResultColumn", - "definitions": { - "QueryResultColumn": { - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result Column" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Range.json b/proto/gen/json_schema/Range.json deleted file mode 100644 index 54bcf12c..00000000 --- a/proto/gen/json_schema/Range.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Range", - "definitions": { - "Range": { - "properties": { - "start": { - "$ref": "#/definitions/quary.service.v1.Position", - "additionalProperties": true - }, - "end": { - "$ref": "#/definitions/quary.service.v1.Position", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Range", - "description": "Range represents a range of positions in a file." - }, - "quary.service.v1.Position": { - "properties": { - "line": { - "type": "integer" - }, - "character": { - "type": "integer" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Position", - "description": "Position is a simple representation of a line and character position in a file." - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Row.json b/proto/gen/json_schema/Row.json deleted file mode 100644 index 3493058c..00000000 --- a/proto/gen/json_schema/Row.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Row", - "definitions": { - "Row": { - "properties": { - "title": { - "type": "string" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.RowTest" - }, - "type": "array" - }, - "description": { - "$ref": "#/definitions/quary.service.v1.RowDescription", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row", - "description": "Row is a row in the table." - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - }, - "quary.service.v1.RowDescription": { - "properties": { - "present": { - "type": "string" - }, - "present_and_inferred_identical": { - "type": "string" - }, - "present_with_different_inference": { - "$ref": "#/definitions/quary.service.v1.RowDescription.PresentWithInference", - "additionalProperties": true - }, - "inferred": { - "type": "string" - }, - "not_present": { - "additionalProperties": true, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Description", - "description": "RowDescription is a description of a row in a table. It is a oneof because the description can be inferred from the YAML definitions and/or it can be present in the SQL document." - }, - "quary.service.v1.RowDescription.PresentWithInference": { - "properties": { - "present": { - "type": "string" - }, - "inferred": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Present With Inference" - }, - "quary.service.v1.RowTest": { - "properties": { - "present_and_not_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - }, - "present_and_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - }, - "not_present_but_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Test", - "description": "TableTest is a test that is run against a row in a table. It is a oneof because the test can be inferred from the YAML definitions, or it can be present in the SQL document." - }, - "quary.service.v1.RowTestDetails": { - "properties": { - "text": { - "type": "string" - }, - "column_test": { - "$ref": "#/definitions/quary.service.v1.ColumnTest", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Test Details", - "description": "RowTestDetails encapsulates the details of tests associated with row and column data. The 'column_test' field within this structure is specifically used to manage test operations such as deletion and addition. These operations are typically invoked through callbacks." - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/RowDescription.json b/proto/gen/json_schema/RowDescription.json deleted file mode 100644 index ccd78d44..00000000 --- a/proto/gen/json_schema/RowDescription.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/RowDescription", - "definitions": { - "RowDescription": { - "properties": { - "present": { - "type": "string" - }, - "present_and_inferred_identical": { - "type": "string" - }, - "present_with_different_inference": { - "$ref": "#/definitions/quary.service.v1.RowDescription.PresentWithInference", - "additionalProperties": true - }, - "inferred": { - "type": "string" - }, - "not_present": { - "additionalProperties": true, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Description", - "description": "RowDescription is a description of a row in a table. It is a oneof because the description can be inferred from the YAML definitions and/or it can be present in the SQL document." - }, - "quary.service.v1.RowDescription.PresentWithInference": { - "properties": { - "present": { - "type": "string" - }, - "inferred": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Present With Inference" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/RowTest.json b/proto/gen/json_schema/RowTest.json deleted file mode 100644 index 7fd615ae..00000000 --- a/proto/gen/json_schema/RowTest.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/RowTest", - "definitions": { - "RowTest": { - "properties": { - "present_and_not_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - }, - "present_and_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - }, - "not_present_but_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Test", - "description": "TableTest is a test that is run against a row in a table. It is a oneof because the test can be inferred from the YAML definitions, or it can be present in the SQL document." - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - }, - "quary.service.v1.RowTestDetails": { - "properties": { - "text": { - "type": "string" - }, - "column_test": { - "$ref": "#/definitions/quary.service.v1.ColumnTest", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Test Details", - "description": "RowTestDetails encapsulates the details of tests associated with row and column data. The 'column_test' field within this structure is specifically used to manage test operations such as deletion and addition. These operations are typically invoked through callbacks." - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/RowTestDetails.json b/proto/gen/json_schema/RowTestDetails.json deleted file mode 100644 index 0f1a4b2d..00000000 --- a/proto/gen/json_schema/RowTestDetails.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/RowTestDetails", - "definitions": { - "RowTestDetails": { - "properties": { - "text": { - "type": "string" - }, - "column_test": { - "$ref": "#/definitions/quary.service.v1.ColumnTest", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Test Details", - "description": "RowTestDetails encapsulates the details of tests associated with row and column data. The 'column_test' field within this structure is specifically used to manage test operations such as deletion and addition. These operations are typically invoked through callbacks." - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Seed.json b/proto/gen/json_schema/Seed.json deleted file mode 100644 index edc06372..00000000 --- a/proto/gen/json_schema/Seed.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Seed", - "definitions": { - "Seed": { - "properties": { - "name": { - "type": "string" - }, - "file_path": { - "type": "string" - }, - "file_sha256_hash": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Seed" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Snapshot.json b/proto/gen/json_schema/Snapshot.json deleted file mode 100644 index 749bf3fc..00000000 --- a/proto/gen/json_schema/Snapshot.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Snapshot", - "definitions": { - "Snapshot": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together." - }, - "file_path": { - "type": "string" - }, - "file_sha256_hash": { - "type": "string" - }, - "unique_key": { - "type": "string" - }, - "strategy": { - "$ref": "#/definitions/quary.service.v1.Snapshot.SnapshotStrategy", - "additionalProperties": true - }, - "references": { - "items": { - "type": "string" - }, - "type": "array", - "description": "References to other seeds/sources that are used in the snapshot. These are unique keys and sorted alphabetically." - } - }, - "additionalProperties": true, - "type": "object", - "title": "Snapshot" - }, - "quary.service.v1.Snapshot.SnapshotStrategy": { - "properties": { - "timestamp": { - "$ref": "#/definitions/quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Snapshot Strategy" - }, - "quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy": { - "properties": { - "updated_at": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Timestamp Strategy" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Source.json b/proto/gen/json_schema/Source.json deleted file mode 100644 index 38c45e22..00000000 --- a/proto/gen/json_schema/Source.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Source", - "definitions": { - "Source": { - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "path": { - "type": "string" - }, - "tags": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Tags are used to group different parts of the project together." - }, - "file_path": { - "type": "string", - "description": "TODO Replace File path references with whole file references" - }, - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.Source.SourceColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Source" - }, - "quary.service.v1.Source.SourceColumn": { - "properties": { - "title": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Source Column" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Table.json b/proto/gen/json_schema/Table.json deleted file mode 100644 index 4cebdcb1..00000000 --- a/proto/gen/json_schema/Table.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Table", - "definitions": { - "Table": { - "properties": { - "present": { - "$ref": "#/definitions/quary.service.v1.Table.PresentInSchema", - "additionalProperties": true - }, - "not_present": { - "$ref": "#/definitions/quary.service.v1.Table.NotPresentInSchema", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Table", - "description": "Table is a table in the project that is used to visualise columns, descriptions, and column tests." - }, - "quary.service.v1.ColumnTest": { - "properties": { - "type": { - "type": "string" - }, - "info": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Column Test" - }, - "quary.service.v1.Row": { - "properties": { - "title": { - "type": "string" - }, - "tests": { - "items": { - "$ref": "#/definitions/quary.service.v1.RowTest" - }, - "type": "array" - }, - "description": { - "$ref": "#/definitions/quary.service.v1.RowDescription", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row", - "description": "Row is a row in the table." - }, - "quary.service.v1.RowDescription": { - "properties": { - "present": { - "type": "string" - }, - "present_and_inferred_identical": { - "type": "string" - }, - "present_with_different_inference": { - "$ref": "#/definitions/quary.service.v1.RowDescription.PresentWithInference", - "additionalProperties": true - }, - "inferred": { - "type": "string" - }, - "not_present": { - "additionalProperties": true, - "type": "object" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Description", - "description": "RowDescription is a description of a row in a table. It is a oneof because the description can be inferred from the YAML definitions and/or it can be present in the SQL document." - }, - "quary.service.v1.RowDescription.PresentWithInference": { - "properties": { - "present": { - "type": "string" - }, - "inferred": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Present With Inference" - }, - "quary.service.v1.RowTest": { - "properties": { - "present_and_not_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - }, - "present_and_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - }, - "not_present_but_inferred": { - "$ref": "#/definitions/quary.service.v1.RowTestDetails", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Test", - "description": "TableTest is a test that is run against a row in a table. It is a oneof because the test can be inferred from the YAML definitions, or it can be present in the SQL document." - }, - "quary.service.v1.RowTestDetails": { - "properties": { - "text": { - "type": "string" - }, - "column_test": { - "$ref": "#/definitions/quary.service.v1.ColumnTest", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Row Test Details", - "description": "RowTestDetails encapsulates the details of tests associated with row and column data. The 'column_test' field within this structure is specifically used to manage test operations such as deletion and addition. These operations are typically invoked through callbacks." - }, - "quary.service.v1.Table.NotPresentInSchema": { - "properties": { - "rows": { - "items": { - "$ref": "#/definitions/quary.service.v1.Row" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Not Present In Schema", - "description": "NotPresentInSchema is a table that is present as SQL but not in the YAML definitions. And so all the values are inferred." - }, - "quary.service.v1.Table.PresentInSchema": { - "properties": { - "rows": { - "items": { - "$ref": "#/definitions/quary.service.v1.Table.PresentInSchema.PresentRow" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Present In Schema", - "description": "PresentInSchema is a table that is present in a SQL document and in the YAML definitions. Values are inferred and read from YAML." - }, - "quary.service.v1.Table.PresentInSchema.PresentRow": { - "properties": { - "present_in_sql_and_definitions": { - "$ref": "#/definitions/quary.service.v1.Row", - "additionalProperties": true - }, - "missing_in_definitions": { - "$ref": "#/definitions/quary.service.v1.Row", - "additionalProperties": true - }, - "present_in_definitions_but_not_recognisable_in_sql": { - "$ref": "#/definitions/quary.service.v1.Row", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Present Row" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TableAddress.json b/proto/gen/json_schema/TableAddress.json deleted file mode 100644 index afa3adeb..00000000 --- a/proto/gen/json_schema/TableAddress.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TableAddress", - "definitions": { - "TableAddress": { - "properties": { - "name": { - "type": "string" - }, - "full_path": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Table Address", - "description": "TableAddress is a struct that represents a table in a database. It contains the name of the table and the full path." - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Test.json b/proto/gen/json_schema/Test.json deleted file mode 100644 index f2c0bf99..00000000 --- a/proto/gen/json_schema/Test.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Test", - "definitions": { - "Test": { - "properties": { - "sql": { - "$ref": "#/definitions/quary.service.v1.TestSQLFile", - "additionalProperties": true - }, - "unique": { - "$ref": "#/definitions/quary.service.v1.TestUnique", - "additionalProperties": true - }, - "not_null": { - "$ref": "#/definitions/quary.service.v1.TestNotNull", - "additionalProperties": true - }, - "relationship": { - "$ref": "#/definitions/quary.service.v1.TestRelationship", - "additionalProperties": true - }, - "accepted_values": { - "$ref": "#/definitions/quary.service.v1.TestAcceptedValues", - "additionalProperties": true - }, - "greater_than_or_equal": { - "$ref": "#/definitions/quary.service.v1.TestGreaterThanOrEqual", - "additionalProperties": true - }, - "less_than_or_equal": { - "$ref": "#/definitions/quary.service.v1.TestLessThanOrEqual", - "additionalProperties": true - }, - "greater_than": { - "$ref": "#/definitions/quary.service.v1.TestGreaterThan", - "additionalProperties": true - }, - "less_than": { - "$ref": "#/definitions/quary.service.v1.TestLessThan", - "additionalProperties": true - }, - "multi_column_unique": { - "$ref": "#/definitions/quary.service.v1.TestMultiColumnUnique", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "TODO Will eventually in the tests want to store more than the file_path but also the line location", - "description": "TODO Will eventually in the tests want to store more than the file_path but also the line location" - }, - "quary.service.v1.TestAcceptedValues": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "accepted_values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Accepted Values" - }, - "quary.service.v1.TestGreaterThan": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Greater Than" - }, - "quary.service.v1.TestGreaterThanOrEqual": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Greater Than Or Equal" - }, - "quary.service.v1.TestLessThan": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Less Than" - }, - "quary.service.v1.TestLessThanOrEqual": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Less Than Or Equal" - }, - "quary.service.v1.TestMultiColumnUnique": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "columns": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Multi Column Unique" - }, - "quary.service.v1.TestNotNull": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Not Null" - }, - "quary.service.v1.TestRelationship": { - "properties": { - "file_path": { - "type": "string" - }, - "source_model": { - "type": "string" - }, - "source_path": { - "type": "string" - }, - "source_column": { - "type": "string" - }, - "target_model": { - "type": "string" - }, - "target_path": { - "type": "string" - }, - "target_column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Relationship" - }, - "quary.service.v1.TestSQLFile": { - "properties": { - "file_path": { - "type": "string" - }, - "references": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test SQL File" - }, - "quary.service.v1.TestUnique": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Unique" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestAcceptedValues.json b/proto/gen/json_schema/TestAcceptedValues.json deleted file mode 100644 index 89284df3..00000000 --- a/proto/gen/json_schema/TestAcceptedValues.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestAcceptedValues", - "definitions": { - "TestAcceptedValues": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "accepted_values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Accepted Values" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestGreaterThan.json b/proto/gen/json_schema/TestGreaterThan.json deleted file mode 100644 index b92d4350..00000000 --- a/proto/gen/json_schema/TestGreaterThan.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestGreaterThan", - "definitions": { - "TestGreaterThan": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Greater Than" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestGreaterThanOrEqual.json b/proto/gen/json_schema/TestGreaterThanOrEqual.json deleted file mode 100644 index bf848bb3..00000000 --- a/proto/gen/json_schema/TestGreaterThanOrEqual.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestGreaterThanOrEqual", - "definitions": { - "TestGreaterThanOrEqual": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Greater Than Or Equal" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestLessThan.json b/proto/gen/json_schema/TestLessThan.json deleted file mode 100644 index 94c2d76a..00000000 --- a/proto/gen/json_schema/TestLessThan.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestLessThan", - "definitions": { - "TestLessThan": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Less Than" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestLessThanOrEqual.json b/proto/gen/json_schema/TestLessThanOrEqual.json deleted file mode 100644 index 8b398bf3..00000000 --- a/proto/gen/json_schema/TestLessThanOrEqual.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestLessThanOrEqual", - "definitions": { - "TestLessThanOrEqual": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Less Than Or Equal" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestMultiColumnUnique.json b/proto/gen/json_schema/TestMultiColumnUnique.json deleted file mode 100644 index d2aa4530..00000000 --- a/proto/gen/json_schema/TestMultiColumnUnique.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestMultiColumnUnique", - "definitions": { - "TestMultiColumnUnique": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "columns": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Multi Column Unique" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestNotNull.json b/proto/gen/json_schema/TestNotNull.json deleted file mode 100644 index 49755b19..00000000 --- a/proto/gen/json_schema/TestNotNull.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestNotNull", - "definitions": { - "TestNotNull": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Not Null" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestRelationship.json b/proto/gen/json_schema/TestRelationship.json deleted file mode 100644 index f8f795de..00000000 --- a/proto/gen/json_schema/TestRelationship.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestRelationship", - "definitions": { - "TestRelationship": { - "properties": { - "file_path": { - "type": "string" - }, - "source_model": { - "type": "string" - }, - "source_path": { - "type": "string" - }, - "source_column": { - "type": "string" - }, - "target_model": { - "type": "string" - }, - "target_path": { - "type": "string" - }, - "target_column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Relationship" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestResult.json b/proto/gen/json_schema/TestResult.json deleted file mode 100644 index 3fe60c4b..00000000 --- a/proto/gen/json_schema/TestResult.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestResult", - "definitions": { - "TestResult": { - "properties": { - "test_name": { - "type": "string" - }, - "query": { - "type": "string" - }, - "passed": { - "$ref": "#/definitions/quary.service.v1.Passed", - "additionalProperties": true - }, - "failed": { - "$ref": "#/definitions/quary.service.v1.Failed", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Result", - "description": "TestResult is the result of a test serializable so it can be shared" - }, - "quary.service.v1.Failed": { - "properties": { - "ran": { - "$ref": "#/definitions/quary.service.v1.FailedRunResults", - "additionalProperties": true - }, - "inferred_from_tests": { - "$ref": "#/definitions/quary.service.v1.InferredChain", - "additionalProperties": true - }, - "inferred_through_tests_operation": { - "$ref": "#/definitions/quary.service.v1.InferredChainWithOperation", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Failed" - }, - "quary.service.v1.FailedRunResults": { - "properties": { - "query_result": { - "$ref": "#/definitions/quary.service.v1.QueryResult", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Failed Run Results" - }, - "quary.service.v1.InferredChain": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain" - }, - "quary.service.v1.InferredChainWithOperation": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operation": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain With Operation" - }, - "quary.service.v1.Passed": { - "properties": { - "ran": { - "additionalProperties": true, - "type": "object" - }, - "inferred_from_tests": { - "$ref": "#/definitions/quary.service.v1.InferredChain", - "additionalProperties": true - }, - "inferred_from_logic": { - "type": "string", - "description": "inferred_from_logic adds a logic string which explains how it is derived" - }, - "inferred_through_tests_operation": { - "$ref": "#/definitions/quary.service.v1.InferredChainWithOperation", - "additionalProperties": true, - "description": "inferred_through_tests_operation infers that the test was inferred and implied through the operation" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Passed" - }, - "quary.service.v1.QueryResult": { - "properties": { - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.QueryResultColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result", - "description": "QueryResult is the result of a ran query." - }, - "quary.service.v1.QueryResultColumn": { - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result Column" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestResults.json b/proto/gen/json_schema/TestResults.json deleted file mode 100644 index c9ce6657..00000000 --- a/proto/gen/json_schema/TestResults.json +++ /dev/null @@ -1,158 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestResults", - "definitions": { - "TestResults": { - "properties": { - "results": { - "items": { - "$ref": "#/definitions/quary.service.v1.TestResult" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Results", - "description": "WasmRunTestResponse is a temporary message type to work on inferring in Rust rather than in Typescript. The goal is to make better interfaces over time." - }, - "quary.service.v1.Failed": { - "properties": { - "ran": { - "$ref": "#/definitions/quary.service.v1.FailedRunResults", - "additionalProperties": true - }, - "inferred_from_tests": { - "$ref": "#/definitions/quary.service.v1.InferredChain", - "additionalProperties": true - }, - "inferred_through_tests_operation": { - "$ref": "#/definitions/quary.service.v1.InferredChainWithOperation", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Failed" - }, - "quary.service.v1.FailedRunResults": { - "properties": { - "query_result": { - "$ref": "#/definitions/quary.service.v1.QueryResult", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Failed Run Results" - }, - "quary.service.v1.InferredChain": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain" - }, - "quary.service.v1.InferredChainWithOperation": { - "properties": { - "inferred_chain": { - "items": { - "type": "string" - }, - "type": "array" - }, - "operation": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Inferred Chain With Operation" - }, - "quary.service.v1.Passed": { - "properties": { - "ran": { - "additionalProperties": true, - "type": "object" - }, - "inferred_from_tests": { - "$ref": "#/definitions/quary.service.v1.InferredChain", - "additionalProperties": true - }, - "inferred_from_logic": { - "type": "string", - "description": "inferred_from_logic adds a logic string which explains how it is derived" - }, - "inferred_through_tests_operation": { - "$ref": "#/definitions/quary.service.v1.InferredChainWithOperation", - "additionalProperties": true, - "description": "inferred_through_tests_operation infers that the test was inferred and implied through the operation" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Passed" - }, - "quary.service.v1.QueryResult": { - "properties": { - "columns": { - "items": { - "$ref": "#/definitions/quary.service.v1.QueryResultColumn" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result", - "description": "QueryResult is the result of a ran query." - }, - "quary.service.v1.QueryResultColumn": { - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Query Result Column" - }, - "quary.service.v1.TestResult": { - "properties": { - "test_name": { - "type": "string" - }, - "query": { - "type": "string" - }, - "passed": { - "$ref": "#/definitions/quary.service.v1.Passed", - "additionalProperties": true - }, - "failed": { - "$ref": "#/definitions/quary.service.v1.Failed", - "additionalProperties": true - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Result", - "description": "TestResult is the result of a test serializable so it can be shared" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestRunner.json b/proto/gen/json_schema/TestRunner.json deleted file mode 100644 index fc826b97..00000000 --- a/proto/gen/json_schema/TestRunner.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "enum": [ - "TEST_RUNNER_UNSPECIFIED", - 0, - "TEST_RUNNER_ALL", - 1, - "TEST_RUNNER_SKIP", - 2 - ], - "oneOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ], - "title": "Test Runner" -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestSQLFile.json b/proto/gen/json_schema/TestSQLFile.json deleted file mode 100644 index 18d5e84a..00000000 --- a/proto/gen/json_schema/TestSQLFile.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestSQLFile", - "definitions": { - "TestSQLFile": { - "properties": { - "file_path": { - "type": "string" - }, - "references": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test SQL File" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/TestUnique.json b/proto/gen/json_schema/TestUnique.json deleted file mode 100644 index 34ebfbb8..00000000 --- a/proto/gen/json_schema/TestUnique.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/TestUnique", - "definitions": { - "TestUnique": { - "properties": { - "file_path": { - "type": "string" - }, - "model": { - "type": "string" - }, - "path": { - "type": "string" - }, - "column": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Test Unique" - } - } -} \ No newline at end of file diff --git a/proto/gen/json_schema/Var.json b/proto/gen/json_schema/Var.json deleted file mode 100644 index 8b16320e..00000000 --- a/proto/gen/json_schema/Var.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "$ref": "#/definitions/Var", - "definitions": { - "Var": { - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "additionalProperties": true, - "type": "object", - "title": "Var" - } - } -} \ No newline at end of file diff --git a/proto/gen/rust/Cargo.toml b/proto/gen/rust/Cargo.toml deleted file mode 100644 index 785bddaa..00000000 --- a/proto/gen/rust/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "quary_proto" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -prost = { version = "0.12", default-features = false } -pbjson = "0.6" -serde = { version = "1.0", default-features = false } -pbjson-types = "0.6" - -[lib] diff --git a/proto/gen/rust/src/lib.rs b/proto/gen/rust/src/lib.rs deleted file mode 100644 index 4febd5ac..00000000 --- a/proto/gen/rust/src/lib.rs +++ /dev/null @@ -1,3124 +0,0 @@ -// @generated -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProjectFile { - #[prost(message, repeated, tag = "1")] - pub sources: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag = "2")] - pub models: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag = "3")] - pub snapshots: ::prost::alloc::vec::Vec, -} -/// Nested message and enum types in `ProjectFile`. -pub mod project_file { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct Model { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - /// Tags are used to group different parts of the project together. For example, you could tag all models that are - /// related to a specific department with the same tag. - #[prost(string, repeated, tag = "6")] - pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - /// The materialization of the model, available types are specified by each database. - #[prost(string, optional, tag = "4")] - pub materialization: ::core::option::Option<::prost::alloc::string::String>, - #[prost(message, repeated, tag = "5")] - pub tests: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag = "3")] - pub columns: ::prost::alloc::vec::Vec, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct Snapshot { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - /// Tags are used to group different parts of the project together. For example, you could tag all models that are - /// related to a specific department with the same tag. - #[prost(string, repeated, tag = "4")] - pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, optional, tag = "5")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, tag = "2")] - pub unique_key: ::prost::alloc::string::String, - #[prost(message, optional, tag = "3")] - pub strategy: ::core::option::Option, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct SnapshotStrategy { - #[prost(oneof = "snapshot_strategy::StrategyType", tags = "1")] - pub strategy_type: ::core::option::Option, - } - /// Nested message and enum types in `SnapshotStrategy`. - pub mod snapshot_strategy { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum StrategyType { - #[prost(message, tag = "1")] - Timestamp(super::TimestampStrategy), - } - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct TimestampStrategy { - #[prost(string, tag = "1")] - pub updated_at: ::prost::alloc::string::String, - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProjectFileSource { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - /// Tags are used to group different parts of the project together. For example, you could tag all sources that are - /// related to a specific department with the same tag. - #[prost(string, repeated, tag = "6")] - pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - /// The full path of the source table in the database. This is used to reference the table itself. For example: - /// - 'public.users' for where the schema is 'public' and the table is 'users' - /// - 'project_id_123.dataset_id_123.table_id_123' for a BigQuery table - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(message, repeated, tag = "5")] - pub tests: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag = "4")] - pub columns: ::prost::alloc::vec::Vec, -} -/// Standard types are: -/// - not_null -/// - unique -/// - 'relationship' which takes into data (model and field) -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProjectFileColumn { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - #[prost(message, repeated, tag = "3")] - pub tests: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ColumnTest { - #[prost(string, tag = "1")] - pub r#type: ::prost::alloc::string::String, - #[prost(map = "string, string", tag = "2")] - pub info: - ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ModelTest { - #[prost(string, tag = "1")] - pub r#type: ::prost::alloc::string::String, - #[prost(map = "string, string", tag = "2")] - pub info: - ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, -} -/// QueryResult is the result of a ran query. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryResult { - #[prost(message, repeated, tag = "1")] - pub columns: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryResultColumn { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag = "3")] - pub r#type: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, repeated, tag = "2")] - pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -/// TableAddress is a struct that represents a table in a database. It contains the name of the table and the full path. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TableAddress { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub full_path: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListTablesRequest {} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListTablesResponse { - #[prost(message, repeated, tag = "1")] - pub tables: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListViewsRequest {} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListViewsResponse { - #[prost(message, repeated, tag = "1")] - pub views: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecRequest { - #[prost(string, tag = "1")] - pub query: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ExecResponse {} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryRequest { - #[prost(string, tag = "1")] - pub query: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct QueryResponse { - #[prost(message, optional, tag = "1")] - pub result: ::core::option::Option, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListColumnsRequest { - #[prost(string, tag = "1")] - pub table_name: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListColumnsResponse { - #[prost(string, repeated, tag = "1")] - pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListSourcesRequest {} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ListSourcesResponse { - #[prost(message, repeated, tag = "1")] - pub sources: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ColumnDescription { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, repeated, tag = "3")] - pub tests: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Var { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub value: ::prost::alloc::string::String, -} -/// Configuration describes the configuration of the project. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ConnectionConfig { - #[prost(message, repeated, tag = "8")] - pub vars: ::prost::alloc::vec::Vec, - #[prost(oneof = "connection_config::Config", tags = "1, 2, 3, 4, 5, 6, 7")] - pub config: ::core::option::Option, -} -/// Nested message and enum types in `ConnectionConfig`. -pub mod connection_config { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct ConnectionConfigSqLite { - #[prost(string, tag = "1")] - pub path: ::prost::alloc::string::String, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct ConnectionConfigSqLiteInMemory {} - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct ConnectionConfigDuckDb { - #[prost(string, tag = "1")] - pub path: ::prost::alloc::string::String, - #[prost(string, optional, tag = "2")] - pub schema: ::core::option::Option<::prost::alloc::string::String>, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct ConnectionConfigDuckDbInMemory { - #[prost(string, optional, tag = "1")] - pub schema: ::core::option::Option<::prost::alloc::string::String>, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct ConnectionConfigPostgres { - #[prost(string, tag = "1")] - pub schema: ::prost::alloc::string::String, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct ConnectionConfigBigQuery { - #[prost(string, tag = "1")] - pub project_id: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub dataset_id: ::prost::alloc::string::String, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct ConnectionConfigSnowflake { - #[prost(string, tag = "1")] - pub account_url: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub client_id: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub client_secret: ::prost::alloc::string::String, - /// TODO: think about making optional - #[prost(string, tag = "4")] - pub role: ::prost::alloc::string::String, - #[prost(string, tag = "5")] - pub database: ::prost::alloc::string::String, - #[prost(string, tag = "6")] - pub schema: ::prost::alloc::string::String, - #[prost(string, tag = "7")] - pub warehouse: ::prost::alloc::string::String, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Config { - #[prost(message, tag = "1")] - Duckdb(ConnectionConfigDuckDb), - #[prost(message, tag = "2")] - DuckdbInMemory(ConnectionConfigDuckDbInMemory), - #[prost(message, tag = "3")] - Sqlite(ConnectionConfigSqLite), - #[prost(message, tag = "4")] - SqliteInMemory(ConnectionConfigSqLiteInMemory), - #[prost(message, tag = "5")] - BigQuery(ConnectionConfigBigQuery), - #[prost(message, tag = "6")] - Snowflake(ConnectionConfigSnowflake), - #[prost(message, tag = "7")] - Postgres(ConnectionConfigPostgres), - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct File { - /// The name of the file. Names are relative to the root of the file system. - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(bytes = "bytes", tag = "2")] - pub contents: ::prost::bytes::Bytes, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct FileSystem { - #[prost(map = "string, message", tag = "1")] - pub files: ::std::collections::HashMap<::prost::alloc::string::String, File>, -} -/// Position is a simple representation of a line and character position in a file. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Position { - #[prost(uint32, tag = "1")] - pub line: u32, - #[prost(uint32, tag = "2")] - pub character: u32, -} -// TODO Will eventually in the tests want to store more than the file_path but also the line location - -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Test { - #[prost(oneof = "test::TestType", tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")] - pub test_type: ::core::option::Option, -} -/// Nested message and enum types in `Test`. -pub mod test { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum TestType { - #[prost(message, tag = "1")] - Sql(super::TestSqlFile), - #[prost(message, tag = "2")] - Unique(super::TestUnique), - #[prost(message, tag = "3")] - NotNull(super::TestNotNull), - #[prost(message, tag = "4")] - Relationship(super::TestRelationship), - #[prost(message, tag = "5")] - AcceptedValues(super::TestAcceptedValues), - #[prost(message, tag = "6")] - GreaterThanOrEqual(super::TestGreaterThanOrEqual), - #[prost(message, tag = "7")] - LessThanOrEqual(super::TestLessThanOrEqual), - #[prost(message, tag = "8")] - GreaterThan(super::TestGreaterThan), - #[prost(message, tag = "9")] - LessThan(super::TestLessThan), - #[prost(message, tag = "10")] - MultiColumnUnique(super::TestMultiColumnUnique), - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestSqlFile { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, repeated, tag = "2")] - pub references: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestUnique { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub column: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestNotNull { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub column: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestGreaterThanOrEqual { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub column: ::prost::alloc::string::String, - #[prost(string, tag = "5")] - pub value: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestLessThanOrEqual { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub column: ::prost::alloc::string::String, - #[prost(string, tag = "5")] - pub value: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestGreaterThan { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub column: ::prost::alloc::string::String, - #[prost(string, tag = "5")] - pub value: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestLessThan { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub column: ::prost::alloc::string::String, - #[prost(string, tag = "5")] - pub value: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestRelationship { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub source_model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub source_path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub source_column: ::prost::alloc::string::String, - #[prost(string, tag = "5")] - pub target_model: ::prost::alloc::string::String, - #[prost(string, tag = "7")] - pub target_path: ::prost::alloc::string::String, - #[prost(string, tag = "8")] - pub target_column: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestAcceptedValues { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub column: ::prost::alloc::string::String, - #[prost(string, repeated, tag = "5")] - pub accepted_values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestMultiColumnUnique { - #[prost(string, tag = "1")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub model: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - #[prost(string, repeated, tag = "4")] - pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Seed { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "3")] - pub file_sha256_hash: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Model { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - /// Tags are used to group different parts of the project together. - #[prost(string, repeated, tag = "4")] - pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, tag = "3")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "7")] - pub file_sha256_hash: ::prost::alloc::string::String, - #[prost(string, optional, tag = "8")] - pub materialization: ::core::option::Option<::prost::alloc::string::String>, - #[prost(message, repeated, tag = "5")] - pub columns: ::prost::alloc::vec::Vec, - /// References to other models/seeds/snapshots that are used in the model. These are unique keys and sorted - /// alphabetically. - #[prost(string, repeated, tag = "6")] - pub references: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -/// Nested message and enum types in `Model`. -pub mod model { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct ModelColum { - #[prost(string, tag = "1")] - pub title: ::prost::alloc::string::String, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Snapshot { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - /// Tags are used to group different parts of the project together. - #[prost(string, repeated, tag = "8")] - pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, tag = "3")] - pub file_path: ::prost::alloc::string::String, - #[prost(string, tag = "4")] - pub file_sha256_hash: ::prost::alloc::string::String, - #[prost(string, tag = "5")] - pub unique_key: ::prost::alloc::string::String, - #[prost(message, optional, tag = "6")] - pub strategy: ::core::option::Option, - /// References to other seeds/sources that are used in the snapshot. These are unique keys and sorted - /// alphabetically. - #[prost(string, repeated, tag = "7")] - pub references: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -/// Nested message and enum types in `Snapshot`. -pub mod snapshot { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct SnapshotStrategy { - #[prost(oneof = "snapshot_strategy::StrategyType", tags = "1")] - pub strategy_type: ::core::option::Option, - } - /// Nested message and enum types in `SnapshotStrategy`. - pub mod snapshot_strategy { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct TimestampStrategy { - #[prost(string, tag = "1")] - pub updated_at: ::prost::alloc::string::String, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum StrategyType { - #[prost(message, tag = "1")] - Timestamp(TimestampStrategy), - } - } -} -/// Generic source structure, used as input to generate the quary-specific source structure -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct DatabaseSource { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub path: ::prost::alloc::string::String, - #[prost(string, repeated, tag = "3")] - pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Source { - #[prost(string, tag = "1")] - pub name: ::prost::alloc::string::String, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - #[prost(string, tag = "3")] - pub path: ::prost::alloc::string::String, - /// Tags are used to group different parts of the project together. - #[prost(string, repeated, tag = "6")] - pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - /// TODO Replace File path references with whole file references - #[prost(string, tag = "4")] - pub file_path: ::prost::alloc::string::String, - #[prost(message, repeated, tag = "5")] - pub columns: ::prost::alloc::vec::Vec, -} -/// Nested message and enum types in `Source`. -pub mod source { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct SourceColumn { - #[prost(string, tag = "1")] - pub title: ::prost::alloc::string::String, - #[prost(string, optional, tag = "2")] - pub description: ::core::option::Option<::prost::alloc::string::String>, - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Project { - #[prost(map = "string, message", tag = "3")] - pub seeds: ::std::collections::HashMap<::prost::alloc::string::String, Seed>, - #[prost(map = "string, message", tag = "4")] - pub models: ::std::collections::HashMap<::prost::alloc::string::String, Model>, - #[prost(map = "string, message", tag = "5")] - pub tests: ::std::collections::HashMap<::prost::alloc::string::String, Test>, - #[prost(map = "string, message", tag = "6")] - pub sources: ::std::collections::HashMap<::prost::alloc::string::String, Source>, - #[prost(map = "string, message", tag = "9")] - pub snapshots: ::std::collections::HashMap<::prost::alloc::string::String, Snapshot>, - #[prost(map = "string, message", tag = "7")] - pub project_files: ::std::collections::HashMap<::prost::alloc::string::String, ProjectFile>, - #[prost(message, optional, tag = "8")] - pub connection_config: ::core::option::Option, -} -/// DirectedAcyclicGraph represents a directed acyclic graph that is used to visualize the project dependencies in a -/// project. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProjectDag { - #[prost(message, repeated, tag = "1")] - pub nodes: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag = "2")] - pub edges: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Node { - #[prost(string, tag = "1")] - pub id: ::prost::alloc::string::String, - #[prost(bool, tag = "2")] - pub is_cached: bool, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Edge { - #[prost(string, tag = "1")] - pub to: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub from: ::prost::alloc::string::String, -} -/// Range represents a range of positions in a file. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Range { - #[prost(message, optional, tag = "1")] - pub start: ::core::option::Option, - #[prost(message, optional, tag = "2")] - pub end: ::core::option::Option, -} -/// Table is a table in the project that is used to visualise columns, descriptions, and column tests. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Table { - #[prost(oneof = "table::TableType", tags = "1, 2")] - pub table_type: ::core::option::Option, -} -/// Nested message and enum types in `Table`. -pub mod table { - /// PresentInSchema is a table that is present in a SQL document and in the YAML definitions. - /// Values are inferred and read from YAML. - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct PresentInSchema { - #[prost(message, repeated, tag = "1")] - pub rows: ::prost::alloc::vec::Vec, - } - /// Nested message and enum types in `PresentInSchema`. - pub mod present_in_schema { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct PresentRow { - #[prost(oneof = "present_row::Row", tags = "1, 2, 3")] - pub row: ::core::option::Option, - } - /// Nested message and enum types in `PresentRow`. - pub mod present_row { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Row { - #[prost(message, tag = "1")] - PresentInSqlAndDefinitions(super::super::super::Row), - #[prost(message, tag = "2")] - MissingInDefinitions(super::super::super::Row), - #[prost(message, tag = "3")] - PresentInDefinitionsButNotRecognisableInSql(super::super::super::Row), - } - } - } - /// NotPresentInSchema is a table that is present as SQL but not in the YAML definitions. And so all the values - /// are inferred. - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct NotPresentInSchema { - #[prost(message, repeated, tag = "1")] - pub rows: ::prost::alloc::vec::Vec, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum TableType { - #[prost(message, tag = "1")] - Present(PresentInSchema), - #[prost(message, tag = "2")] - NotPresent(NotPresentInSchema), - } -} -/// Row is a row in the table. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Row { - #[prost(string, tag = "1")] - pub title: ::prost::alloc::string::String, - #[prost(message, repeated, tag = "2")] - pub tests: ::prost::alloc::vec::Vec, - #[prost(message, optional, tag = "3")] - pub description: ::core::option::Option, -} -/// TableTest is a test that is run against a row in a table. It is a oneof because the test can be inferred from the -/// YAML definitions, or it can be present in the SQL document. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct RowTest { - #[prost(oneof = "row_test::Test", tags = "1, 2, 3")] - pub test: ::core::option::Option, -} -/// Nested message and enum types in `RowTest`. -pub mod row_test { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Test { - #[prost(message, tag = "1")] - PresentAndNotInferred(super::RowTestDetails), - #[prost(message, tag = "2")] - PresentAndInferred(super::RowTestDetails), - #[prost(message, tag = "3")] - NotPresentButInferred(super::RowTestDetails), - } -} -/// RowTestDetails encapsulates the details of tests associated with row and column data. -/// The 'column_test' field within this structure is specifically used to manage test operations -/// such as deletion and addition. These operations are typically invoked through callbacks. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct RowTestDetails { - #[prost(string, tag = "1")] - pub text: ::prost::alloc::string::String, - #[prost(message, optional, tag = "2")] - pub column_test: ::core::option::Option, -} -/// RowDescription is a description of a row in a table. It is a oneof because the description can be inferred from the -/// YAML definitions and/or it can be present in the SQL document. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct RowDescription { - #[prost(oneof = "row_description::Description", tags = "1, 2, 3, 4, 5")] - pub description: ::core::option::Option, -} -/// Nested message and enum types in `RowDescription`. -pub mod row_description { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct PresentWithInference { - #[prost(string, tag = "1")] - pub present: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub inferred: ::prost::alloc::string::String, - } - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Description { - #[prost(string, tag = "1")] - Present(::prost::alloc::string::String), - #[prost(string, tag = "2")] - PresentAndInferredIdentical(::prost::alloc::string::String), - #[prost(message, tag = "3")] - PresentWithDifferentInference(PresentWithInference), - #[prost(string, tag = "4")] - Inferred(::prost::alloc::string::String), - #[prost(message, tag = "5")] - NotPresent(::pbjson_types::Empty), - } -} -/// TestResult is the result of a test serializable so it can be shared -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestResult { - #[prost(string, tag = "1")] - pub test_name: ::prost::alloc::string::String, - #[prost(string, tag = "2")] - pub query: ::prost::alloc::string::String, - #[prost(oneof = "test_result::TestResult", tags = "3, 4")] - pub test_result: ::core::option::Option, -} -/// Nested message and enum types in `TestResult`. -pub mod test_result { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum TestResult { - #[prost(message, tag = "3")] - Passed(super::Passed), - #[prost(message, tag = "4")] - Failed(super::Failed), - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct InferredChain { - #[prost(string, repeated, tag = "1")] - pub inferred_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct InferredChainWithOperation { - #[prost(string, repeated, tag = "1")] - pub inferred_chain: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, tag = "2")] - pub operation: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Passed { - #[prost(oneof = "passed::Reason", tags = "1, 2, 3, 4")] - pub reason: ::core::option::Option, -} -/// Nested message and enum types in `Passed`. -pub mod passed { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Reason { - #[prost(message, tag = "1")] - Ran(::pbjson_types::Empty), - #[prost(message, tag = "2")] - InferredFromTests(super::InferredChain), - /// inferred_from_logic adds a logic string which explains how it is derived - #[prost(string, tag = "3")] - InferredFromLogic(::prost::alloc::string::String), - /// inferred_through_tests_operation infers that the test was inferred and implied through the operation - #[prost(message, tag = "4")] - InferredThroughTestsOperation(super::InferredChainWithOperation), - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct Failed { - #[prost(oneof = "failed::Reason", tags = "1, 2, 3")] - pub reason: ::core::option::Option, -} -/// Nested message and enum types in `Failed`. -pub mod failed { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Reason { - #[prost(message, tag = "1")] - Ran(super::FailedRunResults), - #[prost(message, tag = "2")] - InferredFromTests(super::InferredChain), - #[prost(message, tag = "3")] - InferredThroughTestsOperation(super::InferredChainWithOperation), - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct FailedRunResults { - #[prost(message, optional, tag = "1")] - pub query_result: ::core::option::Option, -} -/// WasmRunTestResponse is a temporary message type to work on inferring in Rust rather than in Typescript. -/// The goal is to make better interfaces over time. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct TestResults { - #[prost(message, repeated, tag = "1")] - pub results: ::prost::alloc::vec::Vec, -} -#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] -#[repr(i32)] -pub enum TestRunner { - Unspecified = 0, - /// TEST_RUNNER_ALL is a runner that will run all the tests in the test suite. - All = 1, - /// TEST_RUNNER_NONE is a runner that will run skip tests in the test suite that can be inferred from other tests in the test suite. - Skip = 2, -} -impl TestRunner { - /// String value of the enum field names used in the ProtoBuf definition. - /// - /// The values are not transformed in any way and thus are considered stable - /// (if the ProtoBuf definition does not change) and safe for programmatic use. - pub fn as_str_name(&self) -> &'static str { - match self { - TestRunner::Unspecified => "TEST_RUNNER_UNSPECIFIED", - TestRunner::All => "TEST_RUNNER_ALL", - TestRunner::Skip => "TEST_RUNNER_SKIP", - } - } - /// Creates an enum from field names used in the ProtoBuf definition. - pub fn from_str_name(value: &str) -> ::core::option::Option { - match value { - "TEST_RUNNER_UNSPECIFIED" => Some(Self::Unspecified), - "TEST_RUNNER_ALL" => Some(Self::All), - "TEST_RUNNER_SKIP" => Some(Self::Skip), - _ => None, - } - } -} -/// Encoded file descriptor set for the `quary.service.v1` package -pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0xf9, 0x25, 0x0a, 0x23, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x22, 0xee, 0x06, 0x0a, 0x0b, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x75, - 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x06, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x75, 0x61, 0x72, - 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x44, 0x0a, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x61, 0x72, - 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x52, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x1a, 0x9b, 0x02, 0x0a, - 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x25, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0f, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x0f, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x65, 0x73, 0x74, - 0x52, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x74, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xd4, 0x01, 0x0a, 0x08, 0x53, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, - 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x6e, 0x69, 0x71, - 0x75, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x4a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x74, 0x0a, 0x10, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x53, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x4f, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x32, 0x0a, 0x11, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1d, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xf8, 0x01, 0x0a, 0x11, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x31, 0x0a, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x65, 0x73, 0x74, - 0x52, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x54, 0x65, 0x73, 0x74, 0x52, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x01, 0x0a, 0x0a, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3a, - 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x1a, 0x37, 0x0a, 0x09, 0x49, 0x6e, - 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0x93, 0x01, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x65, 0x73, 0x74, - 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, - 0x1a, 0x37, 0x0a, 0x09, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x02, 0x50, 0x01, 0x4a, 0x84, 0x19, - 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x4f, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, - 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x08, 0x0a, 0x01, - 0x08, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x04, 0x00, - 0x22, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, 0x00, 0x2b, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x06, 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x00, 0x12, 0x03, 0x07, 0x02, 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, - 0x03, 0x07, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x07, - 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x07, 0x1d, 0x24, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x07, 0x27, 0x28, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x08, 0x02, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x08, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x01, 0x06, 0x12, 0x03, 0x08, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x08, 0x11, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x08, 0x1a, 0x1b, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x09, 0x02, 0x22, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x09, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x09, 0x0b, 0x13, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x09, 0x14, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x02, 0x03, 0x12, 0x03, 0x09, 0x20, 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, 0x03, 0x00, - 0x12, 0x04, 0x0b, 0x02, 0x16, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x03, 0x00, 0x01, 0x12, - 0x03, 0x0b, 0x0a, 0x0f, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, - 0x0c, 0x04, 0x14, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, - 0x0c, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x0c, 0x0b, 0x0f, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x0c, 0x12, 0x13, 0x0a, 0xb5, 0x01, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, 0x12, 0x03, - 0x0f, 0x04, 0x1d, 0x1a, 0xa5, 0x01, 0x20, 0x54, 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, - 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x64, 0x69, - 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x67, - 0x65, 0x74, 0x68, 0x65, 0x72, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x2c, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x74, 0x61, - 0x67, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x61, 0x72, 0x65, 0x0a, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, - 0x6f, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x64, 0x65, 0x70, - 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x61, 0x67, 0x2e, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x00, 0x03, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, 0x0f, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x00, 0x03, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x0f, 0x0d, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x00, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0f, 0x14, 0x18, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x00, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0f, 0x1b, 0x1c, 0x0a, 0x0d, 0x0a, 0x06, 0x04, - 0x00, 0x03, 0x00, 0x02, 0x02, 0x12, 0x03, 0x10, 0x04, 0x24, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, - 0x03, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x10, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, - 0x03, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x10, 0x0d, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, - 0x03, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x10, 0x14, 0x1f, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, - 0x03, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x10, 0x22, 0x23, 0x0a, 0x62, 0x0a, 0x06, 0x04, 0x00, - 0x03, 0x00, 0x02, 0x03, 0x12, 0x03, 0x12, 0x04, 0x28, 0x1a, 0x53, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x20, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x61, 0x72, - 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x65, - 0x61, 0x63, 0x68, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x0a, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x04, 0x12, 0x03, 0x12, 0x04, 0x0c, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x05, 0x12, 0x03, 0x12, 0x0d, 0x13, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x12, 0x14, 0x23, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x12, 0x26, 0x27, 0x0a, 0x0d, - 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x12, 0x03, 0x13, 0x04, 0x21, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x04, 0x12, 0x03, 0x13, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x06, 0x12, 0x03, 0x13, 0x0d, 0x16, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x13, 0x17, 0x1c, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x13, 0x1f, 0x20, 0x0a, 0x0d, 0x0a, - 0x06, 0x04, 0x00, 0x03, 0x00, 0x02, 0x05, 0x12, 0x03, 0x15, 0x04, 0x2b, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x00, 0x03, 0x00, 0x02, 0x05, 0x04, 0x12, 0x03, 0x15, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x00, 0x03, 0x00, 0x02, 0x05, 0x06, 0x12, 0x03, 0x15, 0x0d, 0x1e, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x00, 0x03, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x15, 0x1f, 0x26, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x00, 0x03, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x15, 0x29, 0x2a, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x00, 0x03, 0x01, 0x12, 0x04, 0x18, 0x02, 0x20, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x03, 0x01, 0x01, 0x12, 0x03, 0x18, 0x0a, 0x12, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x01, - 0x02, 0x00, 0x12, 0x03, 0x19, 0x04, 0x14, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, - 0x00, 0x05, 0x12, 0x03, 0x19, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x19, 0x0b, 0x0f, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x19, 0x12, 0x13, 0x0a, 0xb5, 0x01, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x01, - 0x02, 0x01, 0x12, 0x03, 0x1c, 0x04, 0x1d, 0x1a, 0xa5, 0x01, 0x20, 0x54, 0x61, 0x67, 0x73, 0x20, - 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, - 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x20, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x63, 0x6f, 0x75, 0x6c, - 0x64, 0x20, 0x74, 0x61, 0x67, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x0a, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, - 0x20, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x61, 0x67, 0x2e, 0x0a, 0x0a, - 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x01, 0x04, 0x12, 0x03, 0x1c, 0x04, 0x0c, 0x0a, - 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x1c, 0x0d, 0x13, 0x0a, - 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1c, 0x14, 0x18, 0x0a, - 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1c, 0x1b, 0x1c, 0x0a, - 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x01, 0x02, 0x02, 0x12, 0x03, 0x1d, 0x04, 0x24, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x02, 0x04, 0x12, 0x03, 0x1d, 0x04, 0x0c, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x02, 0x05, 0x12, 0x03, 0x1d, 0x0d, 0x13, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x1d, 0x14, 0x1f, 0x0a, 0x0e, - 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x1d, 0x22, 0x23, 0x0a, 0x0d, - 0x0a, 0x06, 0x04, 0x00, 0x03, 0x01, 0x02, 0x03, 0x12, 0x03, 0x1e, 0x04, 0x1a, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x03, 0x05, 0x12, 0x03, 0x1e, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x1e, 0x0b, 0x15, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x03, 0x03, 0x12, 0x03, 0x1e, 0x18, 0x19, 0x0a, 0x0d, 0x0a, - 0x06, 0x04, 0x00, 0x03, 0x01, 0x02, 0x04, 0x12, 0x03, 0x1f, 0x04, 0x22, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x00, 0x03, 0x01, 0x02, 0x04, 0x06, 0x12, 0x03, 0x1f, 0x04, 0x14, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x00, 0x03, 0x01, 0x02, 0x04, 0x01, 0x12, 0x03, 0x1f, 0x15, 0x1d, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x00, 0x03, 0x01, 0x02, 0x04, 0x03, 0x12, 0x03, 0x1f, 0x20, 0x21, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x00, 0x03, 0x02, 0x12, 0x04, 0x22, 0x02, 0x26, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x03, 0x02, 0x01, 0x12, 0x03, 0x22, 0x0a, 0x1a, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x02, - 0x08, 0x00, 0x12, 0x04, 0x23, 0x04, 0x25, 0x05, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x02, - 0x08, 0x00, 0x01, 0x12, 0x03, 0x23, 0x0a, 0x17, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x02, - 0x02, 0x00, 0x12, 0x03, 0x24, 0x06, 0x26, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x02, 0x02, - 0x00, 0x06, 0x12, 0x03, 0x24, 0x06, 0x17, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x02, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x24, 0x18, 0x21, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x02, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x24, 0x24, 0x25, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, 0x03, 0x03, 0x12, - 0x04, 0x28, 0x02, 0x2a, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x03, 0x03, 0x01, 0x12, 0x03, - 0x28, 0x0a, 0x1b, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x03, 0x02, 0x00, 0x12, 0x03, 0x29, - 0x04, 0x1a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x03, 0x02, 0x00, 0x05, 0x12, 0x03, 0x29, - 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x29, - 0x0b, 0x15, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x29, - 0x18, 0x19, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x2d, 0x00, 0x3a, 0x01, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x2d, 0x08, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, - 0x02, 0x00, 0x12, 0x03, 0x2e, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, - 0x12, 0x03, 0x2e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x2e, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2e, 0x10, - 0x11, 0x0a, 0xb4, 0x01, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x31, 0x02, 0x1b, 0x1a, - 0xa6, 0x01, 0x20, 0x54, 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, - 0x72, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x20, - 0x79, 0x6f, 0x75, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x74, 0x61, 0x67, 0x20, 0x61, 0x6c, - 0x6c, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, - 0x72, 0x65, 0x0a, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, - 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, - 0x6d, 0x65, 0x20, 0x74, 0x61, 0x67, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, - 0x04, 0x12, 0x03, 0x31, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, - 0x03, 0x31, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x31, - 0x12, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x31, 0x19, 0x1a, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x32, 0x02, 0x22, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x01, 0x02, 0x02, 0x04, 0x12, 0x03, 0x32, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x02, 0x05, 0x12, 0x03, 0x32, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x02, 0x01, 0x12, 0x03, 0x32, 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, - 0x12, 0x03, 0x32, 0x20, 0x21, 0x0a, 0x8c, 0x02, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, - 0x36, 0x02, 0x12, 0x1a, 0xfe, 0x01, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, - 0x70, 0x61, 0x74, 0x68, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, - 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, 0x74, - 0x73, 0x65, 0x6c, 0x66, 0x2e, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x3a, 0x0a, 0x20, 0x2d, 0x20, 0x27, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x75, 0x73, - 0x65, 0x72, 0x73, 0x27, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x73, 0x20, 0x27, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x27, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x27, 0x75, 0x73, 0x65, 0x72, 0x73, 0x27, 0x0a, 0x20, - 0x2d, 0x20, 0x27, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x31, 0x32, - 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x31, 0x32, 0x33, - 0x2e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x31, 0x32, 0x33, 0x27, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x20, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x05, 0x12, 0x03, 0x36, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x01, 0x12, 0x03, 0x36, 0x09, 0x0d, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, 0x03, 0x12, 0x03, 0x36, 0x10, 0x11, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x01, 0x02, 0x04, 0x12, 0x03, 0x37, 0x02, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x04, 0x04, 0x12, 0x03, 0x37, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x04, 0x06, 0x12, 0x03, 0x37, 0x0b, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x01, - 0x12, 0x03, 0x37, 0x15, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x03, 0x12, 0x03, - 0x37, 0x1d, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x05, 0x12, 0x03, 0x39, 0x02, 0x29, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x04, 0x12, 0x03, 0x39, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x06, 0x12, 0x03, 0x39, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x05, 0x01, 0x12, 0x03, 0x39, 0x1d, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x05, 0x03, 0x12, 0x03, 0x39, 0x27, 0x28, 0x0a, 0x71, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, - 0x3c, 0x00, 0x45, 0x01, 0x22, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3a, 0x0a, 0x20, 0x2d, 0x20, 0x6e, 0x6f, - 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x0a, 0x20, 0x2d, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, - 0x0a, 0x20, 0x2d, 0x20, 0x27, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, - 0x70, 0x27, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x69, - 0x6e, 0x74, 0x6f, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x28, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x29, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x02, 0x01, 0x12, 0x03, 0x3c, 0x08, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, - 0x03, 0x42, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, 0x03, 0x42, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x42, 0x09, 0x0d, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x42, 0x10, 0x11, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x43, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x02, 0x02, 0x01, 0x04, 0x12, 0x03, 0x43, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x43, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x43, 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x43, 0x20, 0x21, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x44, 0x02, 0x20, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x04, 0x12, 0x03, 0x44, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x06, 0x12, 0x03, 0x44, 0x0b, 0x15, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x02, 0x01, 0x12, 0x03, 0x44, 0x16, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x02, 0x03, 0x12, 0x03, 0x44, 0x1e, 0x1f, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, - 0x47, 0x00, 0x4a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x47, 0x08, 0x12, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x48, 0x02, 0x12, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x03, 0x02, 0x00, 0x05, 0x12, 0x03, 0x48, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x48, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x48, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x01, 0x12, - 0x03, 0x49, 0x02, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x06, 0x12, 0x03, 0x49, - 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, 0x49, 0x16, 0x1a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x49, 0x1d, 0x1e, 0x0a, 0x0a, - 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x4c, 0x00, 0x4f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, - 0x01, 0x12, 0x03, 0x4c, 0x08, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, - 0x4d, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, 0x12, 0x03, 0x4d, 0x02, - 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x4d, 0x09, 0x0d, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x4d, 0x10, 0x11, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x04, 0x02, 0x01, 0x12, 0x03, 0x4e, 0x02, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, - 0x02, 0x01, 0x06, 0x12, 0x03, 0x4e, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, - 0x01, 0x12, 0x03, 0x4e, 0x16, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x03, 0x12, - 0x03, 0x4e, 0x1d, 0x1e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0x8b, 0x05, 0x0a, - 0x23, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, - 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x22, 0x4c, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3d, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x61, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x02, 0x50, 0x01, 0x4a, 0x94, 0x03, 0x0a, 0x06, - 0x12, 0x04, 0x00, 0x00, 0x10, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, - 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, - 0x03, 0x04, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, - 0x37, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x07, 0x00, 0x09, 0x01, 0x1a, 0x2b, 0x20, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6e, - 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, - 0x03, 0x07, 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x08, 0x02, - 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x08, 0x02, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x08, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x08, 0x1d, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x08, 0x27, 0x28, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, - 0x04, 0x0b, 0x00, 0x10, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x0b, 0x08, - 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x0c, 0x02, 0x12, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0c, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x0c, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, - 0x12, 0x03, 0x0e, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x04, 0x12, 0x03, - 0x0e, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x0e, 0x0b, - 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0e, 0x12, 0x16, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0e, 0x19, 0x1a, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x0f, 0x02, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x02, 0x04, 0x12, 0x03, 0x0f, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, - 0x05, 0x12, 0x03, 0x0f, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, - 0x03, 0x0f, 0x12, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x0f, - 0x1b, 0x1c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xb8, 0x03, 0x0a, 0x24, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x22, 0x3f, 0x0a, 0x0c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x75, 0x6c, - 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x75, - 0x6c, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x42, 0x02, 0x50, 0x01, 0x4a, 0xb0, 0x02, 0x0a, 0x06, 0x12, - 0x04, 0x00, 0x00, 0x0a, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, - 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, - 0x04, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x82, - 0x01, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x07, 0x00, 0x0a, 0x01, 0x1a, 0x76, 0x20, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, 0x70, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, - 0x6e, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x20, 0x49, 0x74, - 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, - 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x70, 0x61, 0x74, - 0x68, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x07, 0x08, 0x14, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x08, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x08, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x08, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x08, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, - 0x09, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x09, 0x02, - 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x09, 0x09, 0x12, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x09, 0x15, 0x16, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xb8, 0x13, 0x0a, 0x24, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x69, 0x5f, 0x72, - 0x70, 0x63, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, - 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x1a, 0x23, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x71, 0x75, 0x61, 0x72, - 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0x13, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4c, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x75, - 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x73, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x49, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x56, - 0x69, 0x65, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, - 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x75, - 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x69, 0x65, - 0x77, 0x73, 0x22, 0x23, 0x0a, 0x0b, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x0e, 0x0a, 0x0c, 0x45, 0x78, 0x65, 0x63, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x46, 0x0a, - 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, - 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x33, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x14, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x54, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x71, 0x75, 0x61, 0x72, - 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x07, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x32, 0x87, 0x04, 0x0a, 0x0d, 0x43, 0x4c, 0x49, 0x52, - 0x50, 0x43, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x57, 0x0a, 0x0a, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x54, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, - 0x22, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x45, 0x78, 0x65, 0x63, - 0x12, 0x1d, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x48, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1e, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x71, 0x75, 0x61, - 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x42, 0x02, 0x50, 0x01, 0x4a, 0xc0, 0x09, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x39, 0x01, - 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, - 0x03, 0x02, 0x00, 0x19, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x2d, 0x0a, - 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2d, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x02, - 0x12, 0x03, 0x06, 0x00, 0x2e, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x08, 0x00, 0x22, 0x0a, - 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x08, 0x00, 0x22, 0x0a, 0x0a, 0x0a, 0x02, 0x06, 0x00, - 0x12, 0x04, 0x0a, 0x00, 0x11, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x06, 0x00, 0x01, 0x12, 0x03, 0x0a, - 0x08, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0b, 0x02, 0x41, 0x0a, - 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x06, 0x10, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x0b, 0x11, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0b, 0x2d, 0x3f, 0x0a, 0x0b, 0x0a, 0x04, 0x06, 0x00, 0x02, - 0x01, 0x12, 0x03, 0x0c, 0x02, 0x3e, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x01, 0x12, - 0x03, 0x0c, 0x06, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x0c, - 0x10, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0c, 0x2b, 0x3c, - 0x0a, 0x0b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x02, 0x12, 0x03, 0x0d, 0x02, 0x2f, 0x0a, 0x0c, 0x0a, - 0x05, 0x06, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x0d, 0x06, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x0d, 0x0b, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x02, 0x03, 0x12, 0x03, 0x0d, 0x21, 0x2d, 0x0a, 0x0b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x03, 0x12, - 0x03, 0x0e, 0x02, 0x32, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x0e, - 0x06, 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x02, 0x12, 0x03, 0x0e, 0x0c, 0x18, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x0e, 0x23, 0x30, 0x0a, 0x0b, - 0x0a, 0x04, 0x06, 0x00, 0x02, 0x04, 0x12, 0x03, 0x0f, 0x02, 0x44, 0x0a, 0x0c, 0x0a, 0x05, 0x06, - 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x0f, 0x06, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, - 0x04, 0x02, 0x12, 0x03, 0x0f, 0x12, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x04, 0x03, - 0x12, 0x03, 0x0f, 0x2f, 0x42, 0x0a, 0x0b, 0x0a, 0x04, 0x06, 0x00, 0x02, 0x05, 0x12, 0x03, 0x10, - 0x02, 0x44, 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x10, 0x06, 0x11, - 0x0a, 0x0c, 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x02, 0x12, 0x03, 0x10, 0x12, 0x24, 0x0a, 0x0c, - 0x0a, 0x05, 0x06, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x10, 0x2f, 0x42, 0x0a, 0x09, 0x0a, 0x02, - 0x04, 0x00, 0x12, 0x03, 0x13, 0x00, 0x1c, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, - 0x13, 0x08, 0x19, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x15, 0x00, 0x17, 0x01, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x15, 0x08, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x01, 0x02, 0x00, 0x12, 0x03, 0x16, 0x02, 0x23, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, - 0x04, 0x12, 0x03, 0x16, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x16, 0x0b, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x16, - 0x18, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x16, 0x21, 0x22, - 0x0a, 0x09, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x03, 0x19, 0x00, 0x1b, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x02, 0x01, 0x12, 0x03, 0x19, 0x08, 0x18, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x1b, - 0x00, 0x1d, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x1b, 0x08, 0x19, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x1c, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x03, 0x02, 0x00, 0x04, 0x12, 0x03, 0x1c, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, - 0x02, 0x00, 0x06, 0x12, 0x03, 0x1c, 0x0b, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x1c, 0x18, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x1c, 0x20, 0x21, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x1f, 0x00, 0x21, 0x01, - 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x1f, 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x20, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, - 0x00, 0x05, 0x12, 0x03, 0x20, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, - 0x12, 0x03, 0x20, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x20, 0x11, 0x12, 0x0a, 0x09, 0x0a, 0x02, 0x04, 0x05, 0x12, 0x03, 0x23, 0x00, 0x17, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, 0x03, 0x23, 0x08, 0x14, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x06, - 0x12, 0x04, 0x25, 0x00, 0x27, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x25, - 0x08, 0x14, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x26, 0x02, 0x13, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, 0x26, 0x02, 0x08, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x26, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x26, 0x11, 0x12, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x07, 0x12, - 0x04, 0x29, 0x00, 0x2b, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x29, 0x08, - 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x00, 0x12, 0x03, 0x2a, 0x02, 0x19, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x06, 0x12, 0x03, 0x2a, 0x02, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2a, 0x0e, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x2a, 0x17, 0x18, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x08, 0x12, 0x04, - 0x2d, 0x00, 0x2f, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, 0x12, 0x03, 0x2d, 0x08, 0x1a, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x03, 0x2e, 0x02, 0x18, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x08, 0x02, 0x00, 0x05, 0x12, 0x03, 0x2e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x08, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2e, 0x09, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x2e, 0x16, 0x17, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x04, 0x31, - 0x00, 0x33, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x03, 0x31, 0x08, 0x1b, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x03, 0x32, 0x02, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x09, 0x02, 0x00, 0x04, 0x12, 0x03, 0x32, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, - 0x02, 0x00, 0x05, 0x12, 0x03, 0x32, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x32, 0x12, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x32, 0x1c, 0x1d, 0x0a, 0x09, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x03, 0x35, 0x00, 0x1d, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x0a, 0x01, 0x12, 0x03, 0x35, 0x08, 0x1a, 0x0a, 0x0a, 0x0a, 0x02, 0x04, - 0x0b, 0x12, 0x04, 0x37, 0x00, 0x39, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0b, 0x01, 0x12, 0x03, - 0x37, 0x08, 0x1b, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x00, 0x12, 0x03, 0x38, 0x02, 0x29, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x04, 0x12, 0x03, 0x38, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x06, 0x12, 0x03, 0x38, 0x0b, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x03, 0x38, 0x1d, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x38, 0x27, 0x28, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, - 0x0a, 0xcc, 0x03, 0x0a, 0x29, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, - 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x22, 0x74, 0x0a, 0x11, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x50, 0x01, 0x4a, 0x8a, 0x02, 0x0a, 0x06, 0x12, - 0x04, 0x00, 0x00, 0x0a, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, - 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, - 0x04, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x0a, - 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, 0x00, 0x0a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, - 0x01, 0x12, 0x03, 0x06, 0x08, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, - 0x07, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x07, 0x02, - 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x07, 0x09, 0x0d, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x07, 0x10, 0x11, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x08, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x01, 0x04, 0x12, 0x03, 0x08, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, - 0x05, 0x12, 0x03, 0x08, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, - 0x03, 0x08, 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x08, - 0x20, 0x21, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x09, 0x02, 0x1c, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x04, 0x12, 0x03, 0x09, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x09, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x09, 0x12, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x02, 0x03, 0x12, 0x03, 0x09, 0x1a, 0x1b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, - 0xb0, 0x1a, 0x0a, 0x28, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, - 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x22, 0x2f, - 0x0a, 0x03, 0x56, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0xc9, 0x0a, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, 0x0a, 0x06, 0x64, 0x75, 0x63, 0x6b, 0x64, 0x62, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x75, 0x63, 0x6b, 0x44, 0x42, 0x48, - 0x00, 0x52, 0x06, 0x64, 0x75, 0x63, 0x6b, 0x64, 0x62, 0x12, 0x6d, 0x0a, 0x10, 0x64, 0x75, 0x63, - 0x6b, 0x64, 0x62, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x75, 0x63, 0x6b, 0x44, 0x42, 0x49, 0x6e, - 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x75, 0x63, 0x6b, 0x64, 0x62, - 0x49, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x53, 0x0a, 0x06, 0x73, 0x71, 0x6c, 0x69, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x71, 0x4c, - 0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x71, 0x6c, 0x69, 0x74, 0x65, 0x12, 0x6d, 0x0a, - 0x10, 0x73, 0x71, 0x6c, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x71, 0x4c, 0x69, - 0x74, 0x65, 0x49, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x71, - 0x6c, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x5a, 0x0a, 0x09, - 0x62, 0x69, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x3b, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x00, 0x52, 0x08, - 0x62, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x5c, 0x0a, 0x09, 0x73, 0x6e, 0x6f, 0x77, - 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x71, 0x75, - 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x53, 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x6e, 0x6f, - 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x12, 0x59, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, - 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x73, - 0x74, 0x67, 0x72, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, - 0x73, 0x12, 0x29, 0x0a, 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x61, 0x72, 0x52, 0x04, 0x76, 0x61, 0x72, 0x73, 0x1a, 0x2c, 0x0a, 0x16, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x53, 0x71, 0x4c, 0x69, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x1a, 0x20, 0x0a, 0x1e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x71, - 0x4c, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x1a, 0x54, 0x0a, 0x16, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x44, 0x75, 0x63, 0x6b, 0x44, 0x42, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x1a, 0x48, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x75, 0x63, 0x6b, 0x44, 0x42, 0x49, 0x6e, 0x4d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, - 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x1a, 0x32, 0x0a, 0x18, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x1a, 0x58, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x64, - 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x49, 0x64, 0x1a, 0xe4, 0x01, 0x0a, 0x19, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, - 0x6e, 0x6f, 0x77, 0x66, 0x6c, 0x61, 0x6b, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x61, 0x72, 0x65, 0x68, 0x6f, 0x75, 0x73, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x02, 0x50, 0x01, 0x4a, - 0xe8, 0x0e, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x43, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, - 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x08, - 0x0a, 0x01, 0x08, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, - 0x04, 0x00, 0x22, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, 0x00, 0x09, 0x01, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x06, 0x08, 0x0b, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x00, 0x02, 0x00, 0x12, 0x03, 0x07, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x05, 0x12, 0x03, 0x07, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, - 0x03, 0x07, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x07, - 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x08, 0x02, 0x13, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x08, 0x02, 0x08, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x08, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x08, 0x11, 0x12, 0x0a, 0x47, 0x0a, 0x02, 0x04, 0x01, 0x12, - 0x04, 0x0c, 0x00, 0x43, 0x01, 0x1a, 0x3b, 0x20, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x0c, 0x08, 0x18, 0x0a, 0x0c, - 0x0a, 0x04, 0x04, 0x01, 0x08, 0x00, 0x12, 0x04, 0x0d, 0x02, 0x15, 0x03, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x08, 0x00, 0x01, 0x12, 0x03, 0x0d, 0x08, 0x0e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, - 0x02, 0x00, 0x12, 0x03, 0x0e, 0x04, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x06, - 0x12, 0x03, 0x0e, 0x04, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x0e, 0x1b, 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0e, 0x24, - 0x25, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x0f, 0x04, 0x38, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x06, 0x12, 0x03, 0x0f, 0x04, 0x22, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0f, 0x23, 0x33, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x01, 0x03, 0x12, 0x03, 0x0f, 0x36, 0x37, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, - 0x12, 0x03, 0x10, 0x04, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x06, 0x12, 0x03, - 0x10, 0x04, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x01, 0x12, 0x03, 0x10, 0x1b, - 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, 0x03, 0x12, 0x03, 0x10, 0x24, 0x25, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x03, 0x12, 0x03, 0x11, 0x04, 0x38, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x03, 0x06, 0x12, 0x03, 0x11, 0x04, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x03, 0x01, 0x12, 0x03, 0x11, 0x23, 0x33, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x03, - 0x03, 0x12, 0x03, 0x11, 0x36, 0x37, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x04, 0x12, 0x03, - 0x12, 0x04, 0x2b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x06, 0x12, 0x03, 0x12, 0x04, - 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x01, 0x12, 0x03, 0x12, 0x1d, 0x26, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x04, 0x03, 0x12, 0x03, 0x12, 0x29, 0x2a, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x01, 0x02, 0x05, 0x12, 0x03, 0x13, 0x04, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x05, 0x06, 0x12, 0x03, 0x13, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, - 0x01, 0x12, 0x03, 0x13, 0x1e, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x05, 0x03, 0x12, - 0x03, 0x13, 0x2a, 0x2b, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x06, 0x12, 0x03, 0x14, 0x04, - 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x06, 0x12, 0x03, 0x14, 0x04, 0x1c, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x06, 0x01, 0x12, 0x03, 0x14, 0x1d, 0x25, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x01, 0x02, 0x06, 0x03, 0x12, 0x03, 0x14, 0x28, 0x29, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x01, 0x02, 0x07, 0x12, 0x03, 0x16, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x07, - 0x04, 0x12, 0x03, 0x16, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x07, 0x06, 0x12, - 0x03, 0x16, 0x0b, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x07, 0x01, 0x12, 0x03, 0x16, - 0x0f, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x07, 0x03, 0x12, 0x03, 0x16, 0x16, 0x17, - 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x01, 0x03, 0x00, 0x12, 0x04, 0x18, 0x02, 0x1a, 0x03, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x03, 0x00, 0x01, 0x12, 0x03, 0x18, 0x0a, 0x20, 0x0a, 0x0d, 0x0a, 0x06, - 0x04, 0x01, 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x19, 0x04, 0x14, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x19, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x19, 0x0b, 0x0f, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x19, 0x12, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x01, 0x03, 0x01, 0x12, 0x03, 0x1c, 0x02, 0x2b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x03, 0x01, - 0x01, 0x12, 0x03, 0x1c, 0x0a, 0x28, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x01, 0x03, 0x02, 0x12, 0x04, - 0x1e, 0x02, 0x21, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x03, 0x02, 0x01, 0x12, 0x03, 0x1e, - 0x0a, 0x20, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x02, 0x02, 0x00, 0x12, 0x03, 0x1f, 0x04, - 0x14, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x02, 0x02, 0x00, 0x05, 0x12, 0x03, 0x1f, 0x04, - 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1f, 0x0b, - 0x0f, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1f, 0x12, - 0x13, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, 0x20, 0x04, 0x1f, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x02, 0x02, 0x01, 0x04, 0x12, 0x03, 0x20, 0x04, 0x0c, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x20, 0x0d, 0x13, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x20, 0x14, 0x1a, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x20, 0x1d, 0x1e, - 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x01, 0x03, 0x03, 0x12, 0x04, 0x23, 0x02, 0x25, 0x03, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x03, 0x03, 0x01, 0x12, 0x03, 0x23, 0x0a, 0x28, 0x0a, 0x0d, 0x0a, 0x06, - 0x04, 0x01, 0x03, 0x03, 0x02, 0x00, 0x12, 0x03, 0x24, 0x04, 0x1f, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x03, 0x02, 0x00, 0x04, 0x12, 0x03, 0x24, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x03, 0x02, 0x00, 0x05, 0x12, 0x03, 0x24, 0x0d, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x24, 0x14, 0x1a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x24, 0x1d, 0x1e, 0x0a, 0x0c, 0x0a, 0x04, 0x04, - 0x01, 0x03, 0x04, 0x12, 0x04, 0x27, 0x02, 0x29, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x03, - 0x04, 0x01, 0x12, 0x03, 0x27, 0x0a, 0x22, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x04, 0x02, - 0x00, 0x12, 0x03, 0x28, 0x04, 0x16, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x04, 0x02, 0x00, - 0x05, 0x12, 0x03, 0x28, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x04, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x28, 0x0b, 0x11, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x04, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x28, 0x14, 0x15, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x01, 0x03, 0x05, 0x12, 0x04, - 0x35, 0x02, 0x38, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x03, 0x05, 0x01, 0x12, 0x03, 0x35, - 0x0a, 0x22, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x05, 0x02, 0x00, 0x12, 0x03, 0x36, 0x04, - 0x1a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x05, 0x02, 0x00, 0x05, 0x12, 0x03, 0x36, 0x04, - 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x36, 0x0b, - 0x15, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x36, 0x18, - 0x19, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x01, 0x03, 0x05, 0x02, 0x01, 0x12, 0x03, 0x37, 0x04, 0x1a, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x05, 0x02, 0x01, 0x05, 0x12, 0x03, 0x37, 0x04, 0x0a, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x05, 0x02, 0x01, 0x01, 0x12, 0x03, 0x37, 0x0b, 0x15, - 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, 0x37, 0x18, 0x19, - 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x01, 0x03, 0x06, 0x12, 0x04, 0x3a, 0x02, 0x42, 0x03, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x03, 0x06, 0x01, 0x12, 0x03, 0x3a, 0x0a, 0x23, 0x0a, 0x0d, 0x0a, 0x06, - 0x04, 0x01, 0x03, 0x06, 0x02, 0x00, 0x12, 0x03, 0x3b, 0x04, 0x1b, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, 0x3b, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x06, 0x02, 0x00, 0x01, 0x12, 0x03, 0x3b, 0x0b, 0x16, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x06, 0x02, 0x00, 0x03, 0x12, 0x03, 0x3b, 0x19, 0x1a, 0x0a, 0x0d, 0x0a, 0x06, 0x04, - 0x01, 0x03, 0x06, 0x02, 0x01, 0x12, 0x03, 0x3c, 0x04, 0x19, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, - 0x03, 0x06, 0x02, 0x01, 0x05, 0x12, 0x03, 0x3c, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, - 0x03, 0x06, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3c, 0x0b, 0x14, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, - 0x03, 0x06, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3c, 0x17, 0x18, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x01, - 0x03, 0x06, 0x02, 0x02, 0x12, 0x03, 0x3d, 0x04, 0x1d, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, - 0x06, 0x02, 0x02, 0x05, 0x12, 0x03, 0x3d, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, - 0x06, 0x02, 0x02, 0x01, 0x12, 0x03, 0x3d, 0x0b, 0x18, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, 0x03, - 0x06, 0x02, 0x02, 0x03, 0x12, 0x03, 0x3d, 0x1b, 0x1c, 0x0a, 0x32, 0x0a, 0x06, 0x04, 0x01, 0x03, - 0x06, 0x02, 0x03, 0x12, 0x03, 0x3e, 0x04, 0x14, 0x22, 0x23, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x3a, - 0x20, 0x74, 0x68, 0x69, 0x6e, 0x6b, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x6d, 0x61, 0x6b, - 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x0a, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x01, 0x03, 0x06, 0x02, 0x03, 0x05, 0x12, 0x03, 0x3e, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x01, 0x03, 0x06, 0x02, 0x03, 0x01, 0x12, 0x03, 0x3e, 0x0b, 0x0f, 0x0a, 0x0e, 0x0a, - 0x07, 0x04, 0x01, 0x03, 0x06, 0x02, 0x03, 0x03, 0x12, 0x03, 0x3e, 0x12, 0x13, 0x0a, 0x0d, 0x0a, - 0x06, 0x04, 0x01, 0x03, 0x06, 0x02, 0x04, 0x12, 0x03, 0x3f, 0x04, 0x18, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x01, 0x03, 0x06, 0x02, 0x04, 0x05, 0x12, 0x03, 0x3f, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x01, 0x03, 0x06, 0x02, 0x04, 0x01, 0x12, 0x03, 0x3f, 0x0b, 0x13, 0x0a, 0x0e, 0x0a, 0x07, - 0x04, 0x01, 0x03, 0x06, 0x02, 0x04, 0x03, 0x12, 0x03, 0x3f, 0x16, 0x17, 0x0a, 0x0d, 0x0a, 0x06, - 0x04, 0x01, 0x03, 0x06, 0x02, 0x05, 0x12, 0x03, 0x40, 0x04, 0x16, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x06, 0x02, 0x05, 0x05, 0x12, 0x03, 0x40, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x06, 0x02, 0x05, 0x01, 0x12, 0x03, 0x40, 0x0b, 0x11, 0x0a, 0x0e, 0x0a, 0x07, 0x04, - 0x01, 0x03, 0x06, 0x02, 0x05, 0x03, 0x12, 0x03, 0x40, 0x14, 0x15, 0x0a, 0x0d, 0x0a, 0x06, 0x04, - 0x01, 0x03, 0x06, 0x02, 0x06, 0x12, 0x03, 0x41, 0x04, 0x19, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, - 0x03, 0x06, 0x02, 0x06, 0x05, 0x12, 0x03, 0x41, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, - 0x03, 0x06, 0x02, 0x06, 0x01, 0x12, 0x03, 0x41, 0x0b, 0x14, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x01, - 0x03, 0x06, 0x02, 0x06, 0x03, 0x12, 0x03, 0x41, 0x17, 0x18, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, 0x0a, 0xe8, 0x04, 0x0a, 0x1b, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x22, 0x36, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x9d, 0x01, 0x0a, - 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x3d, 0x0a, 0x05, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x71, 0x75, 0x61, - 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, - 0x6c, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x50, 0x0a, 0x0a, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x75, 0x61, 0x72, - 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, - 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x02, 0x50, 0x01, - 0x4a, 0xd2, 0x02, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x0e, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, - 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, - 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, - 0x03, 0x04, 0x00, 0x22, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x06, 0x00, 0x0a, 0x01, - 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x06, 0x08, 0x0c, 0x0a, 0x57, 0x0a, 0x04, - 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x08, 0x02, 0x12, 0x1a, 0x4a, 0x20, 0x54, 0x68, 0x65, 0x20, - 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, - 0x2e, 0x20, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6f, 0x74, - 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, - 0x08, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x08, 0x09, - 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x08, 0x10, 0x11, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x09, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x09, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x01, 0x01, 0x12, 0x03, 0x09, 0x08, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, - 0x03, 0x12, 0x03, 0x09, 0x13, 0x14, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x0c, 0x00, - 0x0e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x0c, 0x08, 0x12, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x0d, 0x02, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, 0x0d, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x0d, 0x14, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x0d, 0x1c, 0x1d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0x8a, 0x03, - 0x0a, 0x1f, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x22, 0x3c, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, - 0x69, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, - 0x72, 0x42, 0x02, 0x50, 0x01, 0x4a, 0x8a, 0x02, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x0a, 0x01, - 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, - 0x03, 0x02, 0x00, 0x19, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x09, - 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x5d, 0x0a, 0x02, 0x04, 0x00, 0x12, - 0x04, 0x07, 0x00, 0x0a, 0x01, 0x1a, 0x51, 0x20, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x70, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, - 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, - 0x74, 0x65, 0x72, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x20, - 0x61, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, - 0x03, 0x07, 0x08, 0x10, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x08, 0x02, - 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x08, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x08, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x08, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x00, 0x02, 0x01, 0x12, 0x03, 0x09, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, - 0x05, 0x12, 0x03, 0x09, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, - 0x03, 0x09, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x09, - 0x15, 0x16, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xbf, 0x50, 0x0a, 0x1c, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, - 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x22, 0xec, 0x05, - 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x51, 0x4c, 0x46, 0x69, - 0x6c, 0x65, 0x48, 0x00, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x36, 0x0a, 0x06, 0x75, 0x6e, 0x69, - 0x71, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x75, 0x61, 0x72, - 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, - 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x4e, 0x75, - 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x6f, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x48, 0x0a, - 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x12, 0x4f, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x15, 0x67, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x5f, 0x6f, 0x72, 0x5f, 0x65, 0x71, 0x75, 0x61, - 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x47, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4f, 0x72, 0x45, 0x71, 0x75, 0x61, - 0x6c, 0x48, 0x00, 0x52, 0x12, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, - 0x4f, 0x72, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x12, 0x54, 0x0a, 0x12, 0x6c, 0x65, 0x73, 0x73, 0x5f, - 0x74, 0x68, 0x61, 0x6e, 0x5f, 0x6f, 0x72, 0x5f, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x65, 0x73, 0x73, 0x54, - 0x68, 0x61, 0x6e, 0x4f, 0x72, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0f, 0x6c, 0x65, - 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x4f, 0x72, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x12, 0x46, 0x0a, - 0x0c, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x61, 0x6e, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x72, 0x54, 0x68, 0x61, 0x6e, 0x12, 0x3d, 0x0a, 0x09, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x68, - 0x61, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, - 0x4c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x6c, 0x65, 0x73, 0x73, - 0x54, 0x68, 0x61, 0x6e, 0x12, 0x59, 0x0a, 0x13, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x48, 0x00, 0x52, 0x11, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x42, - 0x0b, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x0b, - 0x54, 0x65, 0x73, 0x74, 0x53, 0x51, 0x4c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x6b, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, - 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, - 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, 0x6c, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x74, - 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x22, 0x8d, 0x01, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4f, 0x72, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x12, 0x1b, - 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x65, 0x73, 0x73, - 0x54, 0x68, 0x61, 0x6e, 0x4f, 0x72, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, - 0x54, 0x68, 0x61, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x0c, 0x54, 0x65, - 0x73, 0x74, 0x4c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, - 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x81, 0x02, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x68, 0x69, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x1f, 0x0a, - 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, - 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x22, 0x9c, 0x01, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, - 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, - 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x22, 0x78, 0x0a, 0x15, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x61, 0x0a, 0x04, - 0x53, 0x65, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x68, - 0x61, 0x32, 0x35, 0x36, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x48, 0x61, 0x73, 0x68, 0x22, - 0xa9, 0x03, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x68, - 0x61, 0x32, 0x35, 0x36, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x2d, 0x0a, 0x0f, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x74, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3c, - 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x59, 0x0a, 0x0a, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x74, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf1, 0x03, 0x0a, 0x08, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, - 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x68, 0x61, - 0x32, 0x35, 0x36, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x66, 0x69, 0x6c, 0x65, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1d, - 0x0a, 0x0a, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x47, 0x0a, - 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0xb6, 0x01, 0x0a, 0x10, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x5d, 0x0a, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, - 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x48, 0x00, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x32, 0x0a, 0x11, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, - 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0f, - 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x52, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x73, 0x22, 0xb6, 0x02, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, - 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3f, - 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x1a, - 0x5b, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x50, 0x01, - 0x4a, 0x91, 0x34, 0x0a, 0x07, 0x12, 0x05, 0x00, 0x00, 0xb0, 0x01, 0x01, 0x0a, 0x08, 0x0a, 0x01, - 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, - 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, - 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x70, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x08, 0x00, 0x15, - 0x01, 0x32, 0x64, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x20, 0x57, 0x69, 0x6c, 0x6c, 0x20, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x74, 0x65, 0x73, 0x74, 0x73, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x20, 0x62, 0x75, 0x74, 0x20, - 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, - 0x08, 0x08, 0x0c, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, 0x08, 0x00, 0x12, 0x04, 0x09, 0x02, 0x14, - 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, 0x01, 0x12, 0x03, 0x09, 0x08, 0x11, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0a, 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x0a, 0x04, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x10, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x0a, 0x16, 0x17, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, - 0x0b, 0x04, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x0b, 0x04, - 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0b, 0x0f, 0x15, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0b, 0x18, 0x19, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x0c, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x02, 0x06, 0x12, 0x03, 0x0c, 0x04, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, - 0x01, 0x12, 0x03, 0x0c, 0x10, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, - 0x03, 0x0c, 0x1b, 0x1c, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x0d, 0x04, - 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x0d, 0x04, 0x14, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x0d, 0x15, 0x21, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x0d, 0x24, 0x25, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x00, 0x02, 0x04, 0x12, 0x03, 0x0e, 0x04, 0x2b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, - 0x06, 0x12, 0x03, 0x0e, 0x04, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, - 0x03, 0x0e, 0x17, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x0e, - 0x29, 0x2a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x05, 0x12, 0x03, 0x0f, 0x04, 0x35, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x06, 0x12, 0x03, 0x0f, 0x04, 0x1a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, 0x0f, 0x1b, 0x30, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x0f, 0x33, 0x34, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x06, 0x12, 0x03, 0x10, 0x04, 0x2f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x06, 0x12, - 0x03, 0x10, 0x04, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x10, - 0x18, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x03, 0x12, 0x03, 0x10, 0x2d, 0x2e, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x07, 0x12, 0x03, 0x11, 0x04, 0x25, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x07, 0x06, 0x12, 0x03, 0x11, 0x04, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x07, 0x01, 0x12, 0x03, 0x11, 0x14, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x07, 0x03, 0x12, 0x03, 0x11, 0x23, 0x24, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x08, 0x12, - 0x03, 0x12, 0x04, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x06, 0x12, 0x03, 0x12, - 0x04, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x01, 0x12, 0x03, 0x12, 0x11, 0x1a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x08, 0x03, 0x12, 0x03, 0x12, 0x1d, 0x1e, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x00, 0x02, 0x09, 0x12, 0x03, 0x13, 0x04, 0x33, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x09, 0x06, 0x12, 0x03, 0x13, 0x04, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x09, 0x01, 0x12, 0x03, 0x13, 0x1a, 0x2d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x09, 0x03, - 0x12, 0x03, 0x13, 0x30, 0x32, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x17, 0x00, 0x1a, - 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, 0x17, 0x08, 0x13, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x18, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x00, 0x05, 0x12, 0x03, 0x18, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x18, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x18, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x19, 0x02, - 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x04, 0x12, 0x03, 0x19, 0x02, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x05, 0x12, 0x03, 0x19, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x19, 0x12, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x19, 0x1f, 0x20, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, - 0x04, 0x1c, 0x00, 0x21, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x1c, 0x08, - 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x1d, 0x02, 0x17, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, 0x03, 0x1d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1d, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x1d, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x1e, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, - 0x1e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x1e, 0x09, - 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1e, 0x11, 0x12, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x1f, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x02, 0x05, 0x12, 0x03, 0x1f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, - 0x02, 0x02, 0x01, 0x12, 0x03, 0x1f, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, - 0x03, 0x12, 0x03, 0x1f, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x03, 0x12, 0x03, - 0x20, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, 0x05, 0x12, 0x03, 0x20, 0x02, - 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, 0x01, 0x12, 0x03, 0x20, 0x09, 0x0f, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x03, 0x03, 0x12, 0x03, 0x20, 0x12, 0x13, 0x0a, 0x0a, 0x0a, - 0x02, 0x04, 0x03, 0x12, 0x04, 0x23, 0x00, 0x28, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, - 0x12, 0x03, 0x23, 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x24, - 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x05, 0x12, 0x03, 0x24, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x24, 0x09, 0x12, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x24, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x03, 0x02, 0x01, 0x12, 0x03, 0x25, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x25, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x25, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x25, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x02, 0x12, 0x03, 0x26, 0x02, 0x12, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x05, 0x12, 0x03, 0x26, 0x02, 0x08, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, 0x01, 0x12, 0x03, 0x26, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x03, 0x02, 0x02, 0x03, 0x12, 0x03, 0x26, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, - 0x02, 0x03, 0x12, 0x03, 0x27, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x05, - 0x12, 0x03, 0x27, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x01, 0x12, 0x03, - 0x27, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, 0x12, 0x03, 0x27, 0x12, - 0x13, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x2a, 0x00, 0x30, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x2a, 0x08, 0x1e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, - 0x00, 0x12, 0x03, 0x2b, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, 0x12, - 0x03, 0x2b, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2b, - 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2b, 0x15, 0x16, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x02, 0x13, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x04, 0x02, 0x01, 0x05, 0x12, 0x03, 0x2c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x04, 0x02, 0x01, 0x01, 0x12, 0x03, 0x2c, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, - 0x01, 0x03, 0x12, 0x03, 0x2c, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x02, 0x12, - 0x03, 0x2d, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x05, 0x12, 0x03, 0x2d, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x2d, 0x09, 0x0d, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x03, 0x12, 0x03, 0x2d, 0x10, 0x11, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x04, 0x02, 0x03, 0x12, 0x03, 0x2e, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x04, 0x02, 0x03, 0x05, 0x12, 0x03, 0x2e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, - 0x03, 0x01, 0x12, 0x03, 0x2e, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x03, - 0x12, 0x03, 0x2e, 0x12, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x04, 0x12, 0x03, 0x2f, - 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x05, 0x12, 0x03, 0x2f, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x01, 0x12, 0x03, 0x2f, 0x09, 0x0e, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, 0x03, 0x12, 0x03, 0x2f, 0x11, 0x12, 0x0a, 0x0a, 0x0a, 0x02, - 0x04, 0x05, 0x12, 0x04, 0x32, 0x00, 0x38, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, 0x01, 0x12, - 0x03, 0x32, 0x08, 0x1b, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, 0x33, 0x02, - 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x05, 0x12, 0x03, 0x33, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x33, 0x09, 0x12, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x33, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x05, 0x02, 0x01, 0x12, 0x03, 0x34, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, - 0x05, 0x12, 0x03, 0x34, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x01, 0x12, - 0x03, 0x34, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x01, 0x03, 0x12, 0x03, 0x34, - 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x02, 0x12, 0x03, 0x35, 0x02, 0x12, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x02, 0x05, 0x12, 0x03, 0x35, 0x02, 0x08, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x02, 0x01, 0x12, 0x03, 0x35, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x05, 0x02, 0x02, 0x03, 0x12, 0x03, 0x35, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x05, 0x02, - 0x03, 0x12, 0x03, 0x36, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x05, 0x12, - 0x03, 0x36, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x01, 0x12, 0x03, 0x36, - 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x03, 0x03, 0x12, 0x03, 0x36, 0x12, 0x13, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x04, 0x12, 0x03, 0x37, 0x02, 0x13, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x05, 0x02, 0x04, 0x05, 0x12, 0x03, 0x37, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x05, 0x02, 0x04, 0x01, 0x12, 0x03, 0x37, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, - 0x04, 0x03, 0x12, 0x03, 0x37, 0x11, 0x12, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x06, 0x12, 0x04, 0x3a, - 0x00, 0x40, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x06, 0x01, 0x12, 0x03, 0x3a, 0x08, 0x17, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x00, 0x12, 0x03, 0x3b, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x06, 0x02, 0x00, 0x05, 0x12, 0x03, 0x3b, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x3b, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x3b, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x01, 0x12, 0x03, - 0x3c, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x05, 0x12, 0x03, 0x3c, 0x02, - 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3c, 0x09, 0x0e, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3c, 0x11, 0x12, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x06, 0x02, 0x02, 0x12, 0x03, 0x3d, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, - 0x02, 0x02, 0x05, 0x12, 0x03, 0x3d, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x02, - 0x01, 0x12, 0x03, 0x3d, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x02, 0x03, 0x12, - 0x03, 0x3d, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x06, 0x02, 0x03, 0x12, 0x03, 0x3e, 0x02, - 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x03, 0x05, 0x12, 0x03, 0x3e, 0x02, 0x08, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x03, 0x01, 0x12, 0x03, 0x3e, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x06, 0x02, 0x03, 0x03, 0x12, 0x03, 0x3e, 0x12, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x06, 0x02, 0x04, 0x12, 0x03, 0x3f, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x04, - 0x05, 0x12, 0x03, 0x3f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x04, 0x01, 0x12, - 0x03, 0x3f, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x04, 0x03, 0x12, 0x03, 0x3f, - 0x11, 0x12, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x07, 0x12, 0x04, 0x42, 0x00, 0x48, 0x01, 0x0a, 0x0a, - 0x0a, 0x03, 0x04, 0x07, 0x01, 0x12, 0x03, 0x42, 0x08, 0x14, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x07, - 0x02, 0x00, 0x12, 0x03, 0x43, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x05, - 0x12, 0x03, 0x43, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x43, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x00, 0x03, 0x12, 0x03, 0x43, 0x15, - 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x01, 0x12, 0x03, 0x44, 0x02, 0x13, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x07, 0x02, 0x01, 0x05, 0x12, 0x03, 0x44, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x07, 0x02, 0x01, 0x01, 0x12, 0x03, 0x44, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, - 0x02, 0x01, 0x03, 0x12, 0x03, 0x44, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x02, - 0x12, 0x03, 0x45, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x05, 0x12, 0x03, - 0x45, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x01, 0x12, 0x03, 0x45, 0x09, - 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x02, 0x03, 0x12, 0x03, 0x45, 0x10, 0x11, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x03, 0x12, 0x03, 0x46, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x07, 0x02, 0x03, 0x05, 0x12, 0x03, 0x46, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, - 0x02, 0x03, 0x01, 0x12, 0x03, 0x46, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x03, - 0x03, 0x12, 0x03, 0x46, 0x12, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x07, 0x02, 0x04, 0x12, 0x03, - 0x47, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x05, 0x12, 0x03, 0x47, 0x02, - 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x01, 0x12, 0x03, 0x47, 0x09, 0x0e, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x07, 0x02, 0x04, 0x03, 0x12, 0x03, 0x47, 0x11, 0x12, 0x0a, 0x0a, 0x0a, - 0x02, 0x04, 0x08, 0x12, 0x04, 0x4a, 0x00, 0x52, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x08, 0x01, - 0x12, 0x03, 0x4a, 0x08, 0x18, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x00, 0x12, 0x03, 0x4b, - 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x05, 0x12, 0x03, 0x4b, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x01, 0x12, 0x03, 0x4b, 0x09, 0x12, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x00, 0x03, 0x12, 0x03, 0x4b, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x08, 0x02, 0x01, 0x12, 0x03, 0x4c, 0x02, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x4c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x4c, 0x09, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x4c, 0x18, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x02, 0x12, 0x03, 0x4d, 0x02, 0x19, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x02, 0x05, 0x12, 0x03, 0x4d, 0x02, 0x08, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x02, 0x01, 0x12, 0x03, 0x4d, 0x09, 0x14, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x02, 0x03, 0x12, 0x03, 0x4d, 0x17, 0x18, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, - 0x02, 0x03, 0x12, 0x03, 0x4e, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x03, 0x05, - 0x12, 0x03, 0x4e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x03, 0x01, 0x12, 0x03, - 0x4e, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x03, 0x03, 0x12, 0x03, 0x4e, 0x19, - 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x04, 0x12, 0x03, 0x4f, 0x02, 0x1a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x08, 0x02, 0x04, 0x05, 0x12, 0x03, 0x4f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x04, 0x01, 0x12, 0x03, 0x4f, 0x09, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, - 0x02, 0x04, 0x03, 0x12, 0x03, 0x4f, 0x18, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x05, - 0x12, 0x03, 0x50, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x05, 0x05, 0x12, 0x03, - 0x50, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x05, 0x01, 0x12, 0x03, 0x50, 0x09, - 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x05, 0x03, 0x12, 0x03, 0x50, 0x17, 0x18, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x08, 0x02, 0x06, 0x12, 0x03, 0x51, 0x02, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x08, 0x02, 0x06, 0x05, 0x12, 0x03, 0x51, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, - 0x02, 0x06, 0x01, 0x12, 0x03, 0x51, 0x09, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x08, 0x02, 0x06, - 0x03, 0x12, 0x03, 0x51, 0x19, 0x1a, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x09, 0x12, 0x04, 0x54, 0x00, - 0x5a, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x09, 0x01, 0x12, 0x03, 0x54, 0x08, 0x1a, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x09, 0x02, 0x00, 0x12, 0x03, 0x55, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x09, 0x02, 0x00, 0x05, 0x12, 0x03, 0x55, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x55, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x55, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x01, 0x12, 0x03, 0x56, - 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x05, 0x12, 0x03, 0x56, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x01, 0x12, 0x03, 0x56, 0x09, 0x0e, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x09, 0x02, 0x01, 0x03, 0x12, 0x03, 0x56, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x09, 0x02, 0x02, 0x12, 0x03, 0x57, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, - 0x02, 0x05, 0x12, 0x03, 0x57, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x57, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x02, 0x03, 0x12, 0x03, - 0x57, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x09, 0x02, 0x03, 0x12, 0x03, 0x58, 0x02, 0x14, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x03, 0x05, 0x12, 0x03, 0x58, 0x02, 0x08, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x09, 0x02, 0x03, 0x01, 0x12, 0x03, 0x58, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x09, 0x02, 0x03, 0x03, 0x12, 0x03, 0x58, 0x12, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x09, - 0x02, 0x04, 0x12, 0x03, 0x59, 0x02, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x04, 0x04, - 0x12, 0x03, 0x59, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x04, 0x05, 0x12, 0x03, - 0x59, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x04, 0x01, 0x12, 0x03, 0x59, 0x12, - 0x21, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x09, 0x02, 0x04, 0x03, 0x12, 0x03, 0x59, 0x24, 0x25, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x0a, 0x12, 0x04, 0x5c, 0x00, 0x61, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x0a, 0x01, 0x12, 0x03, 0x5c, 0x08, 0x1d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x00, 0x12, - 0x03, 0x5d, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x05, 0x12, 0x03, 0x5d, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x01, 0x12, 0x03, 0x5d, 0x09, 0x12, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x00, 0x03, 0x12, 0x03, 0x5d, 0x15, 0x16, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x01, 0x12, 0x03, 0x5e, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x0a, 0x02, 0x01, 0x05, 0x12, 0x03, 0x5e, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, - 0x01, 0x01, 0x12, 0x03, 0x5e, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x01, 0x03, - 0x12, 0x03, 0x5e, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0a, 0x02, 0x02, 0x12, 0x03, 0x5f, - 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x05, 0x12, 0x03, 0x5f, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x01, 0x12, 0x03, 0x5f, 0x09, 0x0d, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x02, 0x03, 0x12, 0x03, 0x5f, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x0a, 0x02, 0x03, 0x12, 0x03, 0x60, 0x02, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, - 0x03, 0x04, 0x12, 0x03, 0x60, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x03, 0x05, - 0x12, 0x03, 0x60, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, - 0x60, 0x12, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0a, 0x02, 0x03, 0x03, 0x12, 0x03, 0x60, 0x1c, - 0x1d, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x0b, 0x12, 0x04, 0x63, 0x00, 0x67, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x0b, 0x01, 0x12, 0x03, 0x63, 0x08, 0x0c, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0b, 0x02, - 0x00, 0x12, 0x03, 0x64, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x05, 0x12, - 0x03, 0x64, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x01, 0x12, 0x03, 0x64, - 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x00, 0x03, 0x12, 0x03, 0x64, 0x10, 0x11, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x01, 0x12, 0x03, 0x65, 0x02, 0x17, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x0b, 0x02, 0x01, 0x05, 0x12, 0x03, 0x65, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x0b, 0x02, 0x01, 0x01, 0x12, 0x03, 0x65, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, - 0x01, 0x03, 0x12, 0x03, 0x65, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0b, 0x02, 0x02, 0x12, - 0x03, 0x66, 0x02, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x05, 0x12, 0x03, 0x66, - 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x01, 0x12, 0x03, 0x66, 0x09, 0x19, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0b, 0x02, 0x02, 0x03, 0x12, 0x03, 0x66, 0x1c, 0x1d, 0x0a, 0x0a, - 0x0a, 0x02, 0x04, 0x0c, 0x12, 0x04, 0x69, 0x00, 0x7e, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x0c, - 0x01, 0x12, 0x03, 0x69, 0x08, 0x0d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x00, 0x12, 0x03, - 0x6a, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x05, 0x12, 0x03, 0x6a, 0x02, - 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x01, 0x12, 0x03, 0x6a, 0x09, 0x0d, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x00, 0x03, 0x12, 0x03, 0x6a, 0x10, 0x11, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x0c, 0x02, 0x01, 0x12, 0x03, 0x6b, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, - 0x02, 0x01, 0x04, 0x12, 0x03, 0x6b, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, - 0x05, 0x12, 0x03, 0x6b, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x01, 0x12, - 0x03, 0x6b, 0x12, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x01, 0x03, 0x12, 0x03, 0x6b, - 0x20, 0x21, 0x0a, 0x4e, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x02, 0x12, 0x03, 0x6d, 0x02, 0x1b, 0x1a, - 0x41, 0x20, 0x54, 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, - 0x74, 0x6f, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, - 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x02, 0x04, 0x12, 0x03, 0x6d, 0x02, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x02, 0x05, 0x12, 0x03, 0x6d, 0x0b, 0x11, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x02, 0x01, 0x12, 0x03, 0x6d, 0x12, 0x16, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0c, 0x02, 0x02, 0x03, 0x12, 0x03, 0x6d, 0x19, 0x1a, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0c, - 0x02, 0x03, 0x12, 0x03, 0x6f, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x03, 0x05, - 0x12, 0x03, 0x6f, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x03, 0x01, 0x12, 0x03, - 0x6f, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x03, 0x03, 0x12, 0x03, 0x6f, 0x15, - 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x04, 0x12, 0x03, 0x70, 0x02, 0x1e, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x04, 0x05, 0x12, 0x03, 0x70, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x0c, 0x02, 0x04, 0x01, 0x12, 0x03, 0x70, 0x09, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, - 0x02, 0x04, 0x03, 0x12, 0x03, 0x70, 0x1c, 0x1d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x05, - 0x12, 0x03, 0x72, 0x02, 0x26, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x05, 0x04, 0x12, 0x03, - 0x72, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x05, 0x05, 0x12, 0x03, 0x72, 0x0b, - 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x05, 0x01, 0x12, 0x03, 0x72, 0x12, 0x21, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x05, 0x03, 0x12, 0x03, 0x72, 0x24, 0x25, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x0c, 0x03, 0x00, 0x12, 0x04, 0x74, 0x02, 0x77, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x0c, 0x03, 0x00, 0x01, 0x12, 0x03, 0x74, 0x0a, 0x14, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x0c, 0x03, - 0x00, 0x02, 0x00, 0x12, 0x03, 0x75, 0x04, 0x15, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x0c, 0x03, 0x00, - 0x02, 0x00, 0x05, 0x12, 0x03, 0x75, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x0c, 0x03, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x75, 0x0b, 0x10, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x0c, 0x03, 0x00, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x75, 0x13, 0x14, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x0c, 0x03, 0x00, - 0x02, 0x01, 0x12, 0x03, 0x76, 0x04, 0x24, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x0c, 0x03, 0x00, 0x02, - 0x01, 0x04, 0x12, 0x03, 0x76, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x0c, 0x03, 0x00, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x76, 0x0d, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x0c, 0x03, 0x00, 0x02, - 0x01, 0x01, 0x12, 0x03, 0x76, 0x14, 0x1f, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x0c, 0x03, 0x00, 0x02, - 0x01, 0x03, 0x12, 0x03, 0x76, 0x22, 0x23, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x0c, 0x02, 0x06, 0x12, - 0x03, 0x79, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x06, 0x04, 0x12, 0x03, 0x79, - 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x06, 0x06, 0x12, 0x03, 0x79, 0x0b, 0x15, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x06, 0x01, 0x12, 0x03, 0x79, 0x16, 0x1d, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x06, 0x03, 0x12, 0x03, 0x79, 0x20, 0x21, 0x0a, 0x87, 0x01, 0x0a, - 0x04, 0x04, 0x0c, 0x02, 0x07, 0x12, 0x03, 0x7d, 0x02, 0x21, 0x1a, 0x7a, 0x20, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, - 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x73, 0x65, 0x65, 0x64, 0x73, 0x2f, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, - 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x73, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x6e, - 0x69, 0x71, 0x75, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x0a, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x6c, 0x79, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x07, 0x04, 0x12, - 0x03, 0x7d, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x07, 0x05, 0x12, 0x03, 0x7d, - 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x07, 0x01, 0x12, 0x03, 0x7d, 0x12, 0x1c, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x0c, 0x02, 0x07, 0x03, 0x12, 0x03, 0x7d, 0x1f, 0x20, 0x0a, 0x0c, - 0x0a, 0x02, 0x04, 0x0d, 0x12, 0x06, 0x80, 0x01, 0x00, 0x97, 0x01, 0x01, 0x0a, 0x0b, 0x0a, 0x03, - 0x04, 0x0d, 0x01, 0x12, 0x04, 0x80, 0x01, 0x08, 0x10, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0d, 0x02, - 0x00, 0x12, 0x04, 0x81, 0x01, 0x02, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x05, - 0x12, 0x04, 0x81, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x01, 0x12, - 0x04, 0x81, 0x01, 0x09, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x00, 0x03, 0x12, 0x04, - 0x81, 0x01, 0x10, 0x11, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x01, 0x12, 0x04, 0x82, 0x01, - 0x02, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x04, 0x12, 0x04, 0x82, 0x01, 0x02, - 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x05, 0x12, 0x04, 0x82, 0x01, 0x0b, 0x11, - 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x01, 0x12, 0x04, 0x82, 0x01, 0x12, 0x1d, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x01, 0x03, 0x12, 0x04, 0x82, 0x01, 0x20, 0x21, 0x0a, 0x4f, - 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x02, 0x12, 0x04, 0x84, 0x01, 0x02, 0x1b, 0x1a, 0x41, 0x20, 0x54, - 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, - 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2e, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x02, 0x04, 0x12, 0x04, 0x84, 0x01, 0x02, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x02, 0x05, 0x12, 0x04, 0x84, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0d, 0x02, 0x02, 0x01, 0x12, 0x04, 0x84, 0x01, 0x12, 0x16, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0d, 0x02, 0x02, 0x03, 0x12, 0x04, 0x84, 0x01, 0x19, 0x1a, 0x0a, 0x0c, 0x0a, 0x04, 0x04, - 0x0d, 0x02, 0x03, 0x12, 0x04, 0x86, 0x01, 0x02, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, - 0x03, 0x05, 0x12, 0x04, 0x86, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x03, - 0x01, 0x12, 0x04, 0x86, 0x01, 0x09, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x03, 0x03, - 0x12, 0x04, 0x86, 0x01, 0x15, 0x16, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x04, 0x12, 0x04, - 0x87, 0x01, 0x02, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x04, 0x05, 0x12, 0x04, 0x87, - 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x04, 0x01, 0x12, 0x04, 0x87, 0x01, - 0x09, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x04, 0x03, 0x12, 0x04, 0x87, 0x01, 0x1c, - 0x1d, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0d, 0x02, 0x05, 0x12, 0x04, 0x89, 0x01, 0x02, 0x18, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x05, 0x05, 0x12, 0x04, 0x89, 0x01, 0x02, 0x08, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x05, 0x01, 0x12, 0x04, 0x89, 0x01, 0x09, 0x13, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0d, 0x02, 0x05, 0x03, 0x12, 0x04, 0x89, 0x01, 0x16, 0x17, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x0d, 0x02, 0x06, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x20, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, - 0x02, 0x06, 0x06, 0x12, 0x04, 0x8a, 0x01, 0x02, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, - 0x06, 0x01, 0x12, 0x04, 0x8a, 0x01, 0x13, 0x1b, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x06, - 0x03, 0x12, 0x04, 0x8a, 0x01, 0x1e, 0x1f, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x0d, 0x03, 0x00, 0x12, - 0x06, 0x8b, 0x01, 0x02, 0x92, 0x01, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x03, 0x00, 0x01, - 0x12, 0x04, 0x8b, 0x01, 0x0a, 0x1a, 0x0a, 0x10, 0x0a, 0x06, 0x04, 0x0d, 0x03, 0x00, 0x08, 0x00, - 0x12, 0x06, 0x8c, 0x01, 0x04, 0x8e, 0x01, 0x05, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0d, 0x03, 0x00, - 0x08, 0x00, 0x01, 0x12, 0x04, 0x8c, 0x01, 0x0a, 0x17, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0d, 0x03, - 0x00, 0x02, 0x00, 0x12, 0x04, 0x8d, 0x01, 0x06, 0x26, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0d, 0x03, - 0x00, 0x02, 0x00, 0x06, 0x12, 0x04, 0x8d, 0x01, 0x06, 0x17, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0d, - 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x04, 0x8d, 0x01, 0x18, 0x21, 0x0a, 0x0f, 0x0a, 0x07, 0x04, - 0x0d, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0x8d, 0x01, 0x24, 0x25, 0x0a, 0x10, 0x0a, 0x06, - 0x04, 0x0d, 0x03, 0x00, 0x03, 0x00, 0x12, 0x06, 0x8f, 0x01, 0x04, 0x91, 0x01, 0x05, 0x0a, 0x0f, - 0x0a, 0x07, 0x04, 0x0d, 0x03, 0x00, 0x03, 0x00, 0x01, 0x12, 0x04, 0x8f, 0x01, 0x0c, 0x1d, 0x0a, - 0x10, 0x0a, 0x08, 0x04, 0x0d, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0x90, 0x01, 0x06, - 0x1c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x0d, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, - 0x90, 0x01, 0x06, 0x0c, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x0d, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, - 0x01, 0x12, 0x04, 0x90, 0x01, 0x0d, 0x17, 0x0a, 0x11, 0x0a, 0x09, 0x04, 0x0d, 0x03, 0x00, 0x03, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x04, 0x90, 0x01, 0x1a, 0x1b, 0x0a, 0x82, 0x01, 0x0a, 0x04, 0x04, - 0x0d, 0x02, 0x07, 0x12, 0x04, 0x96, 0x01, 0x02, 0x21, 0x1a, 0x74, 0x20, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, - 0x73, 0x65, 0x65, 0x64, 0x73, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x20, 0x54, 0x68, 0x65, - 0x73, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x6b, 0x65, - 0x79, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x0a, 0x20, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x2e, 0x0a, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x07, 0x04, 0x12, 0x04, 0x96, 0x01, 0x02, 0x0a, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0d, 0x02, 0x07, 0x05, 0x12, 0x04, 0x96, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0d, 0x02, 0x07, 0x01, 0x12, 0x04, 0x96, 0x01, 0x12, 0x1c, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0d, 0x02, 0x07, 0x03, 0x12, 0x04, 0x96, 0x01, 0x1f, 0x20, 0x0a, 0x67, 0x0a, 0x02, 0x04, - 0x0e, 0x12, 0x06, 0x9a, 0x01, 0x00, 0x9e, 0x01, 0x01, 0x1a, 0x59, 0x20, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x69, 0x63, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x75, 0x72, 0x65, 0x2c, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2d, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x63, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x0a, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x0e, 0x01, 0x12, 0x04, 0x9a, 0x01, 0x08, - 0x16, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x00, 0x12, 0x04, 0x9b, 0x01, 0x02, 0x12, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x05, 0x12, 0x04, 0x9b, 0x01, 0x02, 0x08, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x00, 0x01, 0x12, 0x04, 0x9b, 0x01, 0x09, 0x0d, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0e, 0x02, 0x00, 0x03, 0x12, 0x04, 0x9b, 0x01, 0x10, 0x11, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x0e, 0x02, 0x01, 0x12, 0x04, 0x9c, 0x01, 0x02, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, - 0x02, 0x01, 0x05, 0x12, 0x04, 0x9c, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, - 0x01, 0x01, 0x12, 0x04, 0x9c, 0x01, 0x09, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x01, - 0x03, 0x12, 0x04, 0x9c, 0x01, 0x10, 0x11, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0e, 0x02, 0x02, 0x12, - 0x04, 0x9d, 0x01, 0x02, 0x1e, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x04, 0x12, 0x04, - 0x9d, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x05, 0x12, 0x04, 0x9d, - 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x01, 0x12, 0x04, 0x9d, 0x01, - 0x12, 0x19, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0e, 0x02, 0x02, 0x03, 0x12, 0x04, 0x9d, 0x01, 0x1c, - 0x1d, 0x0a, 0x0c, 0x0a, 0x02, 0x04, 0x0f, 0x12, 0x06, 0xa0, 0x01, 0x00, 0xb0, 0x01, 0x01, 0x0a, - 0x0b, 0x0a, 0x03, 0x04, 0x0f, 0x01, 0x12, 0x04, 0xa0, 0x01, 0x08, 0x0e, 0x0a, 0x0c, 0x0a, 0x04, - 0x04, 0x0f, 0x02, 0x00, 0x12, 0x04, 0xa1, 0x01, 0x02, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, - 0x02, 0x00, 0x05, 0x12, 0x04, 0xa1, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, - 0x00, 0x01, 0x12, 0x04, 0xa1, 0x01, 0x09, 0x0d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x00, - 0x03, 0x12, 0x04, 0xa1, 0x01, 0x10, 0x11, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x01, 0x12, - 0x04, 0xa2, 0x01, 0x02, 0x22, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x04, 0x12, 0x04, - 0xa2, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x05, 0x12, 0x04, 0xa2, - 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x01, 0x12, 0x04, 0xa2, 0x01, - 0x12, 0x1d, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x01, 0x03, 0x12, 0x04, 0xa2, 0x01, 0x20, - 0x21, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0f, 0x02, 0x02, 0x12, 0x04, 0xa3, 0x01, 0x02, 0x12, 0x0a, - 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x02, 0x05, 0x12, 0x04, 0xa3, 0x01, 0x02, 0x08, 0x0a, 0x0d, - 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x02, 0x01, 0x12, 0x04, 0xa3, 0x01, 0x09, 0x0d, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0f, 0x02, 0x02, 0x03, 0x12, 0x04, 0xa3, 0x01, 0x10, 0x11, 0x0a, 0x4f, 0x0a, 0x04, - 0x04, 0x0f, 0x02, 0x03, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x1b, 0x1a, 0x41, 0x20, 0x54, 0x61, 0x67, - 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x70, 0x61, - 0x72, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x20, 0x74, 0x6f, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2e, 0x0a, 0x0a, 0x0d, 0x0a, - 0x05, 0x04, 0x0f, 0x02, 0x03, 0x04, 0x12, 0x04, 0xa5, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, - 0x04, 0x0f, 0x02, 0x03, 0x05, 0x12, 0x04, 0xa5, 0x01, 0x0b, 0x11, 0x0a, 0x0d, 0x0a, 0x05, 0x04, - 0x0f, 0x02, 0x03, 0x01, 0x12, 0x04, 0xa5, 0x01, 0x12, 0x16, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, - 0x02, 0x03, 0x03, 0x12, 0x04, 0xa5, 0x01, 0x19, 0x1a, 0x0a, 0x4c, 0x0a, 0x04, 0x04, 0x0f, 0x02, - 0x04, 0x12, 0x04, 0xa8, 0x01, 0x02, 0x17, 0x1a, 0x3e, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x20, 0x52, - 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, - 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x77, 0x68, 0x6f, 0x6c, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x04, 0x05, - 0x12, 0x04, 0xa8, 0x01, 0x02, 0x08, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x04, 0x01, 0x12, - 0x04, 0xa8, 0x01, 0x09, 0x12, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x04, 0x03, 0x12, 0x04, - 0xa8, 0x01, 0x15, 0x16, 0x0a, 0x0e, 0x0a, 0x04, 0x04, 0x0f, 0x03, 0x00, 0x12, 0x06, 0xaa, 0x01, - 0x02, 0xad, 0x01, 0x03, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x03, 0x00, 0x01, 0x12, 0x04, 0xaa, - 0x01, 0x0a, 0x16, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0f, 0x03, 0x00, 0x02, 0x00, 0x12, 0x04, 0xab, - 0x01, 0x04, 0x15, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0f, 0x03, 0x00, 0x02, 0x00, 0x05, 0x12, 0x04, - 0xab, 0x01, 0x04, 0x0a, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0f, 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, - 0x04, 0xab, 0x01, 0x0b, 0x10, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0f, 0x03, 0x00, 0x02, 0x00, 0x03, - 0x12, 0x04, 0xab, 0x01, 0x13, 0x14, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x0f, 0x03, 0x00, 0x02, 0x01, - 0x12, 0x04, 0xac, 0x01, 0x04, 0x24, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0f, 0x03, 0x00, 0x02, 0x01, - 0x04, 0x12, 0x04, 0xac, 0x01, 0x04, 0x0c, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0f, 0x03, 0x00, 0x02, - 0x01, 0x05, 0x12, 0x04, 0xac, 0x01, 0x0d, 0x13, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0f, 0x03, 0x00, - 0x02, 0x01, 0x01, 0x12, 0x04, 0xac, 0x01, 0x14, 0x1f, 0x0a, 0x0f, 0x0a, 0x07, 0x04, 0x0f, 0x03, - 0x00, 0x02, 0x01, 0x03, 0x12, 0x04, 0xac, 0x01, 0x22, 0x23, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x0f, - 0x02, 0x05, 0x12, 0x04, 0xaf, 0x01, 0x02, 0x24, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x05, - 0x04, 0x12, 0x04, 0xaf, 0x01, 0x02, 0x0a, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x05, 0x06, - 0x12, 0x04, 0xaf, 0x01, 0x0b, 0x17, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x05, 0x01, 0x12, - 0x04, 0xaf, 0x01, 0x18, 0x1f, 0x0a, 0x0d, 0x0a, 0x05, 0x04, 0x0f, 0x02, 0x05, 0x03, 0x12, 0x04, - 0xaf, 0x01, 0x22, 0x23, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0x91, 0x0d, 0x0a, - 0x1e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, - 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x1a, 0x28, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x71, 0x75, 0x61, - 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1c, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, - 0x76, 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf5, - 0x07, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x65, - 0x65, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x75, 0x61, 0x72, - 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x65, 0x65, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x05, 0x73, 0x65, 0x65, 0x64, 0x73, 0x12, 0x3d, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, - 0x54, 0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x74, 0x65, 0x73, 0x74, - 0x73, 0x12, 0x40, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, - 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x09, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x4f, 0x0a, - 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x50, - 0x0a, 0x0a, 0x53, 0x65, 0x65, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x52, 0x0a, 0x0b, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x50, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x0c, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x0e, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5e, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x33, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x02, 0x50, 0x01, 0x4a, 0xeb, 0x03, 0x0a, 0x06, 0x12, - 0x04, 0x00, 0x00, 0x12, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, - 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, - 0x03, 0x04, 0x00, 0x32, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2d, 0x0a, - 0x09, 0x0a, 0x02, 0x03, 0x02, 0x12, 0x03, 0x06, 0x00, 0x26, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, - 0x03, 0x08, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x08, 0x00, 0x22, 0x0a, - 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x0a, 0x00, 0x12, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, - 0x00, 0x01, 0x12, 0x03, 0x0a, 0x08, 0x0f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, - 0x03, 0x0b, 0x02, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x0b, - 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x14, 0x19, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0b, 0x1c, 0x1d, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0c, 0x02, 0x20, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x0c, 0x02, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x01, 0x01, 0x12, 0x03, 0x0c, 0x15, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, - 0x12, 0x03, 0x0c, 0x1e, 0x1f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x0d, - 0x02, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x0d, 0x02, 0x13, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x0d, 0x14, 0x19, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x0d, 0x1c, 0x1d, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x0e, 0x02, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x03, 0x06, 0x12, 0x03, 0x0e, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, - 0x12, 0x03, 0x0e, 0x16, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, - 0x0e, 0x20, 0x21, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x04, 0x12, 0x03, 0x0f, 0x02, 0x26, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x06, 0x12, 0x03, 0x0f, 0x02, 0x17, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x04, 0x01, 0x12, 0x03, 0x0f, 0x18, 0x21, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x04, 0x03, 0x12, 0x03, 0x0f, 0x24, 0x25, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, - 0x02, 0x05, 0x12, 0x03, 0x10, 0x02, 0x2d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x06, - 0x12, 0x03, 0x10, 0x02, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x01, 0x12, 0x03, - 0x10, 0x1b, 0x28, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x05, 0x03, 0x12, 0x03, 0x10, 0x2b, - 0x2c, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x06, 0x12, 0x03, 0x11, 0x02, 0x29, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x06, 0x06, 0x12, 0x03, 0x11, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x06, 0x01, 0x12, 0x03, 0x11, 0x13, 0x24, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x06, 0x03, 0x12, 0x03, 0x11, 0x27, 0x28, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, - 0x0a, 0xee, 0x06, 0x0a, 0x22, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x61, - 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x22, 0x68, 0x0a, 0x0a, 0x50, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x44, 0x61, 0x67, 0x12, 0x2c, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, - 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, - 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x69, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, - 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x02, 0x50, 0x01, 0x4a, 0xde, 0x04, 0x0a, 0x06, 0x12, 0x04, 0x00, - 0x00, 0x15, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, - 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x04, 0x00, - 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x88, 0x01, 0x0a, - 0x02, 0x04, 0x00, 0x12, 0x04, 0x08, 0x00, 0x0b, 0x01, 0x1a, 0x7c, 0x20, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x41, 0x63, 0x79, 0x63, 0x6c, 0x69, 0x63, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x20, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x63, 0x79, 0x63, 0x6c, 0x69, 0x63, 0x20, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, - 0x64, 0x20, 0x74, 0x6f, 0x20, 0x76, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x0a, 0x20, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, - 0x08, 0x08, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x09, 0x02, 0x1a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x09, 0x02, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x09, 0x0b, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x09, 0x10, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x09, 0x18, 0x19, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, - 0x12, 0x03, 0x0a, 0x02, 0x1a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x04, 0x12, 0x03, - 0x0a, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x0a, 0x0b, - 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0a, 0x10, 0x15, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0a, 0x18, 0x19, 0x0a, 0x0a, 0x0a, - 0x02, 0x04, 0x01, 0x12, 0x04, 0x0d, 0x00, 0x10, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, - 0x12, 0x03, 0x0d, 0x08, 0x0c, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x0e, - 0x02, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x0e, 0x02, 0x08, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0e, 0x09, 0x0b, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0e, 0x0e, 0x0f, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x01, 0x02, 0x01, 0x12, 0x03, 0x0f, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x0f, 0x02, 0x06, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x0f, 0x07, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x0f, 0x13, 0x14, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x12, 0x00, 0x15, 0x01, 0x0a, - 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x12, 0x08, 0x0c, 0x0a, 0x0b, 0x0a, 0x04, 0x04, - 0x02, 0x02, 0x00, 0x12, 0x03, 0x13, 0x02, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, - 0x05, 0x12, 0x03, 0x13, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, - 0x03, 0x13, 0x09, 0x0b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x13, - 0x0e, 0x0f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x14, 0x02, 0x12, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, 0x12, 0x03, 0x14, 0x02, 0x08, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x14, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x14, 0x10, 0x11, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, 0x0a, 0xbf, 0x03, 0x0a, 0x1c, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x67, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x30, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x42, 0x02, - 0x50, 0x01, 0x4a, 0xf6, 0x01, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x0c, 0x01, 0x0a, 0x08, 0x0a, - 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, - 0x19, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x29, 0x0a, 0x08, 0x0a, 0x01, - 0x08, 0x12, 0x03, 0x06, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x06, 0x00, - 0x22, 0x0a, 0x3e, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x09, 0x00, 0x0c, 0x01, 0x1a, 0x32, 0x20, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x73, - 0x20, 0x61, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, - 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x09, 0x08, 0x0d, 0x0a, 0x0b, 0x0a, - 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0a, 0x02, 0x15, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x06, 0x12, 0x03, 0x0a, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x01, 0x12, 0x03, 0x0a, 0x0b, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, - 0x03, 0x0a, 0x13, 0x14, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0b, 0x02, - 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x0b, 0x02, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x0b, 0x0b, 0x0e, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x0b, 0x11, 0x12, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, 0x0a, 0xc8, 0x23, 0x0a, 0x1c, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x05, 0x0a, 0x05, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x07, - 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x5f, 0x70, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x4e, 0x6f, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x49, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x50, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x9e, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x65, 0x73, 0x65, - 0x6e, 0x74, 0x49, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x46, 0x0a, 0x04, 0x72, 0x6f, - 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, - 0x77, 0x73, 0x1a, 0xc2, 0x02, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x6f, - 0x77, 0x12, 0x5b, 0x0a, 0x1e, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x5f, - 0x73, 0x71, 0x6c, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x75, 0x61, 0x72, - 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x77, - 0x48, 0x00, 0x52, 0x1a, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x53, 0x71, 0x6c, - 0x41, 0x6e, 0x64, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, - 0x0a, 0x16, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x6f, 0x77, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, - 0x49, 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x80, 0x01, - 0x0a, 0x32, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x62, 0x75, 0x74, 0x5f, 0x6e, 0x6f, 0x74, - 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, - 0x5f, 0x73, 0x71, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x75, 0x61, - 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, - 0x77, 0x48, 0x00, 0x52, 0x2b, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x44, 0x65, - 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x75, 0x74, 0x4e, 0x6f, 0x74, 0x52, - 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x53, 0x71, 0x6c, - 0x42, 0x05, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x1a, 0x3f, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x50, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x29, 0x0a, - 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x71, 0x75, - 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x69, 0x74, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x77, 0x54, 0x65, 0x73, 0x74, 0x52, 0x05, - 0x74, 0x65, 0x73, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x75, 0x61, - 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, - 0x77, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa1, 0x02, 0x0a, 0x07, 0x52, 0x6f, - 0x77, 0x54, 0x65, 0x73, 0x74, 0x12, 0x5b, 0x0a, 0x18, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x77, 0x54, 0x65, - 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, 0x70, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x72, - 0x65, 0x64, 0x12, 0x54, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6e, - 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x77, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x48, 0x00, 0x52, 0x12, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x64, - 0x49, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x5b, 0x0a, 0x18, 0x6e, 0x6f, 0x74, 0x5f, - 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x65, - 0x72, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x71, 0x75, 0x61, - 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, - 0x77, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, - 0x6e, 0x6f, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x74, 0x49, 0x6e, 0x66, - 0x65, 0x72, 0x72, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x65, 0x73, 0x74, 0x22, 0x63, 0x0a, - 0x0e, 0x52, 0x6f, 0x77, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x65, 0x78, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x74, 0x65, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x65, - 0x73, 0x74, 0x22, 0xac, 0x03, 0x0a, 0x0e, 0x52, 0x6f, 0x77, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, - 0x74, 0x12, 0x45, 0x0a, 0x1e, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x1b, 0x70, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x80, 0x01, 0x0a, 0x20, 0x70, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x77, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x57, 0x69, 0x74, - 0x68, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x1d, 0x70, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x57, 0x69, 0x74, 0x68, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x08, 0x69, - 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x08, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, - 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x50, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x74, 0x1a, 0x4c, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x57, - 0x69, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, - 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x02, 0x50, 0x01, 0x4a, 0xee, 0x15, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x4d, 0x01, - 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, - 0x03, 0x02, 0x00, 0x19, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, - 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, 0x03, 0x05, 0x00, 0x2d, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, - 0x03, 0x07, 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x07, 0x00, 0x22, 0x0a, - 0x70, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x0a, 0x00, 0x23, 0x01, 0x1a, 0x64, 0x20, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x69, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x76, 0x69, - 0x73, 0x75, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x2c, - 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x20, 0x74, 0x65, 0x73, 0x74, 0x73, 0x2e, - 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x08, 0x0d, 0x0a, 0x93, 0x01, - 0x0a, 0x04, 0x04, 0x00, 0x03, 0x00, 0x12, 0x04, 0x0d, 0x02, 0x17, 0x03, 0x1a, 0x84, 0x01, 0x20, - 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, - 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x69, 0x73, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, - 0x53, 0x51, 0x4c, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x59, 0x41, 0x4d, 0x4c, 0x20, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x20, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x59, 0x41, 0x4d, - 0x4c, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x03, 0x00, 0x01, 0x12, 0x03, 0x0d, 0x0a, - 0x19, 0x0a, 0x0e, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x12, 0x04, 0x0e, 0x04, 0x14, - 0x05, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x12, 0x03, 0x0e, 0x0c, - 0x16, 0x0a, 0x10, 0x0a, 0x08, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x08, 0x00, 0x12, 0x04, 0x0f, - 0x06, 0x13, 0x07, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x08, 0x00, 0x01, - 0x12, 0x03, 0x0f, 0x0c, 0x0f, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, - 0x00, 0x12, 0x03, 0x10, 0x08, 0x2f, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x02, 0x00, 0x06, 0x12, 0x03, 0x10, 0x08, 0x0b, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x10, 0x0c, 0x2a, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, - 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x10, 0x2d, 0x2e, 0x0a, 0x0f, 0x0a, 0x08, - 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x01, 0x12, 0x03, 0x11, 0x08, 0x27, 0x0a, 0x10, 0x0a, - 0x09, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x11, 0x08, 0x0b, 0x0a, - 0x10, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x11, 0x0c, - 0x22, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x11, 0x25, 0x26, 0x0a, 0x0f, 0x0a, 0x08, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x02, 0x12, - 0x03, 0x12, 0x08, 0x43, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x02, - 0x06, 0x12, 0x03, 0x12, 0x08, 0x0b, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x02, 0x02, 0x01, 0x12, 0x03, 0x12, 0x0c, 0x3e, 0x0a, 0x10, 0x0a, 0x09, 0x04, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x12, 0x41, 0x42, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, - 0x03, 0x00, 0x02, 0x00, 0x12, 0x03, 0x16, 0x04, 0x21, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, - 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x16, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, - 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x16, 0x0d, 0x17, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, - 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x16, 0x18, 0x1c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x16, 0x1f, 0x20, 0x0a, 0x8a, 0x01, 0x0a, 0x04, 0x04, 0x00, - 0x03, 0x01, 0x12, 0x04, 0x1b, 0x02, 0x1d, 0x03, 0x1a, 0x7c, 0x20, 0x4e, 0x6f, 0x74, 0x50, 0x72, - 0x65, 0x73, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x20, 0x69, 0x73, - 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, - 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x73, 0x20, 0x53, 0x51, 0x4c, 0x20, - 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x59, - 0x41, 0x4d, 0x4c, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x20, 0x41, 0x6e, 0x64, 0x20, 0x73, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x0a, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x65, - 0x72, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x03, 0x01, 0x01, 0x12, - 0x03, 0x1b, 0x0a, 0x1c, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x00, 0x03, 0x01, 0x02, 0x00, 0x12, 0x03, - 0x1c, 0x04, 0x1a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x00, 0x04, 0x12, 0x03, - 0x1c, 0x04, 0x0c, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x00, 0x06, 0x12, 0x03, - 0x1c, 0x0d, 0x10, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, - 0x1c, 0x11, 0x15, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x00, 0x03, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, - 0x1c, 0x18, 0x19, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, 0x08, 0x00, 0x12, 0x04, 0x1f, 0x02, 0x22, - 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, 0x01, 0x12, 0x03, 0x1f, 0x08, 0x12, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x20, 0x04, 0x20, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x20, 0x04, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x20, 0x14, 0x1b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, - 0x03, 0x12, 0x03, 0x20, 0x1e, 0x1f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, - 0x21, 0x04, 0x27, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x06, 0x12, 0x03, 0x21, 0x04, - 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x21, 0x17, 0x22, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x21, 0x25, 0x26, 0x0a, 0x28, 0x0a, - 0x02, 0x04, 0x01, 0x12, 0x04, 0x26, 0x00, 0x2a, 0x01, 0x1a, 0x1c, 0x20, 0x52, 0x6f, 0x77, 0x20, - 0x69, 0x73, 0x20, 0x61, 0x20, 0x72, 0x6f, 0x77, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x01, 0x01, 0x12, 0x03, - 0x26, 0x08, 0x0b, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, 0x12, 0x03, 0x27, 0x02, 0x13, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x27, 0x02, 0x08, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x27, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x27, 0x11, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, - 0x02, 0x01, 0x12, 0x03, 0x28, 0x02, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x04, - 0x12, 0x03, 0x28, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x06, 0x12, 0x03, - 0x28, 0x0b, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x01, 0x12, 0x03, 0x28, 0x13, - 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x01, 0x03, 0x12, 0x03, 0x28, 0x1b, 0x1c, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x02, 0x12, 0x03, 0x29, 0x02, 0x21, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x01, 0x02, 0x02, 0x06, 0x12, 0x03, 0x29, 0x02, 0x10, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, - 0x02, 0x02, 0x01, 0x12, 0x03, 0x29, 0x11, 0x1c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x02, - 0x03, 0x12, 0x03, 0x29, 0x1f, 0x20, 0x0a, 0xbd, 0x01, 0x0a, 0x02, 0x04, 0x02, 0x12, 0x04, 0x2e, - 0x00, 0x34, 0x01, 0x1a, 0xb0, 0x01, 0x20, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x65, 0x73, 0x74, - 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x69, 0x73, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x20, 0x61, - 0x20, 0x72, 0x6f, 0x77, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, - 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x20, 0x62, - 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, - 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, - 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x59, 0x41, 0x4d, 0x4c, 0x20, 0x64, - 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x69, - 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, - 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x53, 0x51, 0x4c, 0x20, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, 0x12, 0x03, 0x2e, - 0x08, 0x0f, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x02, 0x08, 0x00, 0x12, 0x04, 0x2f, 0x02, 0x33, 0x03, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x08, 0x00, 0x01, 0x12, 0x03, 0x2f, 0x08, 0x0c, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x30, 0x04, 0x30, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x02, 0x02, 0x00, 0x06, 0x12, 0x03, 0x30, 0x04, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x30, 0x13, 0x2b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x30, 0x2e, 0x2f, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x31, - 0x04, 0x2c, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x06, 0x12, 0x03, 0x31, 0x04, 0x12, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, 0x31, 0x13, 0x27, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x31, 0x2a, 0x2b, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x02, 0x02, 0x02, 0x12, 0x03, 0x32, 0x04, 0x30, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, - 0x02, 0x06, 0x12, 0x03, 0x32, 0x04, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, - 0x12, 0x03, 0x32, 0x13, 0x2b, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x02, 0x03, 0x12, 0x03, - 0x32, 0x2e, 0x2f, 0x0a, 0x9c, 0x02, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x39, 0x00, 0x3c, 0x01, - 0x1a, 0x8f, 0x02, 0x20, 0x52, 0x6f, 0x77, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x20, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x73, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, - 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x27, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x27, 0x20, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, - 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x0a, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, - 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x64, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x73, 0x65, 0x20, 0x6f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x79, 0x70, - 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x20, 0x74, - 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, - 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x39, 0x08, 0x16, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x3a, 0x02, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x00, 0x05, 0x12, 0x03, 0x3a, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x00, 0x01, 0x12, 0x03, 0x3a, 0x09, 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, - 0x12, 0x03, 0x3a, 0x10, 0x11, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x01, 0x12, 0x03, 0x3b, - 0x02, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x06, 0x12, 0x03, 0x3b, 0x02, 0x0c, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, 0x12, 0x03, 0x3b, 0x0d, 0x18, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, 0x3b, 0x1b, 0x1c, 0x0a, 0xc2, 0x01, 0x0a, - 0x02, 0x04, 0x04, 0x12, 0x04, 0x40, 0x00, 0x4d, 0x01, 0x1a, 0xb5, 0x01, 0x20, 0x52, 0x6f, 0x77, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x61, - 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, - 0x61, 0x20, 0x72, 0x6f, 0x77, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x2e, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x20, - 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x69, - 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, - 0x0a, 0x20, 0x59, 0x41, 0x4d, 0x4c, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x2f, 0x6f, 0x72, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6e, - 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x53, 0x51, 0x4c, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x40, 0x08, 0x16, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x04, 0x03, 0x00, 0x12, 0x04, 0x41, 0x02, 0x44, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x04, 0x03, 0x00, 0x01, 0x12, 0x03, 0x41, 0x0a, 0x1e, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x04, 0x03, - 0x00, 0x02, 0x00, 0x12, 0x03, 0x42, 0x04, 0x17, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x04, 0x03, 0x00, - 0x02, 0x00, 0x05, 0x12, 0x03, 0x42, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x04, 0x03, 0x00, - 0x02, 0x00, 0x01, 0x12, 0x03, 0x42, 0x0b, 0x12, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x04, 0x03, 0x00, - 0x02, 0x00, 0x03, 0x12, 0x03, 0x42, 0x15, 0x16, 0x0a, 0x0d, 0x0a, 0x06, 0x04, 0x04, 0x03, 0x00, - 0x02, 0x01, 0x12, 0x03, 0x43, 0x04, 0x18, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x04, 0x03, 0x00, 0x02, - 0x01, 0x05, 0x12, 0x03, 0x43, 0x04, 0x0a, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x04, 0x03, 0x00, 0x02, - 0x01, 0x01, 0x12, 0x03, 0x43, 0x0b, 0x13, 0x0a, 0x0e, 0x0a, 0x07, 0x04, 0x04, 0x03, 0x00, 0x02, - 0x01, 0x03, 0x12, 0x03, 0x43, 0x16, 0x17, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x04, 0x08, 0x00, 0x12, - 0x04, 0x46, 0x02, 0x4c, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x08, 0x00, 0x01, 0x12, 0x03, - 0x46, 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x00, 0x12, 0x03, 0x47, 0x04, 0x17, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x05, 0x12, 0x03, 0x47, 0x04, 0x0a, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x47, 0x0b, 0x12, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x47, 0x15, 0x16, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, - 0x02, 0x01, 0x12, 0x03, 0x48, 0x04, 0x2e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x05, - 0x12, 0x03, 0x48, 0x04, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x01, 0x12, 0x03, - 0x48, 0x0b, 0x29, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x01, 0x03, 0x12, 0x03, 0x48, 0x2c, - 0x2d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x02, 0x12, 0x03, 0x49, 0x04, 0x3e, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x06, 0x12, 0x03, 0x49, 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x49, 0x19, 0x39, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, - 0x02, 0x02, 0x03, 0x12, 0x03, 0x49, 0x3c, 0x3d, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x03, - 0x12, 0x03, 0x4a, 0x04, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x05, 0x12, 0x03, - 0x4a, 0x04, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x01, 0x12, 0x03, 0x4a, 0x0b, - 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x03, 0x03, 0x12, 0x03, 0x4a, 0x16, 0x17, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x04, 0x12, 0x03, 0x4b, 0x04, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x04, 0x02, 0x04, 0x06, 0x12, 0x03, 0x4b, 0x04, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, - 0x02, 0x04, 0x01, 0x12, 0x03, 0x4b, 0x1a, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x04, - 0x03, 0x12, 0x03, 0x4b, 0x28, 0x29, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0x84, - 0x14, 0x0a, 0x22, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x01, 0x0a, 0x0a, 0x54, 0x65, - 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x06, 0x70, - 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x71, 0x75, - 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x61, 0x73, 0x73, 0x65, 0x64, 0x48, 0x00, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, - 0x32, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x48, 0x00, 0x52, 0x06, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x22, 0x36, 0x0a, 0x0d, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x66, - 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x22, 0x61, 0x0a, 0x1a, 0x49, 0x6e, - 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x66, 0x65, - 0x72, 0x72, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0d, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, - 0x1c, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbc, 0x02, - 0x0a, 0x06, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x03, 0x72, 0x61, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x48, 0x00, 0x52, - 0x03, 0x72, 0x61, 0x6e, 0x12, 0x51, 0x0a, 0x13, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, - 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x46, 0x72, - 0x6f, 0x6d, 0x54, 0x65, 0x73, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x69, 0x6e, 0x66, 0x65, 0x72, - 0x72, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, - 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x12, 0x77, 0x0a, 0x20, 0x69, 0x6e, 0x66, - 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x74, 0x65, - 0x73, 0x74, 0x73, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, - 0x68, 0x61, 0x69, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x1d, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x54, 0x68, 0x72, - 0x6f, 0x75, 0x67, 0x68, 0x54, 0x65, 0x73, 0x74, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x96, 0x02, 0x0a, - 0x06, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x03, 0x72, 0x61, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, 0x75, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x03, 0x72, 0x61, 0x6e, 0x12, - 0x51, 0x0a, 0x13, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, - 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x48, 0x00, 0x52, - 0x11, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x54, 0x65, 0x73, - 0x74, 0x73, 0x12, 0x77, 0x0a, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x74, - 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x57, 0x69, 0x74, - 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1d, 0x69, 0x6e, - 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x54, 0x65, 0x73, - 0x74, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x54, 0x0a, 0x10, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x52, - 0x75, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x02, 0x50, 0x01, 0x4a, - 0xfb, 0x0a, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x32, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, - 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x09, - 0x0a, 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x25, 0x0a, 0x09, 0x0a, 0x02, 0x03, 0x01, 0x12, - 0x03, 0x05, 0x00, 0x2d, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x07, 0x00, 0x22, 0x0a, 0x09, - 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x07, 0x00, 0x22, 0x0a, 0x51, 0x0a, 0x02, 0x04, 0x00, 0x12, - 0x04, 0x0a, 0x00, 0x12, 0x01, 0x1a, 0x45, 0x20, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x6f, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, - 0x6e, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, - 0x04, 0x00, 0x01, 0x12, 0x03, 0x0a, 0x08, 0x12, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, - 0x12, 0x03, 0x0b, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, - 0x0b, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x09, - 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0b, 0x15, 0x16, 0x0a, - 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, 0x03, 0x0c, 0x02, 0x13, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x0c, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, - 0x02, 0x01, 0x01, 0x12, 0x03, 0x0c, 0x09, 0x0e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, - 0x03, 0x12, 0x03, 0x0c, 0x11, 0x12, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x00, 0x08, 0x00, 0x12, 0x04, - 0x0e, 0x02, 0x11, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x08, 0x00, 0x01, 0x12, 0x03, 0x0e, - 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x0f, 0x04, 0x16, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x06, 0x12, 0x03, 0x0f, 0x04, 0x0a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x0f, 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x02, 0x03, 0x12, 0x03, 0x0f, 0x14, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, - 0x03, 0x12, 0x03, 0x10, 0x04, 0x16, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, - 0x03, 0x10, 0x04, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x10, - 0x0b, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x10, 0x14, 0x15, - 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x01, 0x12, 0x04, 0x14, 0x00, 0x16, 0x01, 0x0a, 0x0a, 0x0a, 0x03, - 0x04, 0x01, 0x01, 0x12, 0x03, 0x14, 0x08, 0x15, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x01, 0x02, 0x00, - 0x12, 0x03, 0x15, 0x02, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x04, 0x12, 0x03, - 0x15, 0x02, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x05, 0x12, 0x03, 0x15, 0x0b, - 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x01, 0x12, 0x03, 0x15, 0x12, 0x20, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x01, 0x02, 0x00, 0x03, 0x12, 0x03, 0x15, 0x23, 0x24, 0x0a, 0x0a, 0x0a, - 0x02, 0x04, 0x02, 0x12, 0x04, 0x18, 0x00, 0x1b, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x02, 0x01, - 0x12, 0x03, 0x18, 0x08, 0x22, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, 0x02, 0x00, 0x12, 0x03, 0x19, - 0x02, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x04, 0x12, 0x03, 0x19, 0x02, 0x0a, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x05, 0x12, 0x03, 0x19, 0x0b, 0x11, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x02, 0x02, 0x00, 0x01, 0x12, 0x03, 0x19, 0x12, 0x20, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x02, 0x02, 0x00, 0x03, 0x12, 0x03, 0x19, 0x23, 0x24, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x02, - 0x02, 0x01, 0x12, 0x03, 0x1a, 0x02, 0x17, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x05, - 0x12, 0x03, 0x1a, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x01, 0x12, 0x03, - 0x1a, 0x09, 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x02, 0x02, 0x01, 0x03, 0x12, 0x03, 0x1a, 0x15, - 0x16, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x03, 0x12, 0x04, 0x1d, 0x00, 0x26, 0x01, 0x0a, 0x0a, 0x0a, - 0x03, 0x04, 0x03, 0x01, 0x12, 0x03, 0x1d, 0x08, 0x0e, 0x0a, 0x0c, 0x0a, 0x04, 0x04, 0x03, 0x08, - 0x00, 0x12, 0x04, 0x1e, 0x02, 0x25, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x08, 0x00, 0x01, - 0x12, 0x03, 0x1e, 0x08, 0x0e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x00, 0x12, 0x03, 0x1f, - 0x04, 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x06, 0x12, 0x03, 0x1f, 0x04, 0x19, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x01, 0x12, 0x03, 0x1f, 0x1a, 0x1d, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x03, 0x02, 0x00, 0x03, 0x12, 0x03, 0x1f, 0x20, 0x21, 0x0a, 0x0b, 0x0a, 0x04, - 0x04, 0x03, 0x02, 0x01, 0x12, 0x03, 0x20, 0x04, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x01, 0x06, 0x12, 0x03, 0x20, 0x04, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x01, - 0x12, 0x03, 0x20, 0x12, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x01, 0x03, 0x12, 0x03, - 0x20, 0x28, 0x29, 0x0a, 0x57, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x02, 0x12, 0x03, 0x22, 0x04, 0x23, - 0x1a, 0x4a, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, - 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x6f, - 0x67, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, - 0x20, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x68, 0x6f, 0x77, 0x20, 0x69, 0x74, - 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x64, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, - 0x04, 0x03, 0x02, 0x02, 0x05, 0x12, 0x03, 0x22, 0x04, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, - 0x02, 0x02, 0x01, 0x12, 0x03, 0x22, 0x0b, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x02, - 0x03, 0x12, 0x03, 0x22, 0x21, 0x22, 0x0a, 0x73, 0x0a, 0x04, 0x04, 0x03, 0x02, 0x03, 0x12, 0x03, - 0x24, 0x04, 0x44, 0x1a, 0x66, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x74, - 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, - 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x6d, 0x70, - 0x6c, 0x69, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x03, 0x02, 0x03, 0x06, 0x12, 0x03, 0x24, 0x04, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, - 0x03, 0x01, 0x12, 0x03, 0x24, 0x1f, 0x3f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x03, 0x02, 0x03, 0x03, - 0x12, 0x03, 0x24, 0x42, 0x43, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x04, 0x12, 0x04, 0x28, 0x00, 0x2e, - 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x04, 0x01, 0x12, 0x03, 0x28, 0x08, 0x0e, 0x0a, 0x0c, 0x0a, - 0x04, 0x04, 0x04, 0x08, 0x00, 0x12, 0x04, 0x29, 0x02, 0x2d, 0x03, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x04, 0x08, 0x00, 0x01, 0x12, 0x03, 0x29, 0x08, 0x0e, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, - 0x00, 0x12, 0x03, 0x2a, 0x04, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x06, 0x12, - 0x03, 0x2a, 0x04, 0x14, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x01, 0x12, 0x03, 0x2a, - 0x15, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x00, 0x03, 0x12, 0x03, 0x2a, 0x1b, 0x1c, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x01, 0x12, 0x03, 0x2b, 0x04, 0x2a, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x04, 0x02, 0x01, 0x06, 0x12, 0x03, 0x2b, 0x04, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x04, 0x02, 0x01, 0x01, 0x12, 0x03, 0x2b, 0x12, 0x25, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, - 0x01, 0x03, 0x12, 0x03, 0x2b, 0x28, 0x29, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x04, 0x02, 0x02, 0x12, - 0x03, 0x2c, 0x04, 0x44, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x06, 0x12, 0x03, 0x2c, - 0x04, 0x1e, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x01, 0x12, 0x03, 0x2c, 0x1f, 0x3f, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x04, 0x02, 0x02, 0x03, 0x12, 0x03, 0x2c, 0x42, 0x43, 0x0a, 0x0a, - 0x0a, 0x02, 0x04, 0x05, 0x12, 0x04, 0x30, 0x00, 0x32, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x05, - 0x01, 0x12, 0x03, 0x30, 0x08, 0x18, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x05, 0x02, 0x00, 0x12, 0x03, - 0x31, 0x02, 0x1f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x06, 0x12, 0x03, 0x31, 0x02, - 0x0d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x01, 0x12, 0x03, 0x31, 0x0e, 0x1a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x05, 0x02, 0x00, 0x03, 0x12, 0x03, 0x31, 0x1d, 0x1e, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x0a, 0xe9, 0x03, 0x0a, 0x23, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, - 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x1a, - 0x22, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2f, 0x76, - 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x45, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x02, 0x50, 0x01, 0x4a, 0xb8, - 0x02, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x0c, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, - 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x19, 0x0a, 0x09, 0x0a, - 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x2c, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x06, - 0x00, 0x22, 0x0a, 0x09, 0x0a, 0x02, 0x08, 0x0a, 0x12, 0x03, 0x06, 0x00, 0x22, 0x0a, 0xa8, 0x01, - 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, 0x0a, 0x00, 0x0c, 0x01, 0x1a, 0x9b, 0x01, 0x20, 0x57, 0x61, - 0x73, 0x6d, 0x52, 0x75, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x72, 0x79, - 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x6f, - 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x69, - 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, 0x52, 0x75, 0x73, 0x74, 0x20, 0x72, 0x61, 0x74, 0x68, 0x65, - 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x54, 0x79, 0x70, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x2e, 0x0a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x67, 0x6f, 0x61, 0x6c, 0x20, - 0x69, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, - 0x72, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x20, 0x6f, 0x76, 0x65, - 0x72, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, - 0x03, 0x0a, 0x08, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x0b, 0x02, - 0x22, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x04, 0x12, 0x03, 0x0b, 0x02, 0x0a, 0x0a, - 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x00, 0x06, 0x12, 0x03, 0x0b, 0x0b, 0x15, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x0b, 0x16, 0x1d, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x00, 0x03, 0x12, 0x03, 0x0b, 0x20, 0x21, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, 0x0a, 0xb3, 0x04, 0x0a, 0x22, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x6e, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x71, 0x75, 0x61, 0x72, 0x79, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x76, 0x31, 0x2a, 0x54, 0x0a, 0x0a, 0x54, 0x65, - 0x73, 0x74, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x45, 0x53, 0x54, - 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x52, 0x55, - 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x45, - 0x53, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x10, 0x02, - 0x42, 0x02, 0x50, 0x01, 0x4a, 0x98, 0x03, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x0c, 0x01, 0x0a, - 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, - 0x02, 0x00, 0x19, 0x0a, 0x08, 0x0a, 0x01, 0x08, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x09, 0x0a, - 0x02, 0x08, 0x0a, 0x12, 0x03, 0x04, 0x00, 0x22, 0x0a, 0x0a, 0x0a, 0x02, 0x05, 0x00, 0x12, 0x04, - 0x06, 0x00, 0x0c, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x05, 0x00, 0x01, 0x12, 0x03, 0x06, 0x05, 0x0f, - 0x0a, 0x0b, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x00, 0x12, 0x03, 0x07, 0x02, 0x1e, 0x0a, 0x0c, 0x0a, - 0x05, 0x05, 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x07, 0x02, 0x19, 0x0a, 0x0c, 0x0a, 0x05, 0x05, - 0x00, 0x02, 0x00, 0x02, 0x12, 0x03, 0x07, 0x1c, 0x1d, 0x0a, 0x59, 0x0a, 0x04, 0x05, 0x00, 0x02, - 0x01, 0x12, 0x03, 0x09, 0x02, 0x16, 0x1a, 0x4c, 0x20, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x52, 0x55, - 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x4c, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x72, 0x75, - 0x6e, 0x6e, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x75, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x73, - 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x75, 0x69, - 0x74, 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x09, - 0x02, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x01, 0x02, 0x12, 0x03, 0x09, 0x14, 0x15, - 0x0a, 0x90, 0x01, 0x0a, 0x04, 0x05, 0x00, 0x02, 0x02, 0x12, 0x03, 0x0b, 0x02, 0x17, 0x1a, 0x82, - 0x01, 0x20, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x4e, 0x4f, - 0x4e, 0x45, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x73, 0x6b, 0x69, - 0x70, 0x20, 0x74, 0x65, 0x73, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, - 0x65, 0x73, 0x74, 0x20, 0x73, 0x75, 0x69, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, - 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x66, - 0x72, 0x6f, 0x6d, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x73, 0x20, - 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x73, 0x75, 0x69, 0x74, - 0x65, 0x2e, 0x0a, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x01, 0x12, 0x03, 0x0b, 0x02, - 0x12, 0x0a, 0x0c, 0x0a, 0x05, 0x05, 0x00, 0x02, 0x02, 0x02, 0x12, 0x03, 0x0b, 0x15, 0x16, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -]; -include!("quary.service.v1.serde.rs"); -// @@protoc_insertion_point(module) diff --git a/proto/gen/rust/src/quary.service.v1.serde.rs b/proto/gen/rust/src/quary.service.v1.serde.rs deleted file mode 100644 index 37474a65..00000000 --- a/proto/gen/rust/src/quary.service.v1.serde.rs +++ /dev/null @@ -1,9562 +0,0 @@ -// @generated -impl serde::Serialize for ColumnDescription { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - if !self.tests.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ColumnDescription", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - if !self.tests.is_empty() { - struct_ser.serialize_field("tests", &self.tests)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ColumnDescription { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "description", - "tests", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Description, - Tests, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "description" => Ok(GeneratedField::Description), - "tests" => Ok(GeneratedField::Tests), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ColumnDescription; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ColumnDescription") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut description__ = None; - let mut tests__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - GeneratedField::Tests => { - if tests__.is_some() { - return Err(serde::de::Error::duplicate_field("tests")); - } - tests__ = Some(map_.next_value()?); - } - } - } - Ok(ColumnDescription { - name: name__.unwrap_or_default(), - description: description__, - tests: tests__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ColumnDescription", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ColumnTest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.r#type.is_empty() { - len += 1; - } - if !self.info.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ColumnTest", len)?; - if !self.r#type.is_empty() { - struct_ser.serialize_field("type", &self.r#type)?; - } - if !self.info.is_empty() { - struct_ser.serialize_field("info", &self.info)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ColumnTest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "type", - "info", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Type, - Info, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "type" => Ok(GeneratedField::Type), - "info" => Ok(GeneratedField::Info), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ColumnTest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ColumnTest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut r#type__ = None; - let mut info__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Type => { - if r#type__.is_some() { - return Err(serde::de::Error::duplicate_field("type")); - } - r#type__ = Some(map_.next_value()?); - } - GeneratedField::Info => { - if info__.is_some() { - return Err(serde::de::Error::duplicate_field("info")); - } - info__ = Some( - map_.next_value::>()? - ); - } - } - } - Ok(ColumnTest { - r#type: r#type__.unwrap_or_default(), - info: info__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ColumnTest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ConnectionConfig { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.vars.is_empty() { - len += 1; - } - if self.config.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ConnectionConfig", len)?; - if !self.vars.is_empty() { - struct_ser.serialize_field("vars", &self.vars)?; - } - if let Some(v) = self.config.as_ref() { - match v { - connection_config::Config::Duckdb(v) => { - struct_ser.serialize_field("duckdb", v)?; - } - connection_config::Config::DuckdbInMemory(v) => { - struct_ser.serialize_field("duckdbInMemory", v)?; - } - connection_config::Config::Sqlite(v) => { - struct_ser.serialize_field("sqlite", v)?; - } - connection_config::Config::SqliteInMemory(v) => { - struct_ser.serialize_field("sqliteInMemory", v)?; - } - connection_config::Config::BigQuery(v) => { - struct_ser.serialize_field("bigQuery", v)?; - } - connection_config::Config::Snowflake(v) => { - struct_ser.serialize_field("snowflake", v)?; - } - connection_config::Config::Postgres(v) => { - struct_ser.serialize_field("postgres", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ConnectionConfig { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "vars", - "duckdb", - "duckdb_in_memory", - "duckdbInMemory", - "sqlite", - "sqlite_in_memory", - "sqliteInMemory", - "big_query", - "bigQuery", - "snowflake", - "postgres", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Vars, - Duckdb, - DuckdbInMemory, - Sqlite, - SqliteInMemory, - BigQuery, - Snowflake, - Postgres, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "vars" => Ok(GeneratedField::Vars), - "duckdb" => Ok(GeneratedField::Duckdb), - "duckdbInMemory" | "duckdb_in_memory" => Ok(GeneratedField::DuckdbInMemory), - "sqlite" => Ok(GeneratedField::Sqlite), - "sqliteInMemory" | "sqlite_in_memory" => Ok(GeneratedField::SqliteInMemory), - "bigQuery" | "big_query" => Ok(GeneratedField::BigQuery), - "snowflake" => Ok(GeneratedField::Snowflake), - "postgres" => Ok(GeneratedField::Postgres), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ConnectionConfig; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ConnectionConfig") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut vars__ = None; - let mut config__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Vars => { - if vars__.is_some() { - return Err(serde::de::Error::duplicate_field("vars")); - } - vars__ = Some(map_.next_value()?); - } - GeneratedField::Duckdb => { - if config__.is_some() { - return Err(serde::de::Error::duplicate_field("duckdb")); - } - config__ = map_.next_value::<::std::option::Option<_>>()?.map(connection_config::Config::Duckdb) -; - } - GeneratedField::DuckdbInMemory => { - if config__.is_some() { - return Err(serde::de::Error::duplicate_field("duckdbInMemory")); - } - config__ = map_.next_value::<::std::option::Option<_>>()?.map(connection_config::Config::DuckdbInMemory) -; - } - GeneratedField::Sqlite => { - if config__.is_some() { - return Err(serde::de::Error::duplicate_field("sqlite")); - } - config__ = map_.next_value::<::std::option::Option<_>>()?.map(connection_config::Config::Sqlite) -; - } - GeneratedField::SqliteInMemory => { - if config__.is_some() { - return Err(serde::de::Error::duplicate_field("sqliteInMemory")); - } - config__ = map_.next_value::<::std::option::Option<_>>()?.map(connection_config::Config::SqliteInMemory) -; - } - GeneratedField::BigQuery => { - if config__.is_some() { - return Err(serde::de::Error::duplicate_field("bigQuery")); - } - config__ = map_.next_value::<::std::option::Option<_>>()?.map(connection_config::Config::BigQuery) -; - } - GeneratedField::Snowflake => { - if config__.is_some() { - return Err(serde::de::Error::duplicate_field("snowflake")); - } - config__ = map_.next_value::<::std::option::Option<_>>()?.map(connection_config::Config::Snowflake) -; - } - GeneratedField::Postgres => { - if config__.is_some() { - return Err(serde::de::Error::duplicate_field("postgres")); - } - config__ = map_.next_value::<::std::option::Option<_>>()?.map(connection_config::Config::Postgres) -; - } - } - } - Ok(ConnectionConfig { - vars: vars__.unwrap_or_default(), - config: config__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ConnectionConfig", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for connection_config::ConnectionConfigBigQuery { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.project_id.is_empty() { - len += 1; - } - if !self.dataset_id.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery", len)?; - if !self.project_id.is_empty() { - struct_ser.serialize_field("projectId", &self.project_id)?; - } - if !self.dataset_id.is_empty() { - struct_ser.serialize_field("datasetId", &self.dataset_id)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for connection_config::ConnectionConfigBigQuery { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "project_id", - "projectId", - "dataset_id", - "datasetId", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - ProjectId, - DatasetId, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "projectId" | "project_id" => Ok(GeneratedField::ProjectId), - "datasetId" | "dataset_id" => Ok(GeneratedField::DatasetId), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = connection_config::ConnectionConfigBigQuery; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut project_id__ = None; - let mut dataset_id__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::ProjectId => { - if project_id__.is_some() { - return Err(serde::de::Error::duplicate_field("projectId")); - } - project_id__ = Some(map_.next_value()?); - } - GeneratedField::DatasetId => { - if dataset_id__.is_some() { - return Err(serde::de::Error::duplicate_field("datasetId")); - } - dataset_id__ = Some(map_.next_value()?); - } - } - } - Ok(connection_config::ConnectionConfigBigQuery { - project_id: project_id__.unwrap_or_default(), - dataset_id: dataset_id__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigBigQuery", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for connection_config::ConnectionConfigDuckDb { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.path.is_empty() { - len += 1; - } - if self.schema.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB", len)?; - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if let Some(v) = self.schema.as_ref() { - struct_ser.serialize_field("schema", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for connection_config::ConnectionConfigDuckDb { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "path", - "schema", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Path, - Schema, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "path" => Ok(GeneratedField::Path), - "schema" => Ok(GeneratedField::Schema), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = connection_config::ConnectionConfigDuckDb; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut path__ = None; - let mut schema__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Schema => { - if schema__.is_some() { - return Err(serde::de::Error::duplicate_field("schema")); - } - schema__ = map_.next_value()?; - } - } - } - Ok(connection_config::ConnectionConfigDuckDb { - path: path__.unwrap_or_default(), - schema: schema__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigDuckDB", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for connection_config::ConnectionConfigDuckDbInMemory { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.schema.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory", len)?; - if let Some(v) = self.schema.as_ref() { - struct_ser.serialize_field("schema", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for connection_config::ConnectionConfigDuckDbInMemory { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "schema", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Schema, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "schema" => Ok(GeneratedField::Schema), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = connection_config::ConnectionConfigDuckDbInMemory; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut schema__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Schema => { - if schema__.is_some() { - return Err(serde::de::Error::duplicate_field("schema")); - } - schema__ = map_.next_value()?; - } - } - } - Ok(connection_config::ConnectionConfigDuckDbInMemory { - schema: schema__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigDuckDBInMemory", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for connection_config::ConnectionConfigPostgres { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.schema.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigPostgres", len)?; - if !self.schema.is_empty() { - struct_ser.serialize_field("schema", &self.schema)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for connection_config::ConnectionConfigPostgres { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "schema", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Schema, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "schema" => Ok(GeneratedField::Schema), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = connection_config::ConnectionConfigPostgres; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ConnectionConfig.ConnectionConfigPostgres") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut schema__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Schema => { - if schema__.is_some() { - return Err(serde::de::Error::duplicate_field("schema")); - } - schema__ = Some(map_.next_value()?); - } - } - } - Ok(connection_config::ConnectionConfigPostgres { - schema: schema__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigPostgres", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for connection_config::ConnectionConfigSnowflake { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.account_url.is_empty() { - len += 1; - } - if !self.client_id.is_empty() { - len += 1; - } - if !self.client_secret.is_empty() { - len += 1; - } - if !self.role.is_empty() { - len += 1; - } - if !self.database.is_empty() { - len += 1; - } - if !self.schema.is_empty() { - len += 1; - } - if !self.warehouse.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake", len)?; - if !self.account_url.is_empty() { - struct_ser.serialize_field("accountUrl", &self.account_url)?; - } - if !self.client_id.is_empty() { - struct_ser.serialize_field("clientId", &self.client_id)?; - } - if !self.client_secret.is_empty() { - struct_ser.serialize_field("clientSecret", &self.client_secret)?; - } - if !self.role.is_empty() { - struct_ser.serialize_field("role", &self.role)?; - } - if !self.database.is_empty() { - struct_ser.serialize_field("database", &self.database)?; - } - if !self.schema.is_empty() { - struct_ser.serialize_field("schema", &self.schema)?; - } - if !self.warehouse.is_empty() { - struct_ser.serialize_field("warehouse", &self.warehouse)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for connection_config::ConnectionConfigSnowflake { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "account_url", - "accountUrl", - "client_id", - "clientId", - "client_secret", - "clientSecret", - "role", - "database", - "schema", - "warehouse", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - AccountUrl, - ClientId, - ClientSecret, - Role, - Database, - Schema, - Warehouse, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "accountUrl" | "account_url" => Ok(GeneratedField::AccountUrl), - "clientId" | "client_id" => Ok(GeneratedField::ClientId), - "clientSecret" | "client_secret" => Ok(GeneratedField::ClientSecret), - "role" => Ok(GeneratedField::Role), - "database" => Ok(GeneratedField::Database), - "schema" => Ok(GeneratedField::Schema), - "warehouse" => Ok(GeneratedField::Warehouse), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = connection_config::ConnectionConfigSnowflake; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut account_url__ = None; - let mut client_id__ = None; - let mut client_secret__ = None; - let mut role__ = None; - let mut database__ = None; - let mut schema__ = None; - let mut warehouse__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::AccountUrl => { - if account_url__.is_some() { - return Err(serde::de::Error::duplicate_field("accountUrl")); - } - account_url__ = Some(map_.next_value()?); - } - GeneratedField::ClientId => { - if client_id__.is_some() { - return Err(serde::de::Error::duplicate_field("clientId")); - } - client_id__ = Some(map_.next_value()?); - } - GeneratedField::ClientSecret => { - if client_secret__.is_some() { - return Err(serde::de::Error::duplicate_field("clientSecret")); - } - client_secret__ = Some(map_.next_value()?); - } - GeneratedField::Role => { - if role__.is_some() { - return Err(serde::de::Error::duplicate_field("role")); - } - role__ = Some(map_.next_value()?); - } - GeneratedField::Database => { - if database__.is_some() { - return Err(serde::de::Error::duplicate_field("database")); - } - database__ = Some(map_.next_value()?); - } - GeneratedField::Schema => { - if schema__.is_some() { - return Err(serde::de::Error::duplicate_field("schema")); - } - schema__ = Some(map_.next_value()?); - } - GeneratedField::Warehouse => { - if warehouse__.is_some() { - return Err(serde::de::Error::duplicate_field("warehouse")); - } - warehouse__ = Some(map_.next_value()?); - } - } - } - Ok(connection_config::ConnectionConfigSnowflake { - account_url: account_url__.unwrap_or_default(), - client_id: client_id__.unwrap_or_default(), - client_secret: client_secret__.unwrap_or_default(), - role: role__.unwrap_or_default(), - database: database__.unwrap_or_default(), - schema: schema__.unwrap_or_default(), - warehouse: warehouse__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigSnowflake", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for connection_config::ConnectionConfigSqLite { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.path.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigSqLite", len)?; - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for connection_config::ConnectionConfigSqLite { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "path", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Path, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "path" => Ok(GeneratedField::Path), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = connection_config::ConnectionConfigSqLite; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ConnectionConfig.ConnectionConfigSqLite") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut path__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - } - } - Ok(connection_config::ConnectionConfigSqLite { - path: path__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigSqLite", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for connection_config::ConnectionConfigSqLiteInMemory { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let len = 0; - let struct_ser = serializer.serialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory", len)?; - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for connection_config::ConnectionConfigSqLiteInMemory { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - Err(serde::de::Error::unknown_field(value, FIELDS)) - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = connection_config::ConnectionConfigSqLiteInMemory; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - while map_.next_key::()?.is_some() { - let _ = map_.next_value::()?; - } - Ok(connection_config::ConnectionConfigSqLiteInMemory { - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ConnectionConfig.ConnectionConfigSqLiteInMemory", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for DatabaseSource { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.columns.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.DatabaseSource", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.columns.is_empty() { - struct_ser.serialize_field("columns", &self.columns)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for DatabaseSource { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "path", - "columns", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Path, - Columns, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "path" => Ok(GeneratedField::Path), - "columns" => Ok(GeneratedField::Columns), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = DatabaseSource; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.DatabaseSource") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut path__ = None; - let mut columns__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Columns => { - if columns__.is_some() { - return Err(serde::de::Error::duplicate_field("columns")); - } - columns__ = Some(map_.next_value()?); - } - } - } - Ok(DatabaseSource { - name: name__.unwrap_or_default(), - path: path__.unwrap_or_default(), - columns: columns__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.DatabaseSource", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Edge { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.to.is_empty() { - len += 1; - } - if !self.from.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Edge", len)?; - if !self.to.is_empty() { - struct_ser.serialize_field("to", &self.to)?; - } - if !self.from.is_empty() { - struct_ser.serialize_field("from", &self.from)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Edge { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "to", - "from", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - To, - From, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "to" => Ok(GeneratedField::To), - "from" => Ok(GeneratedField::From), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Edge; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Edge") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut to__ = None; - let mut from__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::To => { - if to__.is_some() { - return Err(serde::de::Error::duplicate_field("to")); - } - to__ = Some(map_.next_value()?); - } - GeneratedField::From => { - if from__.is_some() { - return Err(serde::de::Error::duplicate_field("from")); - } - from__ = Some(map_.next_value()?); - } - } - } - Ok(Edge { - to: to__.unwrap_or_default(), - from: from__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Edge", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ExecRequest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.query.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ExecRequest", len)?; - if !self.query.is_empty() { - struct_ser.serialize_field("query", &self.query)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ExecRequest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "query", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Query, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "query" => Ok(GeneratedField::Query), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ExecRequest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ExecRequest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut query__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Query => { - if query__.is_some() { - return Err(serde::de::Error::duplicate_field("query")); - } - query__ = Some(map_.next_value()?); - } - } - } - Ok(ExecRequest { - query: query__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ExecRequest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ExecResponse { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let len = 0; - let struct_ser = serializer.serialize_struct("quary.service.v1.ExecResponse", len)?; - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ExecResponse { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - Err(serde::de::Error::unknown_field(value, FIELDS)) - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ExecResponse; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ExecResponse") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - while map_.next_key::()?.is_some() { - let _ = map_.next_value::()?; - } - Ok(ExecResponse { - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ExecResponse", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Failed { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.reason.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Failed", len)?; - if let Some(v) = self.reason.as_ref() { - match v { - failed::Reason::Ran(v) => { - struct_ser.serialize_field("ran", v)?; - } - failed::Reason::InferredFromTests(v) => { - struct_ser.serialize_field("inferredFromTests", v)?; - } - failed::Reason::InferredThroughTestsOperation(v) => { - struct_ser.serialize_field("inferredThroughTestsOperation", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Failed { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "ran", - "inferred_from_tests", - "inferredFromTests", - "inferred_through_tests_operation", - "inferredThroughTestsOperation", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Ran, - InferredFromTests, - InferredThroughTestsOperation, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "ran" => Ok(GeneratedField::Ran), - "inferredFromTests" | "inferred_from_tests" => Ok(GeneratedField::InferredFromTests), - "inferredThroughTestsOperation" | "inferred_through_tests_operation" => Ok(GeneratedField::InferredThroughTestsOperation), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Failed; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Failed") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut reason__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Ran => { - if reason__.is_some() { - return Err(serde::de::Error::duplicate_field("ran")); - } - reason__ = map_.next_value::<::std::option::Option<_>>()?.map(failed::Reason::Ran) -; - } - GeneratedField::InferredFromTests => { - if reason__.is_some() { - return Err(serde::de::Error::duplicate_field("inferredFromTests")); - } - reason__ = map_.next_value::<::std::option::Option<_>>()?.map(failed::Reason::InferredFromTests) -; - } - GeneratedField::InferredThroughTestsOperation => { - if reason__.is_some() { - return Err(serde::de::Error::duplicate_field("inferredThroughTestsOperation")); - } - reason__ = map_.next_value::<::std::option::Option<_>>()?.map(failed::Reason::InferredThroughTestsOperation) -; - } - } - } - Ok(Failed { - reason: reason__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Failed", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for FailedRunResults { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.query_result.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.FailedRunResults", len)?; - if let Some(v) = self.query_result.as_ref() { - struct_ser.serialize_field("queryResult", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for FailedRunResults { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "query_result", - "queryResult", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - QueryResult, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "queryResult" | "query_result" => Ok(GeneratedField::QueryResult), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = FailedRunResults; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.FailedRunResults") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut query_result__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::QueryResult => { - if query_result__.is_some() { - return Err(serde::de::Error::duplicate_field("queryResult")); - } - query_result__ = map_.next_value()?; - } - } - } - Ok(FailedRunResults { - query_result: query_result__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.FailedRunResults", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for File { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if !self.contents.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.File", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if !self.contents.is_empty() { - #[allow(clippy::needless_borrow)] - struct_ser.serialize_field("contents", pbjson::private::base64::encode(&self.contents).as_str())?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for File { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "contents", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Contents, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "contents" => Ok(GeneratedField::Contents), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = File; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.File") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut contents__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Contents => { - if contents__.is_some() { - return Err(serde::de::Error::duplicate_field("contents")); - } - contents__ = - Some(map_.next_value::<::pbjson::private::BytesDeserialize<_>>()?.0) - ; - } - } - } - Ok(File { - name: name__.unwrap_or_default(), - contents: contents__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.File", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for FileSystem { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.files.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.FileSystem", len)?; - if !self.files.is_empty() { - struct_ser.serialize_field("files", &self.files)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for FileSystem { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "files", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Files, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "files" => Ok(GeneratedField::Files), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = FileSystem; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.FileSystem") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut files__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Files => { - if files__.is_some() { - return Err(serde::de::Error::duplicate_field("files")); - } - files__ = Some( - map_.next_value::>()? - ); - } - } - } - Ok(FileSystem { - files: files__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.FileSystem", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for InferredChain { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.inferred_chain.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.InferredChain", len)?; - if !self.inferred_chain.is_empty() { - struct_ser.serialize_field("inferredChain", &self.inferred_chain)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for InferredChain { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "inferred_chain", - "inferredChain", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - InferredChain, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "inferredChain" | "inferred_chain" => Ok(GeneratedField::InferredChain), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = InferredChain; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.InferredChain") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut inferred_chain__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::InferredChain => { - if inferred_chain__.is_some() { - return Err(serde::de::Error::duplicate_field("inferredChain")); - } - inferred_chain__ = Some(map_.next_value()?); - } - } - } - Ok(InferredChain { - inferred_chain: inferred_chain__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.InferredChain", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for InferredChainWithOperation { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.inferred_chain.is_empty() { - len += 1; - } - if !self.operation.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.InferredChainWithOperation", len)?; - if !self.inferred_chain.is_empty() { - struct_ser.serialize_field("inferredChain", &self.inferred_chain)?; - } - if !self.operation.is_empty() { - struct_ser.serialize_field("operation", &self.operation)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for InferredChainWithOperation { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "inferred_chain", - "inferredChain", - "operation", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - InferredChain, - Operation, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "inferredChain" | "inferred_chain" => Ok(GeneratedField::InferredChain), - "operation" => Ok(GeneratedField::Operation), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = InferredChainWithOperation; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.InferredChainWithOperation") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut inferred_chain__ = None; - let mut operation__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::InferredChain => { - if inferred_chain__.is_some() { - return Err(serde::de::Error::duplicate_field("inferredChain")); - } - inferred_chain__ = Some(map_.next_value()?); - } - GeneratedField::Operation => { - if operation__.is_some() { - return Err(serde::de::Error::duplicate_field("operation")); - } - operation__ = Some(map_.next_value()?); - } - } - } - Ok(InferredChainWithOperation { - inferred_chain: inferred_chain__.unwrap_or_default(), - operation: operation__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.InferredChainWithOperation", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ListColumnsRequest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.table_name.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ListColumnsRequest", len)?; - if !self.table_name.is_empty() { - struct_ser.serialize_field("tableName", &self.table_name)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ListColumnsRequest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "table_name", - "tableName", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - TableName, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "tableName" | "table_name" => Ok(GeneratedField::TableName), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListColumnsRequest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ListColumnsRequest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut table_name__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::TableName => { - if table_name__.is_some() { - return Err(serde::de::Error::duplicate_field("tableName")); - } - table_name__ = Some(map_.next_value()?); - } - } - } - Ok(ListColumnsRequest { - table_name: table_name__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ListColumnsRequest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ListColumnsResponse { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.columns.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ListColumnsResponse", len)?; - if !self.columns.is_empty() { - struct_ser.serialize_field("columns", &self.columns)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ListColumnsResponse { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "columns", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Columns, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "columns" => Ok(GeneratedField::Columns), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListColumnsResponse; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ListColumnsResponse") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut columns__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Columns => { - if columns__.is_some() { - return Err(serde::de::Error::duplicate_field("columns")); - } - columns__ = Some(map_.next_value()?); - } - } - } - Ok(ListColumnsResponse { - columns: columns__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ListColumnsResponse", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ListSourcesRequest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let len = 0; - let struct_ser = serializer.serialize_struct("quary.service.v1.ListSourcesRequest", len)?; - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ListSourcesRequest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - Err(serde::de::Error::unknown_field(value, FIELDS)) - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSourcesRequest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ListSourcesRequest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - while map_.next_key::()?.is_some() { - let _ = map_.next_value::()?; - } - Ok(ListSourcesRequest { - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ListSourcesRequest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ListSourcesResponse { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.sources.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ListSourcesResponse", len)?; - if !self.sources.is_empty() { - struct_ser.serialize_field("sources", &self.sources)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ListSourcesResponse { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "sources", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Sources, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "sources" => Ok(GeneratedField::Sources), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListSourcesResponse; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ListSourcesResponse") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut sources__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Sources => { - if sources__.is_some() { - return Err(serde::de::Error::duplicate_field("sources")); - } - sources__ = Some(map_.next_value()?); - } - } - } - Ok(ListSourcesResponse { - sources: sources__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ListSourcesResponse", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ListTablesRequest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let len = 0; - let struct_ser = serializer.serialize_struct("quary.service.v1.ListTablesRequest", len)?; - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ListTablesRequest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - Err(serde::de::Error::unknown_field(value, FIELDS)) - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListTablesRequest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ListTablesRequest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - while map_.next_key::()?.is_some() { - let _ = map_.next_value::()?; - } - Ok(ListTablesRequest { - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ListTablesRequest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ListTablesResponse { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.tables.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ListTablesResponse", len)?; - if !self.tables.is_empty() { - struct_ser.serialize_field("tables", &self.tables)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ListTablesResponse { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "tables", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Tables, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "tables" => Ok(GeneratedField::Tables), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListTablesResponse; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ListTablesResponse") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut tables__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Tables => { - if tables__.is_some() { - return Err(serde::de::Error::duplicate_field("tables")); - } - tables__ = Some(map_.next_value()?); - } - } - } - Ok(ListTablesResponse { - tables: tables__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ListTablesResponse", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ListViewsRequest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let len = 0; - let struct_ser = serializer.serialize_struct("quary.service.v1.ListViewsRequest", len)?; - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ListViewsRequest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - Err(serde::de::Error::unknown_field(value, FIELDS)) - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListViewsRequest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ListViewsRequest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - while map_.next_key::()?.is_some() { - let _ = map_.next_value::()?; - } - Ok(ListViewsRequest { - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ListViewsRequest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ListViewsResponse { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.views.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ListViewsResponse", len)?; - if !self.views.is_empty() { - struct_ser.serialize_field("views", &self.views)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ListViewsResponse { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "views", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Views, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "views" => Ok(GeneratedField::Views), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ListViewsResponse; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ListViewsResponse") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut views__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Views => { - if views__.is_some() { - return Err(serde::de::Error::duplicate_field("views")); - } - views__ = Some(map_.next_value()?); - } - } - } - Ok(ListViewsResponse { - views: views__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ListViewsResponse", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Model { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - if !self.tags.is_empty() { - len += 1; - } - if !self.file_path.is_empty() { - len += 1; - } - if !self.file_sha256_hash.is_empty() { - len += 1; - } - if self.materialization.is_some() { - len += 1; - } - if !self.columns.is_empty() { - len += 1; - } - if !self.references.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Model", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - if !self.tags.is_empty() { - struct_ser.serialize_field("tags", &self.tags)?; - } - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.file_sha256_hash.is_empty() { - struct_ser.serialize_field("fileSha256Hash", &self.file_sha256_hash)?; - } - if let Some(v) = self.materialization.as_ref() { - struct_ser.serialize_field("materialization", v)?; - } - if !self.columns.is_empty() { - struct_ser.serialize_field("columns", &self.columns)?; - } - if !self.references.is_empty() { - struct_ser.serialize_field("references", &self.references)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Model { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "description", - "tags", - "file_path", - "filePath", - "file_sha256_hash", - "fileSha256Hash", - "materialization", - "columns", - "references", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Description, - Tags, - FilePath, - FileSha256Hash, - Materialization, - Columns, - References, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "description" => Ok(GeneratedField::Description), - "tags" => Ok(GeneratedField::Tags), - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "fileSha256Hash" | "file_sha256_hash" => Ok(GeneratedField::FileSha256Hash), - "materialization" => Ok(GeneratedField::Materialization), - "columns" => Ok(GeneratedField::Columns), - "references" => Ok(GeneratedField::References), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Model; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Model") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut description__ = None; - let mut tags__ = None; - let mut file_path__ = None; - let mut file_sha256_hash__ = None; - let mut materialization__ = None; - let mut columns__ = None; - let mut references__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - GeneratedField::Tags => { - if tags__.is_some() { - return Err(serde::de::Error::duplicate_field("tags")); - } - tags__ = Some(map_.next_value()?); - } - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::FileSha256Hash => { - if file_sha256_hash__.is_some() { - return Err(serde::de::Error::duplicate_field("fileSha256Hash")); - } - file_sha256_hash__ = Some(map_.next_value()?); - } - GeneratedField::Materialization => { - if materialization__.is_some() { - return Err(serde::de::Error::duplicate_field("materialization")); - } - materialization__ = map_.next_value()?; - } - GeneratedField::Columns => { - if columns__.is_some() { - return Err(serde::de::Error::duplicate_field("columns")); - } - columns__ = Some(map_.next_value()?); - } - GeneratedField::References => { - if references__.is_some() { - return Err(serde::de::Error::duplicate_field("references")); - } - references__ = Some(map_.next_value()?); - } - } - } - Ok(Model { - name: name__.unwrap_or_default(), - description: description__, - tags: tags__.unwrap_or_default(), - file_path: file_path__.unwrap_or_default(), - file_sha256_hash: file_sha256_hash__.unwrap_or_default(), - materialization: materialization__, - columns: columns__.unwrap_or_default(), - references: references__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Model", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for model::ModelColum { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.title.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Model.ModelColum", len)?; - if !self.title.is_empty() { - struct_ser.serialize_field("title", &self.title)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for model::ModelColum { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "title", - "description", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Title, - Description, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "title" => Ok(GeneratedField::Title), - "description" => Ok(GeneratedField::Description), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = model::ModelColum; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Model.ModelColum") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut title__ = None; - let mut description__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Title => { - if title__.is_some() { - return Err(serde::de::Error::duplicate_field("title")); - } - title__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - } - } - Ok(model::ModelColum { - title: title__.unwrap_or_default(), - description: description__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Model.ModelColum", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ModelTest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.r#type.is_empty() { - len += 1; - } - if !self.info.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ModelTest", len)?; - if !self.r#type.is_empty() { - struct_ser.serialize_field("type", &self.r#type)?; - } - if !self.info.is_empty() { - struct_ser.serialize_field("info", &self.info)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ModelTest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "type", - "info", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Type, - Info, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "type" => Ok(GeneratedField::Type), - "info" => Ok(GeneratedField::Info), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ModelTest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ModelTest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut r#type__ = None; - let mut info__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Type => { - if r#type__.is_some() { - return Err(serde::de::Error::duplicate_field("type")); - } - r#type__ = Some(map_.next_value()?); - } - GeneratedField::Info => { - if info__.is_some() { - return Err(serde::de::Error::duplicate_field("info")); - } - info__ = Some( - map_.next_value::>()? - ); - } - } - } - Ok(ModelTest { - r#type: r#type__.unwrap_or_default(), - info: info__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ModelTest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Node { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.id.is_empty() { - len += 1; - } - if self.is_cached { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Node", len)?; - if !self.id.is_empty() { - struct_ser.serialize_field("id", &self.id)?; - } - if self.is_cached { - struct_ser.serialize_field("isCached", &self.is_cached)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Node { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "id", - "is_cached", - "isCached", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Id, - IsCached, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "id" => Ok(GeneratedField::Id), - "isCached" | "is_cached" => Ok(GeneratedField::IsCached), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Node; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Node") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut id__ = None; - let mut is_cached__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Id => { - if id__.is_some() { - return Err(serde::de::Error::duplicate_field("id")); - } - id__ = Some(map_.next_value()?); - } - GeneratedField::IsCached => { - if is_cached__.is_some() { - return Err(serde::de::Error::duplicate_field("isCached")); - } - is_cached__ = Some(map_.next_value()?); - } - } - } - Ok(Node { - id: id__.unwrap_or_default(), - is_cached: is_cached__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Node", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Passed { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.reason.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Passed", len)?; - if let Some(v) = self.reason.as_ref() { - match v { - passed::Reason::Ran(v) => { - struct_ser.serialize_field("ran", v)?; - } - passed::Reason::InferredFromTests(v) => { - struct_ser.serialize_field("inferredFromTests", v)?; - } - passed::Reason::InferredFromLogic(v) => { - struct_ser.serialize_field("inferredFromLogic", v)?; - } - passed::Reason::InferredThroughTestsOperation(v) => { - struct_ser.serialize_field("inferredThroughTestsOperation", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Passed { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "ran", - "inferred_from_tests", - "inferredFromTests", - "inferred_from_logic", - "inferredFromLogic", - "inferred_through_tests_operation", - "inferredThroughTestsOperation", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Ran, - InferredFromTests, - InferredFromLogic, - InferredThroughTestsOperation, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "ran" => Ok(GeneratedField::Ran), - "inferredFromTests" | "inferred_from_tests" => Ok(GeneratedField::InferredFromTests), - "inferredFromLogic" | "inferred_from_logic" => Ok(GeneratedField::InferredFromLogic), - "inferredThroughTestsOperation" | "inferred_through_tests_operation" => Ok(GeneratedField::InferredThroughTestsOperation), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Passed; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Passed") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut reason__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Ran => { - if reason__.is_some() { - return Err(serde::de::Error::duplicate_field("ran")); - } - reason__ = map_.next_value::<::std::option::Option<_>>()?.map(passed::Reason::Ran) -; - } - GeneratedField::InferredFromTests => { - if reason__.is_some() { - return Err(serde::de::Error::duplicate_field("inferredFromTests")); - } - reason__ = map_.next_value::<::std::option::Option<_>>()?.map(passed::Reason::InferredFromTests) -; - } - GeneratedField::InferredFromLogic => { - if reason__.is_some() { - return Err(serde::de::Error::duplicate_field("inferredFromLogic")); - } - reason__ = map_.next_value::<::std::option::Option<_>>()?.map(passed::Reason::InferredFromLogic); - } - GeneratedField::InferredThroughTestsOperation => { - if reason__.is_some() { - return Err(serde::de::Error::duplicate_field("inferredThroughTestsOperation")); - } - reason__ = map_.next_value::<::std::option::Option<_>>()?.map(passed::Reason::InferredThroughTestsOperation) -; - } - } - } - Ok(Passed { - reason: reason__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Passed", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Position { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.line != 0 { - len += 1; - } - if self.character != 0 { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Position", len)?; - if self.line != 0 { - struct_ser.serialize_field("line", &self.line)?; - } - if self.character != 0 { - struct_ser.serialize_field("character", &self.character)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Position { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "line", - "character", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Line, - Character, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "line" => Ok(GeneratedField::Line), - "character" => Ok(GeneratedField::Character), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Position; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Position") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut line__ = None; - let mut character__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Line => { - if line__.is_some() { - return Err(serde::de::Error::duplicate_field("line")); - } - line__ = - Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) - ; - } - GeneratedField::Character => { - if character__.is_some() { - return Err(serde::de::Error::duplicate_field("character")); - } - character__ = - Some(map_.next_value::<::pbjson::private::NumberDeserialize<_>>()?.0) - ; - } - } - } - Ok(Position { - line: line__.unwrap_or_default(), - character: character__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Position", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Project { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.seeds.is_empty() { - len += 1; - } - if !self.models.is_empty() { - len += 1; - } - if !self.tests.is_empty() { - len += 1; - } - if !self.sources.is_empty() { - len += 1; - } - if !self.snapshots.is_empty() { - len += 1; - } - if !self.project_files.is_empty() { - len += 1; - } - if self.connection_config.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Project", len)?; - if !self.seeds.is_empty() { - struct_ser.serialize_field("seeds", &self.seeds)?; - } - if !self.models.is_empty() { - struct_ser.serialize_field("models", &self.models)?; - } - if !self.tests.is_empty() { - struct_ser.serialize_field("tests", &self.tests)?; - } - if !self.sources.is_empty() { - struct_ser.serialize_field("sources", &self.sources)?; - } - if !self.snapshots.is_empty() { - struct_ser.serialize_field("snapshots", &self.snapshots)?; - } - if !self.project_files.is_empty() { - struct_ser.serialize_field("projectFiles", &self.project_files)?; - } - if let Some(v) = self.connection_config.as_ref() { - struct_ser.serialize_field("connectionConfig", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Project { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "seeds", - "models", - "tests", - "sources", - "snapshots", - "project_files", - "projectFiles", - "connection_config", - "connectionConfig", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Seeds, - Models, - Tests, - Sources, - Snapshots, - ProjectFiles, - ConnectionConfig, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "seeds" => Ok(GeneratedField::Seeds), - "models" => Ok(GeneratedField::Models), - "tests" => Ok(GeneratedField::Tests), - "sources" => Ok(GeneratedField::Sources), - "snapshots" => Ok(GeneratedField::Snapshots), - "projectFiles" | "project_files" => Ok(GeneratedField::ProjectFiles), - "connectionConfig" | "connection_config" => Ok(GeneratedField::ConnectionConfig), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Project; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Project") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut seeds__ = None; - let mut models__ = None; - let mut tests__ = None; - let mut sources__ = None; - let mut snapshots__ = None; - let mut project_files__ = None; - let mut connection_config__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Seeds => { - if seeds__.is_some() { - return Err(serde::de::Error::duplicate_field("seeds")); - } - seeds__ = Some( - map_.next_value::>()? - ); - } - GeneratedField::Models => { - if models__.is_some() { - return Err(serde::de::Error::duplicate_field("models")); - } - models__ = Some( - map_.next_value::>()? - ); - } - GeneratedField::Tests => { - if tests__.is_some() { - return Err(serde::de::Error::duplicate_field("tests")); - } - tests__ = Some( - map_.next_value::>()? - ); - } - GeneratedField::Sources => { - if sources__.is_some() { - return Err(serde::de::Error::duplicate_field("sources")); - } - sources__ = Some( - map_.next_value::>()? - ); - } - GeneratedField::Snapshots => { - if snapshots__.is_some() { - return Err(serde::de::Error::duplicate_field("snapshots")); - } - snapshots__ = Some( - map_.next_value::>()? - ); - } - GeneratedField::ProjectFiles => { - if project_files__.is_some() { - return Err(serde::de::Error::duplicate_field("projectFiles")); - } - project_files__ = Some( - map_.next_value::>()? - ); - } - GeneratedField::ConnectionConfig => { - if connection_config__.is_some() { - return Err(serde::de::Error::duplicate_field("connectionConfig")); - } - connection_config__ = map_.next_value()?; - } - } - } - Ok(Project { - seeds: seeds__.unwrap_or_default(), - models: models__.unwrap_or_default(), - tests: tests__.unwrap_or_default(), - sources: sources__.unwrap_or_default(), - snapshots: snapshots__.unwrap_or_default(), - project_files: project_files__.unwrap_or_default(), - connection_config: connection_config__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Project", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ProjectDag { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.nodes.is_empty() { - len += 1; - } - if !self.edges.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ProjectDag", len)?; - if !self.nodes.is_empty() { - struct_ser.serialize_field("nodes", &self.nodes)?; - } - if !self.edges.is_empty() { - struct_ser.serialize_field("edges", &self.edges)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ProjectDag { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "nodes", - "edges", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Nodes, - Edges, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "nodes" => Ok(GeneratedField::Nodes), - "edges" => Ok(GeneratedField::Edges), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ProjectDag; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ProjectDag") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut nodes__ = None; - let mut edges__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Nodes => { - if nodes__.is_some() { - return Err(serde::de::Error::duplicate_field("nodes")); - } - nodes__ = Some(map_.next_value()?); - } - GeneratedField::Edges => { - if edges__.is_some() { - return Err(serde::de::Error::duplicate_field("edges")); - } - edges__ = Some(map_.next_value()?); - } - } - } - Ok(ProjectDag { - nodes: nodes__.unwrap_or_default(), - edges: edges__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ProjectDag", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ProjectFile { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.sources.is_empty() { - len += 1; - } - if !self.models.is_empty() { - len += 1; - } - if !self.snapshots.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ProjectFile", len)?; - if !self.sources.is_empty() { - struct_ser.serialize_field("sources", &self.sources)?; - } - if !self.models.is_empty() { - struct_ser.serialize_field("models", &self.models)?; - } - if !self.snapshots.is_empty() { - struct_ser.serialize_field("snapshots", &self.snapshots)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ProjectFile { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "sources", - "models", - "snapshots", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Sources, - Models, - Snapshots, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "sources" => Ok(GeneratedField::Sources), - "models" => Ok(GeneratedField::Models), - "snapshots" => Ok(GeneratedField::Snapshots), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ProjectFile; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ProjectFile") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut sources__ = None; - let mut models__ = None; - let mut snapshots__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Sources => { - if sources__.is_some() { - return Err(serde::de::Error::duplicate_field("sources")); - } - sources__ = Some(map_.next_value()?); - } - GeneratedField::Models => { - if models__.is_some() { - return Err(serde::de::Error::duplicate_field("models")); - } - models__ = Some(map_.next_value()?); - } - GeneratedField::Snapshots => { - if snapshots__.is_some() { - return Err(serde::de::Error::duplicate_field("snapshots")); - } - snapshots__ = Some(map_.next_value()?); - } - } - } - Ok(ProjectFile { - sources: sources__.unwrap_or_default(), - models: models__.unwrap_or_default(), - snapshots: snapshots__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ProjectFile", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for project_file::Model { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if !self.tags.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - if self.materialization.is_some() { - len += 1; - } - if !self.tests.is_empty() { - len += 1; - } - if !self.columns.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ProjectFile.Model", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if !self.tags.is_empty() { - struct_ser.serialize_field("tags", &self.tags)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - if let Some(v) = self.materialization.as_ref() { - struct_ser.serialize_field("materialization", v)?; - } - if !self.tests.is_empty() { - struct_ser.serialize_field("tests", &self.tests)?; - } - if !self.columns.is_empty() { - struct_ser.serialize_field("columns", &self.columns)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for project_file::Model { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "tags", - "description", - "materialization", - "tests", - "columns", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Tags, - Description, - Materialization, - Tests, - Columns, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "tags" => Ok(GeneratedField::Tags), - "description" => Ok(GeneratedField::Description), - "materialization" => Ok(GeneratedField::Materialization), - "tests" => Ok(GeneratedField::Tests), - "columns" => Ok(GeneratedField::Columns), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = project_file::Model; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ProjectFile.Model") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut tags__ = None; - let mut description__ = None; - let mut materialization__ = None; - let mut tests__ = None; - let mut columns__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Tags => { - if tags__.is_some() { - return Err(serde::de::Error::duplicate_field("tags")); - } - tags__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - GeneratedField::Materialization => { - if materialization__.is_some() { - return Err(serde::de::Error::duplicate_field("materialization")); - } - materialization__ = map_.next_value()?; - } - GeneratedField::Tests => { - if tests__.is_some() { - return Err(serde::de::Error::duplicate_field("tests")); - } - tests__ = Some(map_.next_value()?); - } - GeneratedField::Columns => { - if columns__.is_some() { - return Err(serde::de::Error::duplicate_field("columns")); - } - columns__ = Some(map_.next_value()?); - } - } - } - Ok(project_file::Model { - name: name__.unwrap_or_default(), - tags: tags__.unwrap_or_default(), - description: description__, - materialization: materialization__, - tests: tests__.unwrap_or_default(), - columns: columns__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ProjectFile.Model", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for project_file::Snapshot { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if !self.tags.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - if !self.unique_key.is_empty() { - len += 1; - } - if self.strategy.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ProjectFile.Snapshot", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if !self.tags.is_empty() { - struct_ser.serialize_field("tags", &self.tags)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - if !self.unique_key.is_empty() { - struct_ser.serialize_field("uniqueKey", &self.unique_key)?; - } - if let Some(v) = self.strategy.as_ref() { - struct_ser.serialize_field("strategy", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for project_file::Snapshot { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "tags", - "description", - "unique_key", - "uniqueKey", - "strategy", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Tags, - Description, - UniqueKey, - Strategy, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "tags" => Ok(GeneratedField::Tags), - "description" => Ok(GeneratedField::Description), - "uniqueKey" | "unique_key" => Ok(GeneratedField::UniqueKey), - "strategy" => Ok(GeneratedField::Strategy), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = project_file::Snapshot; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ProjectFile.Snapshot") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut tags__ = None; - let mut description__ = None; - let mut unique_key__ = None; - let mut strategy__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Tags => { - if tags__.is_some() { - return Err(serde::de::Error::duplicate_field("tags")); - } - tags__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - GeneratedField::UniqueKey => { - if unique_key__.is_some() { - return Err(serde::de::Error::duplicate_field("uniqueKey")); - } - unique_key__ = Some(map_.next_value()?); - } - GeneratedField::Strategy => { - if strategy__.is_some() { - return Err(serde::de::Error::duplicate_field("strategy")); - } - strategy__ = map_.next_value()?; - } - } - } - Ok(project_file::Snapshot { - name: name__.unwrap_or_default(), - tags: tags__.unwrap_or_default(), - description: description__, - unique_key: unique_key__.unwrap_or_default(), - strategy: strategy__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ProjectFile.Snapshot", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for project_file::SnapshotStrategy { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.strategy_type.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ProjectFile.SnapshotStrategy", len)?; - if let Some(v) = self.strategy_type.as_ref() { - match v { - project_file::snapshot_strategy::StrategyType::Timestamp(v) => { - struct_ser.serialize_field("timestamp", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for project_file::SnapshotStrategy { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "timestamp", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Timestamp, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "timestamp" => Ok(GeneratedField::Timestamp), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = project_file::SnapshotStrategy; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ProjectFile.SnapshotStrategy") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut strategy_type__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Timestamp => { - if strategy_type__.is_some() { - return Err(serde::de::Error::duplicate_field("timestamp")); - } - strategy_type__ = map_.next_value::<::std::option::Option<_>>()?.map(project_file::snapshot_strategy::StrategyType::Timestamp) -; - } - } - } - Ok(project_file::SnapshotStrategy { - strategy_type: strategy_type__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ProjectFile.SnapshotStrategy", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for project_file::TimestampStrategy { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.updated_at.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ProjectFile.TimestampStrategy", len)?; - if !self.updated_at.is_empty() { - struct_ser.serialize_field("updatedAt", &self.updated_at)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for project_file::TimestampStrategy { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "updated_at", - "updatedAt", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - UpdatedAt, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "updatedAt" | "updated_at" => Ok(GeneratedField::UpdatedAt), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = project_file::TimestampStrategy; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ProjectFile.TimestampStrategy") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut updated_at__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::UpdatedAt => { - if updated_at__.is_some() { - return Err(serde::de::Error::duplicate_field("updatedAt")); - } - updated_at__ = Some(map_.next_value()?); - } - } - } - Ok(project_file::TimestampStrategy { - updated_at: updated_at__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ProjectFile.TimestampStrategy", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ProjectFileColumn { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - if !self.tests.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ProjectFileColumn", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - if !self.tests.is_empty() { - struct_ser.serialize_field("tests", &self.tests)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ProjectFileColumn { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "description", - "tests", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Description, - Tests, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "description" => Ok(GeneratedField::Description), - "tests" => Ok(GeneratedField::Tests), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ProjectFileColumn; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ProjectFileColumn") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut description__ = None; - let mut tests__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - GeneratedField::Tests => { - if tests__.is_some() { - return Err(serde::de::Error::duplicate_field("tests")); - } - tests__ = Some(map_.next_value()?); - } - } - } - Ok(ProjectFileColumn { - name: name__.unwrap_or_default(), - description: description__, - tests: tests__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ProjectFileColumn", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for ProjectFileSource { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if !self.tags.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.tests.is_empty() { - len += 1; - } - if !self.columns.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.ProjectFileSource", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if !self.tags.is_empty() { - struct_ser.serialize_field("tags", &self.tags)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.tests.is_empty() { - struct_ser.serialize_field("tests", &self.tests)?; - } - if !self.columns.is_empty() { - struct_ser.serialize_field("columns", &self.columns)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for ProjectFileSource { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "tags", - "description", - "path", - "tests", - "columns", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Tags, - Description, - Path, - Tests, - Columns, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "tags" => Ok(GeneratedField::Tags), - "description" => Ok(GeneratedField::Description), - "path" => Ok(GeneratedField::Path), - "tests" => Ok(GeneratedField::Tests), - "columns" => Ok(GeneratedField::Columns), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = ProjectFileSource; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.ProjectFileSource") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut tags__ = None; - let mut description__ = None; - let mut path__ = None; - let mut tests__ = None; - let mut columns__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Tags => { - if tags__.is_some() { - return Err(serde::de::Error::duplicate_field("tags")); - } - tags__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Tests => { - if tests__.is_some() { - return Err(serde::de::Error::duplicate_field("tests")); - } - tests__ = Some(map_.next_value()?); - } - GeneratedField::Columns => { - if columns__.is_some() { - return Err(serde::de::Error::duplicate_field("columns")); - } - columns__ = Some(map_.next_value()?); - } - } - } - Ok(ProjectFileSource { - name: name__.unwrap_or_default(), - tags: tags__.unwrap_or_default(), - description: description__, - path: path__.unwrap_or_default(), - tests: tests__.unwrap_or_default(), - columns: columns__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.ProjectFileSource", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for QueryRequest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.query.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.QueryRequest", len)?; - if !self.query.is_empty() { - struct_ser.serialize_field("query", &self.query)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for QueryRequest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "query", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Query, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "query" => Ok(GeneratedField::Query), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = QueryRequest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.QueryRequest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut query__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Query => { - if query__.is_some() { - return Err(serde::de::Error::duplicate_field("query")); - } - query__ = Some(map_.next_value()?); - } - } - } - Ok(QueryRequest { - query: query__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.QueryRequest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for QueryResponse { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.result.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.QueryResponse", len)?; - if let Some(v) = self.result.as_ref() { - struct_ser.serialize_field("result", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for QueryResponse { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "result", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Result, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "result" => Ok(GeneratedField::Result), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = QueryResponse; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.QueryResponse") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut result__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Result => { - if result__.is_some() { - return Err(serde::de::Error::duplicate_field("result")); - } - result__ = map_.next_value()?; - } - } - } - Ok(QueryResponse { - result: result__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.QueryResponse", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for QueryResult { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.columns.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.QueryResult", len)?; - if !self.columns.is_empty() { - struct_ser.serialize_field("columns", &self.columns)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for QueryResult { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "columns", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Columns, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "columns" => Ok(GeneratedField::Columns), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = QueryResult; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.QueryResult") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut columns__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Columns => { - if columns__.is_some() { - return Err(serde::de::Error::duplicate_field("columns")); - } - columns__ = Some(map_.next_value()?); - } - } - } - Ok(QueryResult { - columns: columns__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.QueryResult", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for QueryResultColumn { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if self.r#type.is_some() { - len += 1; - } - if !self.values.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.QueryResultColumn", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if let Some(v) = self.r#type.as_ref() { - struct_ser.serialize_field("type", v)?; - } - if !self.values.is_empty() { - struct_ser.serialize_field("values", &self.values)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for QueryResultColumn { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "type", - "values", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Type, - Values, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "type" => Ok(GeneratedField::Type), - "values" => Ok(GeneratedField::Values), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = QueryResultColumn; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.QueryResultColumn") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut r#type__ = None; - let mut values__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Type => { - if r#type__.is_some() { - return Err(serde::de::Error::duplicate_field("type")); - } - r#type__ = map_.next_value()?; - } - GeneratedField::Values => { - if values__.is_some() { - return Err(serde::de::Error::duplicate_field("values")); - } - values__ = Some(map_.next_value()?); - } - } - } - Ok(QueryResultColumn { - name: name__.unwrap_or_default(), - r#type: r#type__, - values: values__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.QueryResultColumn", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Range { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.start.is_some() { - len += 1; - } - if self.end.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Range", len)?; - if let Some(v) = self.start.as_ref() { - struct_ser.serialize_field("start", v)?; - } - if let Some(v) = self.end.as_ref() { - struct_ser.serialize_field("end", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Range { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "start", - "end", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Start, - End, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "start" => Ok(GeneratedField::Start), - "end" => Ok(GeneratedField::End), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Range; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Range") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut start__ = None; - let mut end__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Start => { - if start__.is_some() { - return Err(serde::de::Error::duplicate_field("start")); - } - start__ = map_.next_value()?; - } - GeneratedField::End => { - if end__.is_some() { - return Err(serde::de::Error::duplicate_field("end")); - } - end__ = map_.next_value()?; - } - } - } - Ok(Range { - start: start__, - end: end__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Range", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Row { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.title.is_empty() { - len += 1; - } - if !self.tests.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Row", len)?; - if !self.title.is_empty() { - struct_ser.serialize_field("title", &self.title)?; - } - if !self.tests.is_empty() { - struct_ser.serialize_field("tests", &self.tests)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Row { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "title", - "tests", - "description", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Title, - Tests, - Description, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "title" => Ok(GeneratedField::Title), - "tests" => Ok(GeneratedField::Tests), - "description" => Ok(GeneratedField::Description), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Row; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Row") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut title__ = None; - let mut tests__ = None; - let mut description__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Title => { - if title__.is_some() { - return Err(serde::de::Error::duplicate_field("title")); - } - title__ = Some(map_.next_value()?); - } - GeneratedField::Tests => { - if tests__.is_some() { - return Err(serde::de::Error::duplicate_field("tests")); - } - tests__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - } - } - Ok(Row { - title: title__.unwrap_or_default(), - tests: tests__.unwrap_or_default(), - description: description__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Row", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for RowDescription { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.description.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.RowDescription", len)?; - if let Some(v) = self.description.as_ref() { - match v { - row_description::Description::Present(v) => { - struct_ser.serialize_field("present", v)?; - } - row_description::Description::PresentAndInferredIdentical(v) => { - struct_ser.serialize_field("presentAndInferredIdentical", v)?; - } - row_description::Description::PresentWithDifferentInference(v) => { - struct_ser.serialize_field("presentWithDifferentInference", v)?; - } - row_description::Description::Inferred(v) => { - struct_ser.serialize_field("inferred", v)?; - } - row_description::Description::NotPresent(v) => { - struct_ser.serialize_field("notPresent", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for RowDescription { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "present", - "present_and_inferred_identical", - "presentAndInferredIdentical", - "present_with_different_inference", - "presentWithDifferentInference", - "inferred", - "not_present", - "notPresent", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Present, - PresentAndInferredIdentical, - PresentWithDifferentInference, - Inferred, - NotPresent, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "present" => Ok(GeneratedField::Present), - "presentAndInferredIdentical" | "present_and_inferred_identical" => Ok(GeneratedField::PresentAndInferredIdentical), - "presentWithDifferentInference" | "present_with_different_inference" => Ok(GeneratedField::PresentWithDifferentInference), - "inferred" => Ok(GeneratedField::Inferred), - "notPresent" | "not_present" => Ok(GeneratedField::NotPresent), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = RowDescription; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.RowDescription") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut description__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Present => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("present")); - } - description__ = map_.next_value::<::std::option::Option<_>>()?.map(row_description::Description::Present); - } - GeneratedField::PresentAndInferredIdentical => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("presentAndInferredIdentical")); - } - description__ = map_.next_value::<::std::option::Option<_>>()?.map(row_description::Description::PresentAndInferredIdentical); - } - GeneratedField::PresentWithDifferentInference => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("presentWithDifferentInference")); - } - description__ = map_.next_value::<::std::option::Option<_>>()?.map(row_description::Description::PresentWithDifferentInference) -; - } - GeneratedField::Inferred => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("inferred")); - } - description__ = map_.next_value::<::std::option::Option<_>>()?.map(row_description::Description::Inferred); - } - GeneratedField::NotPresent => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("notPresent")); - } - description__ = map_.next_value::<::std::option::Option<_>>()?.map(row_description::Description::NotPresent) -; - } - } - } - Ok(RowDescription { - description: description__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.RowDescription", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for row_description::PresentWithInference { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.present.is_empty() { - len += 1; - } - if !self.inferred.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.RowDescription.PresentWithInference", len)?; - if !self.present.is_empty() { - struct_ser.serialize_field("present", &self.present)?; - } - if !self.inferred.is_empty() { - struct_ser.serialize_field("inferred", &self.inferred)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for row_description::PresentWithInference { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "present", - "inferred", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Present, - Inferred, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "present" => Ok(GeneratedField::Present), - "inferred" => Ok(GeneratedField::Inferred), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = row_description::PresentWithInference; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.RowDescription.PresentWithInference") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut present__ = None; - let mut inferred__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Present => { - if present__.is_some() { - return Err(serde::de::Error::duplicate_field("present")); - } - present__ = Some(map_.next_value()?); - } - GeneratedField::Inferred => { - if inferred__.is_some() { - return Err(serde::de::Error::duplicate_field("inferred")); - } - inferred__ = Some(map_.next_value()?); - } - } - } - Ok(row_description::PresentWithInference { - present: present__.unwrap_or_default(), - inferred: inferred__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.RowDescription.PresentWithInference", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for RowTest { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.test.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.RowTest", len)?; - if let Some(v) = self.test.as_ref() { - match v { - row_test::Test::PresentAndNotInferred(v) => { - struct_ser.serialize_field("presentAndNotInferred", v)?; - } - row_test::Test::PresentAndInferred(v) => { - struct_ser.serialize_field("presentAndInferred", v)?; - } - row_test::Test::NotPresentButInferred(v) => { - struct_ser.serialize_field("notPresentButInferred", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for RowTest { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "present_and_not_inferred", - "presentAndNotInferred", - "present_and_inferred", - "presentAndInferred", - "not_present_but_inferred", - "notPresentButInferred", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - PresentAndNotInferred, - PresentAndInferred, - NotPresentButInferred, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "presentAndNotInferred" | "present_and_not_inferred" => Ok(GeneratedField::PresentAndNotInferred), - "presentAndInferred" | "present_and_inferred" => Ok(GeneratedField::PresentAndInferred), - "notPresentButInferred" | "not_present_but_inferred" => Ok(GeneratedField::NotPresentButInferred), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = RowTest; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.RowTest") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut test__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::PresentAndNotInferred => { - if test__.is_some() { - return Err(serde::de::Error::duplicate_field("presentAndNotInferred")); - } - test__ = map_.next_value::<::std::option::Option<_>>()?.map(row_test::Test::PresentAndNotInferred) -; - } - GeneratedField::PresentAndInferred => { - if test__.is_some() { - return Err(serde::de::Error::duplicate_field("presentAndInferred")); - } - test__ = map_.next_value::<::std::option::Option<_>>()?.map(row_test::Test::PresentAndInferred) -; - } - GeneratedField::NotPresentButInferred => { - if test__.is_some() { - return Err(serde::de::Error::duplicate_field("notPresentButInferred")); - } - test__ = map_.next_value::<::std::option::Option<_>>()?.map(row_test::Test::NotPresentButInferred) -; - } - } - } - Ok(RowTest { - test: test__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.RowTest", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for RowTestDetails { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.text.is_empty() { - len += 1; - } - if self.column_test.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.RowTestDetails", len)?; - if !self.text.is_empty() { - struct_ser.serialize_field("text", &self.text)?; - } - if let Some(v) = self.column_test.as_ref() { - struct_ser.serialize_field("columnTest", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for RowTestDetails { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "text", - "column_test", - "columnTest", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Text, - ColumnTest, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "text" => Ok(GeneratedField::Text), - "columnTest" | "column_test" => Ok(GeneratedField::ColumnTest), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = RowTestDetails; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.RowTestDetails") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut text__ = None; - let mut column_test__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Text => { - if text__.is_some() { - return Err(serde::de::Error::duplicate_field("text")); - } - text__ = Some(map_.next_value()?); - } - GeneratedField::ColumnTest => { - if column_test__.is_some() { - return Err(serde::de::Error::duplicate_field("columnTest")); - } - column_test__ = map_.next_value()?; - } - } - } - Ok(RowTestDetails { - text: text__.unwrap_or_default(), - column_test: column_test__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.RowTestDetails", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Seed { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if !self.file_path.is_empty() { - len += 1; - } - if !self.file_sha256_hash.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Seed", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.file_sha256_hash.is_empty() { - struct_ser.serialize_field("fileSha256Hash", &self.file_sha256_hash)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Seed { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "file_path", - "filePath", - "file_sha256_hash", - "fileSha256Hash", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - FilePath, - FileSha256Hash, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "fileSha256Hash" | "file_sha256_hash" => Ok(GeneratedField::FileSha256Hash), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Seed; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Seed") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut file_path__ = None; - let mut file_sha256_hash__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::FileSha256Hash => { - if file_sha256_hash__.is_some() { - return Err(serde::de::Error::duplicate_field("fileSha256Hash")); - } - file_sha256_hash__ = Some(map_.next_value()?); - } - } - } - Ok(Seed { - name: name__.unwrap_or_default(), - file_path: file_path__.unwrap_or_default(), - file_sha256_hash: file_sha256_hash__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Seed", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Snapshot { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - if !self.tags.is_empty() { - len += 1; - } - if !self.file_path.is_empty() { - len += 1; - } - if !self.file_sha256_hash.is_empty() { - len += 1; - } - if !self.unique_key.is_empty() { - len += 1; - } - if self.strategy.is_some() { - len += 1; - } - if !self.references.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Snapshot", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - if !self.tags.is_empty() { - struct_ser.serialize_field("tags", &self.tags)?; - } - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.file_sha256_hash.is_empty() { - struct_ser.serialize_field("fileSha256Hash", &self.file_sha256_hash)?; - } - if !self.unique_key.is_empty() { - struct_ser.serialize_field("uniqueKey", &self.unique_key)?; - } - if let Some(v) = self.strategy.as_ref() { - struct_ser.serialize_field("strategy", v)?; - } - if !self.references.is_empty() { - struct_ser.serialize_field("references", &self.references)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Snapshot { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "description", - "tags", - "file_path", - "filePath", - "file_sha256_hash", - "fileSha256Hash", - "unique_key", - "uniqueKey", - "strategy", - "references", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Description, - Tags, - FilePath, - FileSha256Hash, - UniqueKey, - Strategy, - References, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "description" => Ok(GeneratedField::Description), - "tags" => Ok(GeneratedField::Tags), - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "fileSha256Hash" | "file_sha256_hash" => Ok(GeneratedField::FileSha256Hash), - "uniqueKey" | "unique_key" => Ok(GeneratedField::UniqueKey), - "strategy" => Ok(GeneratedField::Strategy), - "references" => Ok(GeneratedField::References), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Snapshot; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Snapshot") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut description__ = None; - let mut tags__ = None; - let mut file_path__ = None; - let mut file_sha256_hash__ = None; - let mut unique_key__ = None; - let mut strategy__ = None; - let mut references__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - GeneratedField::Tags => { - if tags__.is_some() { - return Err(serde::de::Error::duplicate_field("tags")); - } - tags__ = Some(map_.next_value()?); - } - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::FileSha256Hash => { - if file_sha256_hash__.is_some() { - return Err(serde::de::Error::duplicate_field("fileSha256Hash")); - } - file_sha256_hash__ = Some(map_.next_value()?); - } - GeneratedField::UniqueKey => { - if unique_key__.is_some() { - return Err(serde::de::Error::duplicate_field("uniqueKey")); - } - unique_key__ = Some(map_.next_value()?); - } - GeneratedField::Strategy => { - if strategy__.is_some() { - return Err(serde::de::Error::duplicate_field("strategy")); - } - strategy__ = map_.next_value()?; - } - GeneratedField::References => { - if references__.is_some() { - return Err(serde::de::Error::duplicate_field("references")); - } - references__ = Some(map_.next_value()?); - } - } - } - Ok(Snapshot { - name: name__.unwrap_or_default(), - description: description__, - tags: tags__.unwrap_or_default(), - file_path: file_path__.unwrap_or_default(), - file_sha256_hash: file_sha256_hash__.unwrap_or_default(), - unique_key: unique_key__.unwrap_or_default(), - strategy: strategy__, - references: references__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Snapshot", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for snapshot::SnapshotStrategy { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.strategy_type.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Snapshot.SnapshotStrategy", len)?; - if let Some(v) = self.strategy_type.as_ref() { - match v { - snapshot::snapshot_strategy::StrategyType::Timestamp(v) => { - struct_ser.serialize_field("timestamp", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for snapshot::SnapshotStrategy { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "timestamp", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Timestamp, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "timestamp" => Ok(GeneratedField::Timestamp), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = snapshot::SnapshotStrategy; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Snapshot.SnapshotStrategy") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut strategy_type__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Timestamp => { - if strategy_type__.is_some() { - return Err(serde::de::Error::duplicate_field("timestamp")); - } - strategy_type__ = map_.next_value::<::std::option::Option<_>>()?.map(snapshot::snapshot_strategy::StrategyType::Timestamp) -; - } - } - } - Ok(snapshot::SnapshotStrategy { - strategy_type: strategy_type__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Snapshot.SnapshotStrategy", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for snapshot::snapshot_strategy::TimestampStrategy { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.updated_at.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy", len)?; - if !self.updated_at.is_empty() { - struct_ser.serialize_field("updatedAt", &self.updated_at)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for snapshot::snapshot_strategy::TimestampStrategy { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "updated_at", - "updatedAt", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - UpdatedAt, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "updatedAt" | "updated_at" => Ok(GeneratedField::UpdatedAt), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = snapshot::snapshot_strategy::TimestampStrategy; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut updated_at__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::UpdatedAt => { - if updated_at__.is_some() { - return Err(serde::de::Error::duplicate_field("updatedAt")); - } - updated_at__ = Some(map_.next_value()?); - } - } - } - Ok(snapshot::snapshot_strategy::TimestampStrategy { - updated_at: updated_at__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Snapshot.SnapshotStrategy.TimestampStrategy", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Source { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.tags.is_empty() { - len += 1; - } - if !self.file_path.is_empty() { - len += 1; - } - if !self.columns.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Source", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.tags.is_empty() { - struct_ser.serialize_field("tags", &self.tags)?; - } - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.columns.is_empty() { - struct_ser.serialize_field("columns", &self.columns)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Source { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "description", - "path", - "tags", - "file_path", - "filePath", - "columns", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Description, - Path, - Tags, - FilePath, - Columns, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "description" => Ok(GeneratedField::Description), - "path" => Ok(GeneratedField::Path), - "tags" => Ok(GeneratedField::Tags), - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "columns" => Ok(GeneratedField::Columns), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Source; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Source") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut description__ = None; - let mut path__ = None; - let mut tags__ = None; - let mut file_path__ = None; - let mut columns__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Tags => { - if tags__.is_some() { - return Err(serde::de::Error::duplicate_field("tags")); - } - tags__ = Some(map_.next_value()?); - } - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Columns => { - if columns__.is_some() { - return Err(serde::de::Error::duplicate_field("columns")); - } - columns__ = Some(map_.next_value()?); - } - } - } - Ok(Source { - name: name__.unwrap_or_default(), - description: description__, - path: path__.unwrap_or_default(), - tags: tags__.unwrap_or_default(), - file_path: file_path__.unwrap_or_default(), - columns: columns__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Source", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for source::SourceColumn { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.title.is_empty() { - len += 1; - } - if self.description.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Source.SourceColumn", len)?; - if !self.title.is_empty() { - struct_ser.serialize_field("title", &self.title)?; - } - if let Some(v) = self.description.as_ref() { - struct_ser.serialize_field("description", v)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for source::SourceColumn { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "title", - "description", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Title, - Description, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "title" => Ok(GeneratedField::Title), - "description" => Ok(GeneratedField::Description), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = source::SourceColumn; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Source.SourceColumn") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut title__ = None; - let mut description__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Title => { - if title__.is_some() { - return Err(serde::de::Error::duplicate_field("title")); - } - title__ = Some(map_.next_value()?); - } - GeneratedField::Description => { - if description__.is_some() { - return Err(serde::de::Error::duplicate_field("description")); - } - description__ = map_.next_value()?; - } - } - } - Ok(source::SourceColumn { - title: title__.unwrap_or_default(), - description: description__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Source.SourceColumn", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Table { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.table_type.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Table", len)?; - if let Some(v) = self.table_type.as_ref() { - match v { - table::TableType::Present(v) => { - struct_ser.serialize_field("present", v)?; - } - table::TableType::NotPresent(v) => { - struct_ser.serialize_field("notPresent", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Table { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "present", - "not_present", - "notPresent", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Present, - NotPresent, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "present" => Ok(GeneratedField::Present), - "notPresent" | "not_present" => Ok(GeneratedField::NotPresent), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Table; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Table") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut table_type__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Present => { - if table_type__.is_some() { - return Err(serde::de::Error::duplicate_field("present")); - } - table_type__ = map_.next_value::<::std::option::Option<_>>()?.map(table::TableType::Present) -; - } - GeneratedField::NotPresent => { - if table_type__.is_some() { - return Err(serde::de::Error::duplicate_field("notPresent")); - } - table_type__ = map_.next_value::<::std::option::Option<_>>()?.map(table::TableType::NotPresent) -; - } - } - } - Ok(Table { - table_type: table_type__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Table", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for table::NotPresentInSchema { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.rows.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Table.NotPresentInSchema", len)?; - if !self.rows.is_empty() { - struct_ser.serialize_field("rows", &self.rows)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for table::NotPresentInSchema { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "rows", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Rows, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "rows" => Ok(GeneratedField::Rows), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = table::NotPresentInSchema; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Table.NotPresentInSchema") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut rows__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Rows => { - if rows__.is_some() { - return Err(serde::de::Error::duplicate_field("rows")); - } - rows__ = Some(map_.next_value()?); - } - } - } - Ok(table::NotPresentInSchema { - rows: rows__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Table.NotPresentInSchema", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for table::PresentInSchema { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.rows.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Table.PresentInSchema", len)?; - if !self.rows.is_empty() { - struct_ser.serialize_field("rows", &self.rows)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for table::PresentInSchema { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "rows", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Rows, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "rows" => Ok(GeneratedField::Rows), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = table::PresentInSchema; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Table.PresentInSchema") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut rows__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Rows => { - if rows__.is_some() { - return Err(serde::de::Error::duplicate_field("rows")); - } - rows__ = Some(map_.next_value()?); - } - } - } - Ok(table::PresentInSchema { - rows: rows__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Table.PresentInSchema", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for table::present_in_schema::PresentRow { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.row.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Table.PresentInSchema.PresentRow", len)?; - if let Some(v) = self.row.as_ref() { - match v { - table::present_in_schema::present_row::Row::PresentInSqlAndDefinitions(v) => { - struct_ser.serialize_field("presentInSqlAndDefinitions", v)?; - } - table::present_in_schema::present_row::Row::MissingInDefinitions(v) => { - struct_ser.serialize_field("missingInDefinitions", v)?; - } - table::present_in_schema::present_row::Row::PresentInDefinitionsButNotRecognisableInSql(v) => { - struct_ser.serialize_field("presentInDefinitionsButNotRecognisableInSql", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for table::present_in_schema::PresentRow { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "present_in_sql_and_definitions", - "presentInSqlAndDefinitions", - "missing_in_definitions", - "missingInDefinitions", - "present_in_definitions_but_not_recognisable_in_sql", - "presentInDefinitionsButNotRecognisableInSql", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - PresentInSqlAndDefinitions, - MissingInDefinitions, - PresentInDefinitionsButNotRecognisableInSql, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "presentInSqlAndDefinitions" | "present_in_sql_and_definitions" => Ok(GeneratedField::PresentInSqlAndDefinitions), - "missingInDefinitions" | "missing_in_definitions" => Ok(GeneratedField::MissingInDefinitions), - "presentInDefinitionsButNotRecognisableInSql" | "present_in_definitions_but_not_recognisable_in_sql" => Ok(GeneratedField::PresentInDefinitionsButNotRecognisableInSql), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = table::present_in_schema::PresentRow; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Table.PresentInSchema.PresentRow") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut row__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::PresentInSqlAndDefinitions => { - if row__.is_some() { - return Err(serde::de::Error::duplicate_field("presentInSqlAndDefinitions")); - } - row__ = map_.next_value::<::std::option::Option<_>>()?.map(table::present_in_schema::present_row::Row::PresentInSqlAndDefinitions) -; - } - GeneratedField::MissingInDefinitions => { - if row__.is_some() { - return Err(serde::de::Error::duplicate_field("missingInDefinitions")); - } - row__ = map_.next_value::<::std::option::Option<_>>()?.map(table::present_in_schema::present_row::Row::MissingInDefinitions) -; - } - GeneratedField::PresentInDefinitionsButNotRecognisableInSql => { - if row__.is_some() { - return Err(serde::de::Error::duplicate_field("presentInDefinitionsButNotRecognisableInSql")); - } - row__ = map_.next_value::<::std::option::Option<_>>()?.map(table::present_in_schema::present_row::Row::PresentInDefinitionsButNotRecognisableInSql) -; - } - } - } - Ok(table::present_in_schema::PresentRow { - row: row__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Table.PresentInSchema.PresentRow", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TableAddress { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if !self.full_path.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TableAddress", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if !self.full_path.is_empty() { - struct_ser.serialize_field("fullPath", &self.full_path)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TableAddress { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "full_path", - "fullPath", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - FullPath, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "fullPath" | "full_path" => Ok(GeneratedField::FullPath), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TableAddress; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TableAddress") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut full_path__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::FullPath => { - if full_path__.is_some() { - return Err(serde::de::Error::duplicate_field("fullPath")); - } - full_path__ = Some(map_.next_value()?); - } - } - } - Ok(TableAddress { - name: name__.unwrap_or_default(), - full_path: full_path__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TableAddress", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Test { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.test_type.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Test", len)?; - if let Some(v) = self.test_type.as_ref() { - match v { - test::TestType::Sql(v) => { - struct_ser.serialize_field("sql", v)?; - } - test::TestType::Unique(v) => { - struct_ser.serialize_field("unique", v)?; - } - test::TestType::NotNull(v) => { - struct_ser.serialize_field("notNull", v)?; - } - test::TestType::Relationship(v) => { - struct_ser.serialize_field("relationship", v)?; - } - test::TestType::AcceptedValues(v) => { - struct_ser.serialize_field("acceptedValues", v)?; - } - test::TestType::GreaterThanOrEqual(v) => { - struct_ser.serialize_field("greaterThanOrEqual", v)?; - } - test::TestType::LessThanOrEqual(v) => { - struct_ser.serialize_field("lessThanOrEqual", v)?; - } - test::TestType::GreaterThan(v) => { - struct_ser.serialize_field("greaterThan", v)?; - } - test::TestType::LessThan(v) => { - struct_ser.serialize_field("lessThan", v)?; - } - test::TestType::MultiColumnUnique(v) => { - struct_ser.serialize_field("multiColumnUnique", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Test { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "sql", - "unique", - "not_null", - "notNull", - "relationship", - "accepted_values", - "acceptedValues", - "greater_than_or_equal", - "greaterThanOrEqual", - "less_than_or_equal", - "lessThanOrEqual", - "greater_than", - "greaterThan", - "less_than", - "lessThan", - "multi_column_unique", - "multiColumnUnique", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Sql, - Unique, - NotNull, - Relationship, - AcceptedValues, - GreaterThanOrEqual, - LessThanOrEqual, - GreaterThan, - LessThan, - MultiColumnUnique, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "sql" => Ok(GeneratedField::Sql), - "unique" => Ok(GeneratedField::Unique), - "notNull" | "not_null" => Ok(GeneratedField::NotNull), - "relationship" => Ok(GeneratedField::Relationship), - "acceptedValues" | "accepted_values" => Ok(GeneratedField::AcceptedValues), - "greaterThanOrEqual" | "greater_than_or_equal" => Ok(GeneratedField::GreaterThanOrEqual), - "lessThanOrEqual" | "less_than_or_equal" => Ok(GeneratedField::LessThanOrEqual), - "greaterThan" | "greater_than" => Ok(GeneratedField::GreaterThan), - "lessThan" | "less_than" => Ok(GeneratedField::LessThan), - "multiColumnUnique" | "multi_column_unique" => Ok(GeneratedField::MultiColumnUnique), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Test; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Test") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut test_type__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Sql => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("sql")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::Sql) -; - } - GeneratedField::Unique => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("unique")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::Unique) -; - } - GeneratedField::NotNull => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("notNull")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::NotNull) -; - } - GeneratedField::Relationship => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("relationship")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::Relationship) -; - } - GeneratedField::AcceptedValues => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("acceptedValues")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::AcceptedValues) -; - } - GeneratedField::GreaterThanOrEqual => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("greaterThanOrEqual")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::GreaterThanOrEqual) -; - } - GeneratedField::LessThanOrEqual => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("lessThanOrEqual")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::LessThanOrEqual) -; - } - GeneratedField::GreaterThan => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("greaterThan")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::GreaterThan) -; - } - GeneratedField::LessThan => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("lessThan")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::LessThan) -; - } - GeneratedField::MultiColumnUnique => { - if test_type__.is_some() { - return Err(serde::de::Error::duplicate_field("multiColumnUnique")); - } - test_type__ = map_.next_value::<::std::option::Option<_>>()?.map(test::TestType::MultiColumnUnique) -; - } - } - } - Ok(Test { - test_type: test_type__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Test", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestAcceptedValues { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.model.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.column.is_empty() { - len += 1; - } - if !self.accepted_values.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestAcceptedValues", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.model.is_empty() { - struct_ser.serialize_field("model", &self.model)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.column.is_empty() { - struct_ser.serialize_field("column", &self.column)?; - } - if !self.accepted_values.is_empty() { - struct_ser.serialize_field("acceptedValues", &self.accepted_values)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestAcceptedValues { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "model", - "path", - "column", - "accepted_values", - "acceptedValues", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - Model, - Path, - Column, - AcceptedValues, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "model" => Ok(GeneratedField::Model), - "path" => Ok(GeneratedField::Path), - "column" => Ok(GeneratedField::Column), - "acceptedValues" | "accepted_values" => Ok(GeneratedField::AcceptedValues), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestAcceptedValues; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestAcceptedValues") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut model__ = None; - let mut path__ = None; - let mut column__ = None; - let mut accepted_values__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Model => { - if model__.is_some() { - return Err(serde::de::Error::duplicate_field("model")); - } - model__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Column => { - if column__.is_some() { - return Err(serde::de::Error::duplicate_field("column")); - } - column__ = Some(map_.next_value()?); - } - GeneratedField::AcceptedValues => { - if accepted_values__.is_some() { - return Err(serde::de::Error::duplicate_field("acceptedValues")); - } - accepted_values__ = Some(map_.next_value()?); - } - } - } - Ok(TestAcceptedValues { - file_path: file_path__.unwrap_or_default(), - model: model__.unwrap_or_default(), - path: path__.unwrap_or_default(), - column: column__.unwrap_or_default(), - accepted_values: accepted_values__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestAcceptedValues", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestGreaterThan { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.model.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.column.is_empty() { - len += 1; - } - if !self.value.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestGreaterThan", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.model.is_empty() { - struct_ser.serialize_field("model", &self.model)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.column.is_empty() { - struct_ser.serialize_field("column", &self.column)?; - } - if !self.value.is_empty() { - struct_ser.serialize_field("value", &self.value)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestGreaterThan { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "model", - "path", - "column", - "value", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - Model, - Path, - Column, - Value, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "model" => Ok(GeneratedField::Model), - "path" => Ok(GeneratedField::Path), - "column" => Ok(GeneratedField::Column), - "value" => Ok(GeneratedField::Value), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestGreaterThan; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestGreaterThan") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut model__ = None; - let mut path__ = None; - let mut column__ = None; - let mut value__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Model => { - if model__.is_some() { - return Err(serde::de::Error::duplicate_field("model")); - } - model__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Column => { - if column__.is_some() { - return Err(serde::de::Error::duplicate_field("column")); - } - column__ = Some(map_.next_value()?); - } - GeneratedField::Value => { - if value__.is_some() { - return Err(serde::de::Error::duplicate_field("value")); - } - value__ = Some(map_.next_value()?); - } - } - } - Ok(TestGreaterThan { - file_path: file_path__.unwrap_or_default(), - model: model__.unwrap_or_default(), - path: path__.unwrap_or_default(), - column: column__.unwrap_or_default(), - value: value__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestGreaterThan", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestGreaterThanOrEqual { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.model.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.column.is_empty() { - len += 1; - } - if !self.value.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestGreaterThanOrEqual", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.model.is_empty() { - struct_ser.serialize_field("model", &self.model)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.column.is_empty() { - struct_ser.serialize_field("column", &self.column)?; - } - if !self.value.is_empty() { - struct_ser.serialize_field("value", &self.value)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestGreaterThanOrEqual { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "model", - "path", - "column", - "value", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - Model, - Path, - Column, - Value, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "model" => Ok(GeneratedField::Model), - "path" => Ok(GeneratedField::Path), - "column" => Ok(GeneratedField::Column), - "value" => Ok(GeneratedField::Value), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestGreaterThanOrEqual; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestGreaterThanOrEqual") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut model__ = None; - let mut path__ = None; - let mut column__ = None; - let mut value__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Model => { - if model__.is_some() { - return Err(serde::de::Error::duplicate_field("model")); - } - model__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Column => { - if column__.is_some() { - return Err(serde::de::Error::duplicate_field("column")); - } - column__ = Some(map_.next_value()?); - } - GeneratedField::Value => { - if value__.is_some() { - return Err(serde::de::Error::duplicate_field("value")); - } - value__ = Some(map_.next_value()?); - } - } - } - Ok(TestGreaterThanOrEqual { - file_path: file_path__.unwrap_or_default(), - model: model__.unwrap_or_default(), - path: path__.unwrap_or_default(), - column: column__.unwrap_or_default(), - value: value__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestGreaterThanOrEqual", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestLessThan { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.model.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.column.is_empty() { - len += 1; - } - if !self.value.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestLessThan", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.model.is_empty() { - struct_ser.serialize_field("model", &self.model)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.column.is_empty() { - struct_ser.serialize_field("column", &self.column)?; - } - if !self.value.is_empty() { - struct_ser.serialize_field("value", &self.value)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestLessThan { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "model", - "path", - "column", - "value", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - Model, - Path, - Column, - Value, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "model" => Ok(GeneratedField::Model), - "path" => Ok(GeneratedField::Path), - "column" => Ok(GeneratedField::Column), - "value" => Ok(GeneratedField::Value), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestLessThan; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestLessThan") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut model__ = None; - let mut path__ = None; - let mut column__ = None; - let mut value__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Model => { - if model__.is_some() { - return Err(serde::de::Error::duplicate_field("model")); - } - model__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Column => { - if column__.is_some() { - return Err(serde::de::Error::duplicate_field("column")); - } - column__ = Some(map_.next_value()?); - } - GeneratedField::Value => { - if value__.is_some() { - return Err(serde::de::Error::duplicate_field("value")); - } - value__ = Some(map_.next_value()?); - } - } - } - Ok(TestLessThan { - file_path: file_path__.unwrap_or_default(), - model: model__.unwrap_or_default(), - path: path__.unwrap_or_default(), - column: column__.unwrap_or_default(), - value: value__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestLessThan", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestLessThanOrEqual { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.model.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.column.is_empty() { - len += 1; - } - if !self.value.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestLessThanOrEqual", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.model.is_empty() { - struct_ser.serialize_field("model", &self.model)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.column.is_empty() { - struct_ser.serialize_field("column", &self.column)?; - } - if !self.value.is_empty() { - struct_ser.serialize_field("value", &self.value)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestLessThanOrEqual { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "model", - "path", - "column", - "value", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - Model, - Path, - Column, - Value, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "model" => Ok(GeneratedField::Model), - "path" => Ok(GeneratedField::Path), - "column" => Ok(GeneratedField::Column), - "value" => Ok(GeneratedField::Value), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestLessThanOrEqual; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestLessThanOrEqual") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut model__ = None; - let mut path__ = None; - let mut column__ = None; - let mut value__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Model => { - if model__.is_some() { - return Err(serde::de::Error::duplicate_field("model")); - } - model__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Column => { - if column__.is_some() { - return Err(serde::de::Error::duplicate_field("column")); - } - column__ = Some(map_.next_value()?); - } - GeneratedField::Value => { - if value__.is_some() { - return Err(serde::de::Error::duplicate_field("value")); - } - value__ = Some(map_.next_value()?); - } - } - } - Ok(TestLessThanOrEqual { - file_path: file_path__.unwrap_or_default(), - model: model__.unwrap_or_default(), - path: path__.unwrap_or_default(), - column: column__.unwrap_or_default(), - value: value__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestLessThanOrEqual", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestMultiColumnUnique { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.model.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.columns.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestMultiColumnUnique", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.model.is_empty() { - struct_ser.serialize_field("model", &self.model)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.columns.is_empty() { - struct_ser.serialize_field("columns", &self.columns)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestMultiColumnUnique { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "model", - "path", - "columns", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - Model, - Path, - Columns, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "model" => Ok(GeneratedField::Model), - "path" => Ok(GeneratedField::Path), - "columns" => Ok(GeneratedField::Columns), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestMultiColumnUnique; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestMultiColumnUnique") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut model__ = None; - let mut path__ = None; - let mut columns__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Model => { - if model__.is_some() { - return Err(serde::de::Error::duplicate_field("model")); - } - model__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Columns => { - if columns__.is_some() { - return Err(serde::de::Error::duplicate_field("columns")); - } - columns__ = Some(map_.next_value()?); - } - } - } - Ok(TestMultiColumnUnique { - file_path: file_path__.unwrap_or_default(), - model: model__.unwrap_or_default(), - path: path__.unwrap_or_default(), - columns: columns__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestMultiColumnUnique", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestNotNull { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.model.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.column.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestNotNull", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.model.is_empty() { - struct_ser.serialize_field("model", &self.model)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.column.is_empty() { - struct_ser.serialize_field("column", &self.column)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestNotNull { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "model", - "path", - "column", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - Model, - Path, - Column, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "model" => Ok(GeneratedField::Model), - "path" => Ok(GeneratedField::Path), - "column" => Ok(GeneratedField::Column), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestNotNull; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestNotNull") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut model__ = None; - let mut path__ = None; - let mut column__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Model => { - if model__.is_some() { - return Err(serde::de::Error::duplicate_field("model")); - } - model__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Column => { - if column__.is_some() { - return Err(serde::de::Error::duplicate_field("column")); - } - column__ = Some(map_.next_value()?); - } - } - } - Ok(TestNotNull { - file_path: file_path__.unwrap_or_default(), - model: model__.unwrap_or_default(), - path: path__.unwrap_or_default(), - column: column__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestNotNull", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestRelationship { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.source_model.is_empty() { - len += 1; - } - if !self.source_path.is_empty() { - len += 1; - } - if !self.source_column.is_empty() { - len += 1; - } - if !self.target_model.is_empty() { - len += 1; - } - if !self.target_path.is_empty() { - len += 1; - } - if !self.target_column.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestRelationship", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.source_model.is_empty() { - struct_ser.serialize_field("sourceModel", &self.source_model)?; - } - if !self.source_path.is_empty() { - struct_ser.serialize_field("sourcePath", &self.source_path)?; - } - if !self.source_column.is_empty() { - struct_ser.serialize_field("sourceColumn", &self.source_column)?; - } - if !self.target_model.is_empty() { - struct_ser.serialize_field("targetModel", &self.target_model)?; - } - if !self.target_path.is_empty() { - struct_ser.serialize_field("targetPath", &self.target_path)?; - } - if !self.target_column.is_empty() { - struct_ser.serialize_field("targetColumn", &self.target_column)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestRelationship { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "source_model", - "sourceModel", - "source_path", - "sourcePath", - "source_column", - "sourceColumn", - "target_model", - "targetModel", - "target_path", - "targetPath", - "target_column", - "targetColumn", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - SourceModel, - SourcePath, - SourceColumn, - TargetModel, - TargetPath, - TargetColumn, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "sourceModel" | "source_model" => Ok(GeneratedField::SourceModel), - "sourcePath" | "source_path" => Ok(GeneratedField::SourcePath), - "sourceColumn" | "source_column" => Ok(GeneratedField::SourceColumn), - "targetModel" | "target_model" => Ok(GeneratedField::TargetModel), - "targetPath" | "target_path" => Ok(GeneratedField::TargetPath), - "targetColumn" | "target_column" => Ok(GeneratedField::TargetColumn), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestRelationship; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestRelationship") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut source_model__ = None; - let mut source_path__ = None; - let mut source_column__ = None; - let mut target_model__ = None; - let mut target_path__ = None; - let mut target_column__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::SourceModel => { - if source_model__.is_some() { - return Err(serde::de::Error::duplicate_field("sourceModel")); - } - source_model__ = Some(map_.next_value()?); - } - GeneratedField::SourcePath => { - if source_path__.is_some() { - return Err(serde::de::Error::duplicate_field("sourcePath")); - } - source_path__ = Some(map_.next_value()?); - } - GeneratedField::SourceColumn => { - if source_column__.is_some() { - return Err(serde::de::Error::duplicate_field("sourceColumn")); - } - source_column__ = Some(map_.next_value()?); - } - GeneratedField::TargetModel => { - if target_model__.is_some() { - return Err(serde::de::Error::duplicate_field("targetModel")); - } - target_model__ = Some(map_.next_value()?); - } - GeneratedField::TargetPath => { - if target_path__.is_some() { - return Err(serde::de::Error::duplicate_field("targetPath")); - } - target_path__ = Some(map_.next_value()?); - } - GeneratedField::TargetColumn => { - if target_column__.is_some() { - return Err(serde::de::Error::duplicate_field("targetColumn")); - } - target_column__ = Some(map_.next_value()?); - } - } - } - Ok(TestRelationship { - file_path: file_path__.unwrap_or_default(), - source_model: source_model__.unwrap_or_default(), - source_path: source_path__.unwrap_or_default(), - source_column: source_column__.unwrap_or_default(), - target_model: target_model__.unwrap_or_default(), - target_path: target_path__.unwrap_or_default(), - target_column: target_column__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestRelationship", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestResult { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.test_name.is_empty() { - len += 1; - } - if !self.query.is_empty() { - len += 1; - } - if self.test_result.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestResult", len)?; - if !self.test_name.is_empty() { - struct_ser.serialize_field("testName", &self.test_name)?; - } - if !self.query.is_empty() { - struct_ser.serialize_field("query", &self.query)?; - } - if let Some(v) = self.test_result.as_ref() { - match v { - test_result::TestResult::Passed(v) => { - struct_ser.serialize_field("passed", v)?; - } - test_result::TestResult::Failed(v) => { - struct_ser.serialize_field("failed", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestResult { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "test_name", - "testName", - "query", - "passed", - "failed", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - TestName, - Query, - Passed, - Failed, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "testName" | "test_name" => Ok(GeneratedField::TestName), - "query" => Ok(GeneratedField::Query), - "passed" => Ok(GeneratedField::Passed), - "failed" => Ok(GeneratedField::Failed), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestResult; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestResult") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut test_name__ = None; - let mut query__ = None; - let mut test_result__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::TestName => { - if test_name__.is_some() { - return Err(serde::de::Error::duplicate_field("testName")); - } - test_name__ = Some(map_.next_value()?); - } - GeneratedField::Query => { - if query__.is_some() { - return Err(serde::de::Error::duplicate_field("query")); - } - query__ = Some(map_.next_value()?); - } - GeneratedField::Passed => { - if test_result__.is_some() { - return Err(serde::de::Error::duplicate_field("passed")); - } - test_result__ = map_.next_value::<::std::option::Option<_>>()?.map(test_result::TestResult::Passed) -; - } - GeneratedField::Failed => { - if test_result__.is_some() { - return Err(serde::de::Error::duplicate_field("failed")); - } - test_result__ = map_.next_value::<::std::option::Option<_>>()?.map(test_result::TestResult::Failed) -; - } - } - } - Ok(TestResult { - test_name: test_name__.unwrap_or_default(), - query: query__.unwrap_or_default(), - test_result: test_result__, - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestResult", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestResults { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.results.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestResults", len)?; - if !self.results.is_empty() { - struct_ser.serialize_field("results", &self.results)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestResults { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "results", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Results, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "results" => Ok(GeneratedField::Results), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestResults; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestResults") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut results__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Results => { - if results__.is_some() { - return Err(serde::de::Error::duplicate_field("results")); - } - results__ = Some(map_.next_value()?); - } - } - } - Ok(TestResults { - results: results__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestResults", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestRunner { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - let variant = match self { - Self::Unspecified => "TEST_RUNNER_UNSPECIFIED", - Self::All => "TEST_RUNNER_ALL", - Self::Skip => "TEST_RUNNER_SKIP", - }; - serializer.serialize_str(variant) - } -} -impl<'de> serde::Deserialize<'de> for TestRunner { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "TEST_RUNNER_UNSPECIFIED", - "TEST_RUNNER_ALL", - "TEST_RUNNER_SKIP", - ]; - - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestRunner; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - fn visit_i64(self, v: i64) -> std::result::Result - where - E: serde::de::Error, - { - i32::try_from(v) - .ok() - .and_then(|x| x.try_into().ok()) - .ok_or_else(|| { - serde::de::Error::invalid_value(serde::de::Unexpected::Signed(v), &self) - }) - } - - fn visit_u64(self, v: u64) -> std::result::Result - where - E: serde::de::Error, - { - i32::try_from(v) - .ok() - .and_then(|x| x.try_into().ok()) - .ok_or_else(|| { - serde::de::Error::invalid_value(serde::de::Unexpected::Unsigned(v), &self) - }) - } - - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "TEST_RUNNER_UNSPECIFIED" => Ok(TestRunner::Unspecified), - "TEST_RUNNER_ALL" => Ok(TestRunner::All), - "TEST_RUNNER_SKIP" => Ok(TestRunner::Skip), - _ => Err(serde::de::Error::unknown_variant(value, FIELDS)), - } - } - } - deserializer.deserialize_any(GeneratedVisitor) - } -} -impl serde::Serialize for TestSqlFile { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.references.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestSQLFile", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.references.is_empty() { - struct_ser.serialize_field("references", &self.references)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestSqlFile { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "references", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - References, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "references" => Ok(GeneratedField::References), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestSqlFile; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestSQLFile") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut references__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::References => { - if references__.is_some() { - return Err(serde::de::Error::duplicate_field("references")); - } - references__ = Some(map_.next_value()?); - } - } - } - Ok(TestSqlFile { - file_path: file_path__.unwrap_or_default(), - references: references__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestSQLFile", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for TestUnique { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.file_path.is_empty() { - len += 1; - } - if !self.model.is_empty() { - len += 1; - } - if !self.path.is_empty() { - len += 1; - } - if !self.column.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.TestUnique", len)?; - if !self.file_path.is_empty() { - struct_ser.serialize_field("filePath", &self.file_path)?; - } - if !self.model.is_empty() { - struct_ser.serialize_field("model", &self.model)?; - } - if !self.path.is_empty() { - struct_ser.serialize_field("path", &self.path)?; - } - if !self.column.is_empty() { - struct_ser.serialize_field("column", &self.column)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for TestUnique { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "file_path", - "filePath", - "model", - "path", - "column", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - FilePath, - Model, - Path, - Column, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "filePath" | "file_path" => Ok(GeneratedField::FilePath), - "model" => Ok(GeneratedField::Model), - "path" => Ok(GeneratedField::Path), - "column" => Ok(GeneratedField::Column), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = TestUnique; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.TestUnique") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut file_path__ = None; - let mut model__ = None; - let mut path__ = None; - let mut column__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::FilePath => { - if file_path__.is_some() { - return Err(serde::de::Error::duplicate_field("filePath")); - } - file_path__ = Some(map_.next_value()?); - } - GeneratedField::Model => { - if model__.is_some() { - return Err(serde::de::Error::duplicate_field("model")); - } - model__ = Some(map_.next_value()?); - } - GeneratedField::Path => { - if path__.is_some() { - return Err(serde::de::Error::duplicate_field("path")); - } - path__ = Some(map_.next_value()?); - } - GeneratedField::Column => { - if column__.is_some() { - return Err(serde::de::Error::duplicate_field("column")); - } - column__ = Some(map_.next_value()?); - } - } - } - Ok(TestUnique { - file_path: file_path__.unwrap_or_default(), - model: model__.unwrap_or_default(), - path: path__.unwrap_or_default(), - column: column__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.TestUnique", FIELDS, GeneratedVisitor) - } -} -impl serde::Serialize for Var { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if !self.name.is_empty() { - len += 1; - } - if !self.value.is_empty() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("quary.service.v1.Var", len)?; - if !self.name.is_empty() { - struct_ser.serialize_field("name", &self.name)?; - } - if !self.value.is_empty() { - struct_ser.serialize_field("value", &self.value)?; - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for Var { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "name", - "value", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Name, - Value, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "name" => Ok(GeneratedField::Name), - "value" => Ok(GeneratedField::Value), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = Var; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct quary.service.v1.Var") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut name__ = None; - let mut value__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Name => { - if name__.is_some() { - return Err(serde::de::Error::duplicate_field("name")); - } - name__ = Some(map_.next_value()?); - } - GeneratedField::Value => { - if value__.is_some() { - return Err(serde::de::Error::duplicate_field("value")); - } - value__ = Some(map_.next_value()?); - } - } - } - Ok(Var { - name: name__.unwrap_or_default(), - value: value__.unwrap_or_default(), - }) - } - } - deserializer.deserialize_struct("quary.service.v1.Var", FIELDS, GeneratedVisitor) - } -} diff --git a/proto/gen/ts/google/protobuf/empty.ts b/proto/gen/ts/google/protobuf/empty.ts deleted file mode 100644 index 02f214cf..00000000 --- a/proto/gen/ts/google/protobuf/empty.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "google.protobuf"; - -/** - * A generic empty message that you can re-use to avoid defining duplicated - * empty messages in your APIs. A typical example is to use it as the request - * or the response type of an API method. For instance: - * - * service Foo { - * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); - * } - */ -export interface Empty { -} - -function createBaseEmpty(): Empty { - return {}; -} - -export const Empty = { - encode(_: Empty, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Empty { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseEmpty(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): Empty { - return {}; - }, - - toJSON(_: Empty): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): Empty { - return Empty.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): Empty { - const message = createBaseEmpty(); - return message; - }, -}; - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; diff --git a/proto/gen/ts/quary/service/v1/cli_rpc_calls.ts b/proto/gen/ts/quary/service/v1/cli_rpc_calls.ts deleted file mode 100644 index 49f81f55..00000000 --- a/proto/gen/ts/quary/service/v1/cli_rpc_calls.ts +++ /dev/null @@ -1,783 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; -import { ProjectFileSource } from "./project_file"; -import { QueryResult } from "./query_result"; -import { TableAddress } from "./table_address"; - -export const protobufPackage = "quary.service.v1"; - -export interface ListTablesRequest { -} - -export interface ListTablesResponse { - tables: TableAddress[]; -} - -export interface ListViewsRequest { -} - -export interface ListViewsResponse { - views: TableAddress[]; -} - -export interface ExecRequest { - query: string; -} - -export interface ExecResponse { -} - -export interface QueryRequest { - query: string; -} - -export interface QueryResponse { - result: QueryResult | undefined; -} - -export interface ListColumnsRequest { - tableName: string; -} - -export interface ListColumnsResponse { - columns: string[]; -} - -export interface ListSourcesRequest { -} - -export interface ListSourcesResponse { - sources: ProjectFileSource[]; -} - -function createBaseListTablesRequest(): ListTablesRequest { - return {}; -} - -export const ListTablesRequest = { - encode(_: ListTablesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListTablesRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListTablesRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): ListTablesRequest { - return {}; - }, - - toJSON(_: ListTablesRequest): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): ListTablesRequest { - return ListTablesRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): ListTablesRequest { - const message = createBaseListTablesRequest(); - return message; - }, -}; - -function createBaseListTablesResponse(): ListTablesResponse { - return { tables: [] }; -} - -export const ListTablesResponse = { - encode(message: ListTablesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.tables) { - TableAddress.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListTablesResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListTablesResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.tables.push(TableAddress.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListTablesResponse { - return { tables: gt.Array.isArray(object?.tables) ? object.tables.map((e: any) => TableAddress.fromJSON(e)) : [] }; - }, - - toJSON(message: ListTablesResponse): unknown { - const obj: any = {}; - if (message.tables?.length) { - obj.tables = message.tables.map((e) => TableAddress.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ListTablesResponse { - return ListTablesResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListTablesResponse { - const message = createBaseListTablesResponse(); - message.tables = object.tables?.map((e) => TableAddress.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseListViewsRequest(): ListViewsRequest { - return {}; -} - -export const ListViewsRequest = { - encode(_: ListViewsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListViewsRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListViewsRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): ListViewsRequest { - return {}; - }, - - toJSON(_: ListViewsRequest): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): ListViewsRequest { - return ListViewsRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): ListViewsRequest { - const message = createBaseListViewsRequest(); - return message; - }, -}; - -function createBaseListViewsResponse(): ListViewsResponse { - return { views: [] }; -} - -export const ListViewsResponse = { - encode(message: ListViewsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.views) { - TableAddress.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListViewsResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListViewsResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.views.push(TableAddress.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListViewsResponse { - return { views: gt.Array.isArray(object?.views) ? object.views.map((e: any) => TableAddress.fromJSON(e)) : [] }; - }, - - toJSON(message: ListViewsResponse): unknown { - const obj: any = {}; - if (message.views?.length) { - obj.views = message.views.map((e) => TableAddress.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ListViewsResponse { - return ListViewsResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListViewsResponse { - const message = createBaseListViewsResponse(); - message.views = object.views?.map((e) => TableAddress.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseExecRequest(): ExecRequest { - return { query: "" }; -} - -export const ExecRequest = { - encode(message: ExecRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.query !== "") { - writer.uint32(10).string(message.query); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ExecRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseExecRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.query = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ExecRequest { - return { query: isSet(object.query) ? gt.String(object.query) : "" }; - }, - - toJSON(message: ExecRequest): unknown { - const obj: any = {}; - if (message.query !== "") { - obj.query = message.query; - } - return obj; - }, - - create, I>>(base?: I): ExecRequest { - return ExecRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ExecRequest { - const message = createBaseExecRequest(); - message.query = object.query ?? ""; - return message; - }, -}; - -function createBaseExecResponse(): ExecResponse { - return {}; -} - -export const ExecResponse = { - encode(_: ExecResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ExecResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseExecResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): ExecResponse { - return {}; - }, - - toJSON(_: ExecResponse): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): ExecResponse { - return ExecResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): ExecResponse { - const message = createBaseExecResponse(); - return message; - }, -}; - -function createBaseQueryRequest(): QueryRequest { - return { query: "" }; -} - -export const QueryRequest = { - encode(message: QueryRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.query !== "") { - writer.uint32(10).string(message.query); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): QueryRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseQueryRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.query = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): QueryRequest { - return { query: isSet(object.query) ? gt.String(object.query) : "" }; - }, - - toJSON(message: QueryRequest): unknown { - const obj: any = {}; - if (message.query !== "") { - obj.query = message.query; - } - return obj; - }, - - create, I>>(base?: I): QueryRequest { - return QueryRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): QueryRequest { - const message = createBaseQueryRequest(); - message.query = object.query ?? ""; - return message; - }, -}; - -function createBaseQueryResponse(): QueryResponse { - return { result: undefined }; -} - -export const QueryResponse = { - encode(message: QueryResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.result !== undefined) { - QueryResult.encode(message.result, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): QueryResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseQueryResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.result = QueryResult.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): QueryResponse { - return { result: isSet(object.result) ? QueryResult.fromJSON(object.result) : undefined }; - }, - - toJSON(message: QueryResponse): unknown { - const obj: any = {}; - if (message.result !== undefined) { - obj.result = QueryResult.toJSON(message.result); - } - return obj; - }, - - create, I>>(base?: I): QueryResponse { - return QueryResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): QueryResponse { - const message = createBaseQueryResponse(); - message.result = (object.result !== undefined && object.result !== null) - ? QueryResult.fromPartial(object.result) - : undefined; - return message; - }, -}; - -function createBaseListColumnsRequest(): ListColumnsRequest { - return { tableName: "" }; -} - -export const ListColumnsRequest = { - encode(message: ListColumnsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.tableName !== "") { - writer.uint32(10).string(message.tableName); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListColumnsRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListColumnsRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.tableName = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListColumnsRequest { - return { tableName: isSet(object.tableName) ? gt.String(object.tableName) : "" }; - }, - - toJSON(message: ListColumnsRequest): unknown { - const obj: any = {}; - if (message.tableName !== "") { - obj.tableName = message.tableName; - } - return obj; - }, - - create, I>>(base?: I): ListColumnsRequest { - return ListColumnsRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListColumnsRequest { - const message = createBaseListColumnsRequest(); - message.tableName = object.tableName ?? ""; - return message; - }, -}; - -function createBaseListColumnsResponse(): ListColumnsResponse { - return { columns: [] }; -} - -export const ListColumnsResponse = { - encode(message: ListColumnsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.columns) { - writer.uint32(10).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListColumnsResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListColumnsResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.columns.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListColumnsResponse { - return { columns: gt.Array.isArray(object?.columns) ? object.columns.map((e: any) => gt.String(e)) : [] }; - }, - - toJSON(message: ListColumnsResponse): unknown { - const obj: any = {}; - if (message.columns?.length) { - obj.columns = message.columns; - } - return obj; - }, - - create, I>>(base?: I): ListColumnsResponse { - return ListColumnsResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListColumnsResponse { - const message = createBaseListColumnsResponse(); - message.columns = object.columns?.map((e) => e) || []; - return message; - }, -}; - -function createBaseListSourcesRequest(): ListSourcesRequest { - return {}; -} - -export const ListSourcesRequest = { - encode(_: ListSourcesRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListSourcesRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListSourcesRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): ListSourcesRequest { - return {}; - }, - - toJSON(_: ListSourcesRequest): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): ListSourcesRequest { - return ListSourcesRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): ListSourcesRequest { - const message = createBaseListSourcesRequest(); - return message; - }, -}; - -function createBaseListSourcesResponse(): ListSourcesResponse { - return { sources: [] }; -} - -export const ListSourcesResponse = { - encode(message: ListSourcesResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.sources) { - ProjectFileSource.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListSourcesResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListSourcesResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.sources.push(ProjectFileSource.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListSourcesResponse { - return { - sources: gt.Array.isArray(object?.sources) ? object.sources.map((e: any) => ProjectFileSource.fromJSON(e)) : [], - }; - }, - - toJSON(message: ListSourcesResponse): unknown { - const obj: any = {}; - if (message.sources?.length) { - obj.sources = message.sources.map((e) => ProjectFileSource.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ListSourcesResponse { - return ListSourcesResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListSourcesResponse { - const message = createBaseListSourcesResponse(); - message.sources = object.sources?.map((e) => ProjectFileSource.fromPartial(e)) || []; - return message; - }, -}; - -export interface CLIRPCService { - ListTables(request: ListTablesRequest): Promise; - ListViews(request: ListViewsRequest): Promise; - Exec(request: ExecRequest): Promise; - Query(request: QueryRequest): Promise; - ListColumns(request: ListColumnsRequest): Promise; - ListSources(request: ListSourcesRequest): Promise; -} - -export const CLIRPCServiceServiceName = "quary.service.v1.CLIRPCService"; -export class CLIRPCServiceClientImpl implements CLIRPCService { - private readonly rpc: Rpc; - private readonly service: string; - constructor(rpc: Rpc, opts?: { service?: string }) { - this.service = opts?.service || CLIRPCServiceServiceName; - this.rpc = rpc; - this.ListTables = this.ListTables.bind(this); - this.ListViews = this.ListViews.bind(this); - this.Exec = this.Exec.bind(this); - this.Query = this.Query.bind(this); - this.ListColumns = this.ListColumns.bind(this); - this.ListSources = this.ListSources.bind(this); - } - ListTables(request: ListTablesRequest): Promise { - const data = ListTablesRequest.encode(request).finish(); - const promise = this.rpc.request(this.service, "ListTables", data); - return promise.then((data) => ListTablesResponse.decode(_m0.Reader.create(data))); - } - - ListViews(request: ListViewsRequest): Promise { - const data = ListViewsRequest.encode(request).finish(); - const promise = this.rpc.request(this.service, "ListViews", data); - return promise.then((data) => ListViewsResponse.decode(_m0.Reader.create(data))); - } - - Exec(request: ExecRequest): Promise { - const data = ExecRequest.encode(request).finish(); - const promise = this.rpc.request(this.service, "Exec", data); - return promise.then((data) => ExecResponse.decode(_m0.Reader.create(data))); - } - - Query(request: QueryRequest): Promise { - const data = QueryRequest.encode(request).finish(); - const promise = this.rpc.request(this.service, "Query", data); - return promise.then((data) => QueryResponse.decode(_m0.Reader.create(data))); - } - - ListColumns(request: ListColumnsRequest): Promise { - const data = ListColumnsRequest.encode(request).finish(); - const promise = this.rpc.request(this.service, "ListColumns", data); - return promise.then((data) => ListColumnsResponse.decode(_m0.Reader.create(data))); - } - - ListSources(request: ListSourcesRequest): Promise { - const data = ListSourcesRequest.encode(request).finish(); - const promise = this.rpc.request(this.service, "ListSources", data); - return promise.then((data) => ListSourcesResponse.decode(_m0.Reader.create(data))); - } -} - -interface Rpc { - request(service: string, method: string, data: Uint8Array): Promise; -} - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/column_description.ts b/proto/gen/ts/quary/service/v1/column_description.ts deleted file mode 100644 index 35ebd23a..00000000 --- a/proto/gen/ts/quary/service/v1/column_description.ts +++ /dev/null @@ -1,135 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -export interface ColumnDescription { - name: string; - description?: string | undefined; - tests: string[]; -} - -function createBaseColumnDescription(): ColumnDescription { - return { name: "", description: undefined, tests: [] }; -} - -export const ColumnDescription = { - encode(message: ColumnDescription, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - for (const v of message.tests) { - writer.uint32(26).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ColumnDescription { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseColumnDescription(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.tests.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ColumnDescription { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - description: isSet(object.description) ? gt.String(object.description) : undefined, - tests: gt.Array.isArray(object?.tests) ? object.tests.map((e: any) => gt.String(e)) : [], - }; - }, - - toJSON(message: ColumnDescription): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.description !== undefined) { - obj.description = message.description; - } - if (message.tests?.length) { - obj.tests = message.tests; - } - return obj; - }, - - create, I>>(base?: I): ColumnDescription { - return ColumnDescription.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ColumnDescription { - const message = createBaseColumnDescription(); - message.name = object.name ?? ""; - message.description = object.description ?? undefined; - message.tests = object.tests?.map((e) => e) || []; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/connection_config.ts b/proto/gen/ts/quary/service/v1/connection_config.ts deleted file mode 100644 index 79e1fa7c..00000000 --- a/proto/gen/ts/quary/service/v1/connection_config.ts +++ /dev/null @@ -1,965 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -export interface Var { - name: string; - value: string; -} - -/** Configuration describes the configuration of the project. */ -export interface ConnectionConfig { - config?: - | { $case: "duckdb"; duckdb: ConnectionConfig_ConnectionConfigDuckDB } - | { $case: "duckdbInMemory"; duckdbInMemory: ConnectionConfig_ConnectionConfigDuckDBInMemory } - | { $case: "sqlite"; sqlite: ConnectionConfig_ConnectionConfigSqLite } - | { $case: "sqliteInMemory"; sqliteInMemory: ConnectionConfig_ConnectionConfigSqLiteInMemory } - | { $case: "bigQuery"; bigQuery: ConnectionConfig_ConnectionConfigBigQuery } - | { $case: "snowflake"; snowflake: ConnectionConfig_ConnectionConfigSnowflake } - | { $case: "postgres"; postgres: ConnectionConfig_ConnectionConfigPostgres } - | undefined; - vars: Var[]; -} - -export interface ConnectionConfig_ConnectionConfigSqLite { - path: string; -} - -export interface ConnectionConfig_ConnectionConfigSqLiteInMemory { -} - -export interface ConnectionConfig_ConnectionConfigDuckDB { - path: string; - schema?: string | undefined; -} - -export interface ConnectionConfig_ConnectionConfigDuckDBInMemory { - schema?: string | undefined; -} - -export interface ConnectionConfig_ConnectionConfigPostgres { - schema: string; -} - -export interface ConnectionConfig_ConnectionConfigBigQuery { - projectId: string; - datasetId: string; -} - -export interface ConnectionConfig_ConnectionConfigSnowflake { - accountUrl: string; - clientId: string; - clientSecret: string; - /** TODO: think about making optional */ - role: string; - database: string; - schema: string; - warehouse: string; -} - -function createBaseVar(): Var { - return { name: "", value: "" }; -} - -export const Var = { - encode(message: Var, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.value !== "") { - writer.uint32(18).string(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Var { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseVar(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Var { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - value: isSet(object.value) ? gt.String(object.value) : "", - }; - }, - - toJSON(message: Var): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.value !== "") { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): Var { - return Var.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Var { - const message = createBaseVar(); - message.name = object.name ?? ""; - message.value = object.value ?? ""; - return message; - }, -}; - -function createBaseConnectionConfig(): ConnectionConfig { - return { config: undefined, vars: [] }; -} - -export const ConnectionConfig = { - encode(message: ConnectionConfig, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.config?.$case) { - case "duckdb": - ConnectionConfig_ConnectionConfigDuckDB.encode(message.config.duckdb, writer.uint32(10).fork()).ldelim(); - break; - case "duckdbInMemory": - ConnectionConfig_ConnectionConfigDuckDBInMemory.encode(message.config.duckdbInMemory, writer.uint32(18).fork()) - .ldelim(); - break; - case "sqlite": - ConnectionConfig_ConnectionConfigSqLite.encode(message.config.sqlite, writer.uint32(26).fork()).ldelim(); - break; - case "sqliteInMemory": - ConnectionConfig_ConnectionConfigSqLiteInMemory.encode(message.config.sqliteInMemory, writer.uint32(34).fork()) - .ldelim(); - break; - case "bigQuery": - ConnectionConfig_ConnectionConfigBigQuery.encode(message.config.bigQuery, writer.uint32(42).fork()).ldelim(); - break; - case "snowflake": - ConnectionConfig_ConnectionConfigSnowflake.encode(message.config.snowflake, writer.uint32(50).fork()).ldelim(); - break; - case "postgres": - ConnectionConfig_ConnectionConfigPostgres.encode(message.config.postgres, writer.uint32(58).fork()).ldelim(); - break; - } - for (const v of message.vars) { - Var.encode(v!, writer.uint32(66).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionConfig { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseConnectionConfig(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.config = { - $case: "duckdb", - duckdb: ConnectionConfig_ConnectionConfigDuckDB.decode(reader, reader.uint32()), - }; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.config = { - $case: "duckdbInMemory", - duckdbInMemory: ConnectionConfig_ConnectionConfigDuckDBInMemory.decode(reader, reader.uint32()), - }; - continue; - case 3: - if (tag !== 26) { - break; - } - - message.config = { - $case: "sqlite", - sqlite: ConnectionConfig_ConnectionConfigSqLite.decode(reader, reader.uint32()), - }; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.config = { - $case: "sqliteInMemory", - sqliteInMemory: ConnectionConfig_ConnectionConfigSqLiteInMemory.decode(reader, reader.uint32()), - }; - continue; - case 5: - if (tag !== 42) { - break; - } - - message.config = { - $case: "bigQuery", - bigQuery: ConnectionConfig_ConnectionConfigBigQuery.decode(reader, reader.uint32()), - }; - continue; - case 6: - if (tag !== 50) { - break; - } - - message.config = { - $case: "snowflake", - snowflake: ConnectionConfig_ConnectionConfigSnowflake.decode(reader, reader.uint32()), - }; - continue; - case 7: - if (tag !== 58) { - break; - } - - message.config = { - $case: "postgres", - postgres: ConnectionConfig_ConnectionConfigPostgres.decode(reader, reader.uint32()), - }; - continue; - case 8: - if (tag !== 66) { - break; - } - - message.vars.push(Var.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ConnectionConfig { - return { - config: isSet(object.duckdb) - ? { $case: "duckdb", duckdb: ConnectionConfig_ConnectionConfigDuckDB.fromJSON(object.duckdb) } - : isSet(object.duckdbInMemory) - ? { - $case: "duckdbInMemory", - duckdbInMemory: ConnectionConfig_ConnectionConfigDuckDBInMemory.fromJSON(object.duckdbInMemory), - } - : isSet(object.sqlite) - ? { $case: "sqlite", sqlite: ConnectionConfig_ConnectionConfigSqLite.fromJSON(object.sqlite) } - : isSet(object.sqliteInMemory) - ? { - $case: "sqliteInMemory", - sqliteInMemory: ConnectionConfig_ConnectionConfigSqLiteInMemory.fromJSON(object.sqliteInMemory), - } - : isSet(object.bigQuery) - ? { $case: "bigQuery", bigQuery: ConnectionConfig_ConnectionConfigBigQuery.fromJSON(object.bigQuery) } - : isSet(object.snowflake) - ? { $case: "snowflake", snowflake: ConnectionConfig_ConnectionConfigSnowflake.fromJSON(object.snowflake) } - : isSet(object.postgres) - ? { $case: "postgres", postgres: ConnectionConfig_ConnectionConfigPostgres.fromJSON(object.postgres) } - : undefined, - vars: gt.Array.isArray(object?.vars) ? object.vars.map((e: any) => Var.fromJSON(e)) : [], - }; - }, - - toJSON(message: ConnectionConfig): unknown { - const obj: any = {}; - if (message.config?.$case === "duckdb") { - obj.duckdb = ConnectionConfig_ConnectionConfigDuckDB.toJSON(message.config.duckdb); - } - if (message.config?.$case === "duckdbInMemory") { - obj.duckdbInMemory = ConnectionConfig_ConnectionConfigDuckDBInMemory.toJSON(message.config.duckdbInMemory); - } - if (message.config?.$case === "sqlite") { - obj.sqlite = ConnectionConfig_ConnectionConfigSqLite.toJSON(message.config.sqlite); - } - if (message.config?.$case === "sqliteInMemory") { - obj.sqliteInMemory = ConnectionConfig_ConnectionConfigSqLiteInMemory.toJSON(message.config.sqliteInMemory); - } - if (message.config?.$case === "bigQuery") { - obj.bigQuery = ConnectionConfig_ConnectionConfigBigQuery.toJSON(message.config.bigQuery); - } - if (message.config?.$case === "snowflake") { - obj.snowflake = ConnectionConfig_ConnectionConfigSnowflake.toJSON(message.config.snowflake); - } - if (message.config?.$case === "postgres") { - obj.postgres = ConnectionConfig_ConnectionConfigPostgres.toJSON(message.config.postgres); - } - if (message.vars?.length) { - obj.vars = message.vars.map((e) => Var.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ConnectionConfig { - return ConnectionConfig.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ConnectionConfig { - const message = createBaseConnectionConfig(); - if (object.config?.$case === "duckdb" && object.config?.duckdb !== undefined && object.config?.duckdb !== null) { - message.config = { - $case: "duckdb", - duckdb: ConnectionConfig_ConnectionConfigDuckDB.fromPartial(object.config.duckdb), - }; - } - if ( - object.config?.$case === "duckdbInMemory" && - object.config?.duckdbInMemory !== undefined && - object.config?.duckdbInMemory !== null - ) { - message.config = { - $case: "duckdbInMemory", - duckdbInMemory: ConnectionConfig_ConnectionConfigDuckDBInMemory.fromPartial(object.config.duckdbInMemory), - }; - } - if (object.config?.$case === "sqlite" && object.config?.sqlite !== undefined && object.config?.sqlite !== null) { - message.config = { - $case: "sqlite", - sqlite: ConnectionConfig_ConnectionConfigSqLite.fromPartial(object.config.sqlite), - }; - } - if ( - object.config?.$case === "sqliteInMemory" && - object.config?.sqliteInMemory !== undefined && - object.config?.sqliteInMemory !== null - ) { - message.config = { - $case: "sqliteInMemory", - sqliteInMemory: ConnectionConfig_ConnectionConfigSqLiteInMemory.fromPartial(object.config.sqliteInMemory), - }; - } - if ( - object.config?.$case === "bigQuery" && object.config?.bigQuery !== undefined && object.config?.bigQuery !== null - ) { - message.config = { - $case: "bigQuery", - bigQuery: ConnectionConfig_ConnectionConfigBigQuery.fromPartial(object.config.bigQuery), - }; - } - if ( - object.config?.$case === "snowflake" && - object.config?.snowflake !== undefined && - object.config?.snowflake !== null - ) { - message.config = { - $case: "snowflake", - snowflake: ConnectionConfig_ConnectionConfigSnowflake.fromPartial(object.config.snowflake), - }; - } - if ( - object.config?.$case === "postgres" && object.config?.postgres !== undefined && object.config?.postgres !== null - ) { - message.config = { - $case: "postgres", - postgres: ConnectionConfig_ConnectionConfigPostgres.fromPartial(object.config.postgres), - }; - } - message.vars = object.vars?.map((e) => Var.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseConnectionConfig_ConnectionConfigSqLite(): ConnectionConfig_ConnectionConfigSqLite { - return { path: "" }; -} - -export const ConnectionConfig_ConnectionConfigSqLite = { - encode(message: ConnectionConfig_ConnectionConfigSqLite, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.path !== "") { - writer.uint32(10).string(message.path); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionConfig_ConnectionConfigSqLite { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseConnectionConfig_ConnectionConfigSqLite(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.path = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ConnectionConfig_ConnectionConfigSqLite { - return { path: isSet(object.path) ? gt.String(object.path) : "" }; - }, - - toJSON(message: ConnectionConfig_ConnectionConfigSqLite): unknown { - const obj: any = {}; - if (message.path !== "") { - obj.path = message.path; - } - return obj; - }, - - create, I>>( - base?: I, - ): ConnectionConfig_ConnectionConfigSqLite { - return ConnectionConfig_ConnectionConfigSqLite.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): ConnectionConfig_ConnectionConfigSqLite { - const message = createBaseConnectionConfig_ConnectionConfigSqLite(); - message.path = object.path ?? ""; - return message; - }, -}; - -function createBaseConnectionConfig_ConnectionConfigSqLiteInMemory(): ConnectionConfig_ConnectionConfigSqLiteInMemory { - return {}; -} - -export const ConnectionConfig_ConnectionConfigSqLiteInMemory = { - encode(_: ConnectionConfig_ConnectionConfigSqLiteInMemory, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionConfig_ConnectionConfigSqLiteInMemory { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseConnectionConfig_ConnectionConfigSqLiteInMemory(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): ConnectionConfig_ConnectionConfigSqLiteInMemory { - return {}; - }, - - toJSON(_: ConnectionConfig_ConnectionConfigSqLiteInMemory): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>( - base?: I, - ): ConnectionConfig_ConnectionConfigSqLiteInMemory { - return ConnectionConfig_ConnectionConfigSqLiteInMemory.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - _: I, - ): ConnectionConfig_ConnectionConfigSqLiteInMemory { - const message = createBaseConnectionConfig_ConnectionConfigSqLiteInMemory(); - return message; - }, -}; - -function createBaseConnectionConfig_ConnectionConfigDuckDB(): ConnectionConfig_ConnectionConfigDuckDB { - return { path: "", schema: undefined }; -} - -export const ConnectionConfig_ConnectionConfigDuckDB = { - encode(message: ConnectionConfig_ConnectionConfigDuckDB, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.path !== "") { - writer.uint32(10).string(message.path); - } - if (message.schema !== undefined) { - writer.uint32(18).string(message.schema); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionConfig_ConnectionConfigDuckDB { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseConnectionConfig_ConnectionConfigDuckDB(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.path = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.schema = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ConnectionConfig_ConnectionConfigDuckDB { - return { - path: isSet(object.path) ? gt.String(object.path) : "", - schema: isSet(object.schema) ? gt.String(object.schema) : undefined, - }; - }, - - toJSON(message: ConnectionConfig_ConnectionConfigDuckDB): unknown { - const obj: any = {}; - if (message.path !== "") { - obj.path = message.path; - } - if (message.schema !== undefined) { - obj.schema = message.schema; - } - return obj; - }, - - create, I>>( - base?: I, - ): ConnectionConfig_ConnectionConfigDuckDB { - return ConnectionConfig_ConnectionConfigDuckDB.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): ConnectionConfig_ConnectionConfigDuckDB { - const message = createBaseConnectionConfig_ConnectionConfigDuckDB(); - message.path = object.path ?? ""; - message.schema = object.schema ?? undefined; - return message; - }, -}; - -function createBaseConnectionConfig_ConnectionConfigDuckDBInMemory(): ConnectionConfig_ConnectionConfigDuckDBInMemory { - return { schema: undefined }; -} - -export const ConnectionConfig_ConnectionConfigDuckDBInMemory = { - encode( - message: ConnectionConfig_ConnectionConfigDuckDBInMemory, - writer: _m0.Writer = _m0.Writer.create(), - ): _m0.Writer { - if (message.schema !== undefined) { - writer.uint32(10).string(message.schema); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionConfig_ConnectionConfigDuckDBInMemory { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseConnectionConfig_ConnectionConfigDuckDBInMemory(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.schema = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ConnectionConfig_ConnectionConfigDuckDBInMemory { - return { schema: isSet(object.schema) ? gt.String(object.schema) : undefined }; - }, - - toJSON(message: ConnectionConfig_ConnectionConfigDuckDBInMemory): unknown { - const obj: any = {}; - if (message.schema !== undefined) { - obj.schema = message.schema; - } - return obj; - }, - - create, I>>( - base?: I, - ): ConnectionConfig_ConnectionConfigDuckDBInMemory { - return ConnectionConfig_ConnectionConfigDuckDBInMemory.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): ConnectionConfig_ConnectionConfigDuckDBInMemory { - const message = createBaseConnectionConfig_ConnectionConfigDuckDBInMemory(); - message.schema = object.schema ?? undefined; - return message; - }, -}; - -function createBaseConnectionConfig_ConnectionConfigPostgres(): ConnectionConfig_ConnectionConfigPostgres { - return { schema: "" }; -} - -export const ConnectionConfig_ConnectionConfigPostgres = { - encode(message: ConnectionConfig_ConnectionConfigPostgres, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.schema !== "") { - writer.uint32(10).string(message.schema); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionConfig_ConnectionConfigPostgres { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseConnectionConfig_ConnectionConfigPostgres(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.schema = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ConnectionConfig_ConnectionConfigPostgres { - return { schema: isSet(object.schema) ? gt.String(object.schema) : "" }; - }, - - toJSON(message: ConnectionConfig_ConnectionConfigPostgres): unknown { - const obj: any = {}; - if (message.schema !== "") { - obj.schema = message.schema; - } - return obj; - }, - - create, I>>( - base?: I, - ): ConnectionConfig_ConnectionConfigPostgres { - return ConnectionConfig_ConnectionConfigPostgres.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): ConnectionConfig_ConnectionConfigPostgres { - const message = createBaseConnectionConfig_ConnectionConfigPostgres(); - message.schema = object.schema ?? ""; - return message; - }, -}; - -function createBaseConnectionConfig_ConnectionConfigBigQuery(): ConnectionConfig_ConnectionConfigBigQuery { - return { projectId: "", datasetId: "" }; -} - -export const ConnectionConfig_ConnectionConfigBigQuery = { - encode(message: ConnectionConfig_ConnectionConfigBigQuery, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.projectId !== "") { - writer.uint32(10).string(message.projectId); - } - if (message.datasetId !== "") { - writer.uint32(18).string(message.datasetId); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionConfig_ConnectionConfigBigQuery { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseConnectionConfig_ConnectionConfigBigQuery(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.projectId = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.datasetId = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ConnectionConfig_ConnectionConfigBigQuery { - return { - projectId: isSet(object.projectId) ? gt.String(object.projectId) : "", - datasetId: isSet(object.datasetId) ? gt.String(object.datasetId) : "", - }; - }, - - toJSON(message: ConnectionConfig_ConnectionConfigBigQuery): unknown { - const obj: any = {}; - if (message.projectId !== "") { - obj.projectId = message.projectId; - } - if (message.datasetId !== "") { - obj.datasetId = message.datasetId; - } - return obj; - }, - - create, I>>( - base?: I, - ): ConnectionConfig_ConnectionConfigBigQuery { - return ConnectionConfig_ConnectionConfigBigQuery.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): ConnectionConfig_ConnectionConfigBigQuery { - const message = createBaseConnectionConfig_ConnectionConfigBigQuery(); - message.projectId = object.projectId ?? ""; - message.datasetId = object.datasetId ?? ""; - return message; - }, -}; - -function createBaseConnectionConfig_ConnectionConfigSnowflake(): ConnectionConfig_ConnectionConfigSnowflake { - return { accountUrl: "", clientId: "", clientSecret: "", role: "", database: "", schema: "", warehouse: "" }; -} - -export const ConnectionConfig_ConnectionConfigSnowflake = { - encode(message: ConnectionConfig_ConnectionConfigSnowflake, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.accountUrl !== "") { - writer.uint32(10).string(message.accountUrl); - } - if (message.clientId !== "") { - writer.uint32(18).string(message.clientId); - } - if (message.clientSecret !== "") { - writer.uint32(26).string(message.clientSecret); - } - if (message.role !== "") { - writer.uint32(34).string(message.role); - } - if (message.database !== "") { - writer.uint32(42).string(message.database); - } - if (message.schema !== "") { - writer.uint32(50).string(message.schema); - } - if (message.warehouse !== "") { - writer.uint32(58).string(message.warehouse); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ConnectionConfig_ConnectionConfigSnowflake { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseConnectionConfig_ConnectionConfigSnowflake(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.accountUrl = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.clientId = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.clientSecret = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.role = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.database = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.schema = reader.string(); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.warehouse = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ConnectionConfig_ConnectionConfigSnowflake { - return { - accountUrl: isSet(object.accountUrl) ? gt.String(object.accountUrl) : "", - clientId: isSet(object.clientId) ? gt.String(object.clientId) : "", - clientSecret: isSet(object.clientSecret) ? gt.String(object.clientSecret) : "", - role: isSet(object.role) ? gt.String(object.role) : "", - database: isSet(object.database) ? gt.String(object.database) : "", - schema: isSet(object.schema) ? gt.String(object.schema) : "", - warehouse: isSet(object.warehouse) ? gt.String(object.warehouse) : "", - }; - }, - - toJSON(message: ConnectionConfig_ConnectionConfigSnowflake): unknown { - const obj: any = {}; - if (message.accountUrl !== "") { - obj.accountUrl = message.accountUrl; - } - if (message.clientId !== "") { - obj.clientId = message.clientId; - } - if (message.clientSecret !== "") { - obj.clientSecret = message.clientSecret; - } - if (message.role !== "") { - obj.role = message.role; - } - if (message.database !== "") { - obj.database = message.database; - } - if (message.schema !== "") { - obj.schema = message.schema; - } - if (message.warehouse !== "") { - obj.warehouse = message.warehouse; - } - return obj; - }, - - create, I>>( - base?: I, - ): ConnectionConfig_ConnectionConfigSnowflake { - return ConnectionConfig_ConnectionConfigSnowflake.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): ConnectionConfig_ConnectionConfigSnowflake { - const message = createBaseConnectionConfig_ConnectionConfigSnowflake(); - message.accountUrl = object.accountUrl ?? ""; - message.clientId = object.clientId ?? ""; - message.clientSecret = object.clientSecret ?? ""; - message.role = object.role ?? ""; - message.database = object.database ?? ""; - message.schema = object.schema ?? ""; - message.warehouse = object.warehouse ?? ""; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/file.ts b/proto/gen/ts/quary/service/v1/file.ts deleted file mode 100644 index ecd6f36b..00000000 --- a/proto/gen/ts/quary/service/v1/file.ts +++ /dev/null @@ -1,310 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -export interface File { - /** The name of the file. Names are relative to the root of the file system. */ - name: string; - contents: Uint8Array; -} - -export interface FileSystem { - files: { [key: string]: File }; -} - -export interface FileSystem_FilesEntry { - key: string; - value: File | undefined; -} - -function createBaseFile(): File { - return { name: "", contents: new Uint8Array(0) }; -} - -export const File = { - encode(message: File, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.contents.length !== 0) { - writer.uint32(18).bytes(message.contents); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): File { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseFile(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.contents = reader.bytes(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): File { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - contents: isSet(object.contents) ? bytesFromBase64(object.contents) : new Uint8Array(0), - }; - }, - - toJSON(message: File): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.contents.length !== 0) { - obj.contents = base64FromBytes(message.contents); - } - return obj; - }, - - create, I>>(base?: I): File { - return File.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): File { - const message = createBaseFile(); - message.name = object.name ?? ""; - message.contents = object.contents ?? new Uint8Array(0); - return message; - }, -}; - -function createBaseFileSystem(): FileSystem { - return { files: {} }; -} - -export const FileSystem = { - encode(message: FileSystem, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - Object.entries(message.files).forEach(([key, value]) => { - FileSystem_FilesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).ldelim(); - }); - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): FileSystem { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseFileSystem(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - const entry1 = FileSystem_FilesEntry.decode(reader, reader.uint32()); - if (entry1.value !== undefined) { - message.files[entry1.key] = entry1.value; - } - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): FileSystem { - return { - files: isObject(object.files) - ? Object.entries(object.files).reduce<{ [key: string]: File }>((acc, [key, value]) => { - acc[key] = File.fromJSON(value); - return acc; - }, {}) - : {}, - }; - }, - - toJSON(message: FileSystem): unknown { - const obj: any = {}; - if (message.files) { - const entries = Object.entries(message.files); - if (entries.length > 0) { - obj.files = {}; - entries.forEach(([k, v]) => { - obj.files[k] = File.toJSON(v); - }); - } - } - return obj; - }, - - create, I>>(base?: I): FileSystem { - return FileSystem.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): FileSystem { - const message = createBaseFileSystem(); - message.files = Object.entries(object.files ?? {}).reduce<{ [key: string]: File }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = File.fromPartial(value); - } - return acc; - }, {}); - return message; - }, -}; - -function createBaseFileSystem_FilesEntry(): FileSystem_FilesEntry { - return { key: "", value: undefined }; -} - -export const FileSystem_FilesEntry = { - encode(message: FileSystem_FilesEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== undefined) { - File.encode(message.value, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): FileSystem_FilesEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseFileSystem_FilesEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = File.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): FileSystem_FilesEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? File.fromJSON(object.value) : undefined, - }; - }, - - toJSON(message: FileSystem_FilesEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== undefined) { - obj.value = File.toJSON(message.value); - } - return obj; - }, - - create, I>>(base?: I): FileSystem_FilesEntry { - return FileSystem_FilesEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): FileSystem_FilesEntry { - const message = createBaseFileSystem_FilesEntry(); - message.key = object.key ?? ""; - message.value = (object.value !== undefined && object.value !== null) ? File.fromPartial(object.value) : undefined; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -function bytesFromBase64(b64: string): Uint8Array { - if ((gt as any).Buffer) { - return Uint8Array.from(gt.Buffer.from(b64, "base64")); - } else { - const bin = gt.atob(b64); - const arr = new Uint8Array(bin.length); - for (let i = 0; i < bin.length; ++i) { - arr[i] = bin.charCodeAt(i); - } - return arr; - } -} - -function base64FromBytes(arr: Uint8Array): string { - if ((gt as any).Buffer) { - return gt.Buffer.from(arr).toString("base64"); - } else { - const bin: string[] = []; - arr.forEach((byte) => { - bin.push(gt.String.fromCharCode(byte)); - }); - return gt.btoa(bin.join("")); - } -} - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isObject(value: any): boolean { - return typeof value === "object" && value !== null; -} - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/position.ts b/proto/gen/ts/quary/service/v1/position.ts deleted file mode 100644 index f0ccd30c..00000000 --- a/proto/gen/ts/quary/service/v1/position.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -/** Position is a simple representation of a line and character position in a file. */ -export interface Position { - line: number; - character: number; -} - -function createBasePosition(): Position { - return { line: 0, character: 0 }; -} - -export const Position = { - encode(message: Position, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.line !== 0) { - writer.uint32(8).uint32(message.line); - } - if (message.character !== 0) { - writer.uint32(16).uint32(message.character); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Position { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBasePosition(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.line = reader.uint32(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.character = reader.uint32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Position { - return { - line: isSet(object.line) ? gt.Number(object.line) : 0, - character: isSet(object.character) ? gt.Number(object.character) : 0, - }; - }, - - toJSON(message: Position): unknown { - const obj: any = {}; - if (message.line !== 0) { - obj.line = Math.round(message.line); - } - if (message.character !== 0) { - obj.character = Math.round(message.character); - } - return obj; - }, - - create, I>>(base?: I): Position { - return Position.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Position { - const message = createBasePosition(); - message.line = object.line ?? 0; - message.character = object.character ?? 0; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/project.ts b/proto/gen/ts/quary/service/v1/project.ts deleted file mode 100644 index 33288253..00000000 --- a/proto/gen/ts/quary/service/v1/project.ts +++ /dev/null @@ -1,816 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; -import { ConnectionConfig } from "./connection_config"; -import { ProjectFile } from "./project_file"; -import { Model, Seed, Snapshot, Source, Test } from "./types"; - -export const protobufPackage = "quary.service.v1"; - -export interface Project { - seeds: { [key: string]: Seed }; - models: { [key: string]: Model }; - tests: { [key: string]: Test }; - sources: { [key: string]: Source }; - snapshots: { [key: string]: Snapshot }; - projectFiles: { [key: string]: ProjectFile }; - connectionConfig: ConnectionConfig | undefined; -} - -export interface Project_SeedsEntry { - key: string; - value: Seed | undefined; -} - -export interface Project_ModelsEntry { - key: string; - value: Model | undefined; -} - -export interface Project_TestsEntry { - key: string; - value: Test | undefined; -} - -export interface Project_SourcesEntry { - key: string; - value: Source | undefined; -} - -export interface Project_SnapshotsEntry { - key: string; - value: Snapshot | undefined; -} - -export interface Project_ProjectFilesEntry { - key: string; - value: ProjectFile | undefined; -} - -function createBaseProject(): Project { - return { - seeds: {}, - models: {}, - tests: {}, - sources: {}, - snapshots: {}, - projectFiles: {}, - connectionConfig: undefined, - }; -} - -export const Project = { - encode(message: Project, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - Object.entries(message.seeds).forEach(([key, value]) => { - Project_SeedsEntry.encode({ key: key as any, value }, writer.uint32(26).fork()).ldelim(); - }); - Object.entries(message.models).forEach(([key, value]) => { - Project_ModelsEntry.encode({ key: key as any, value }, writer.uint32(34).fork()).ldelim(); - }); - Object.entries(message.tests).forEach(([key, value]) => { - Project_TestsEntry.encode({ key: key as any, value }, writer.uint32(42).fork()).ldelim(); - }); - Object.entries(message.sources).forEach(([key, value]) => { - Project_SourcesEntry.encode({ key: key as any, value }, writer.uint32(50).fork()).ldelim(); - }); - Object.entries(message.snapshots).forEach(([key, value]) => { - Project_SnapshotsEntry.encode({ key: key as any, value }, writer.uint32(74).fork()).ldelim(); - }); - Object.entries(message.projectFiles).forEach(([key, value]) => { - Project_ProjectFilesEntry.encode({ key: key as any, value }, writer.uint32(58).fork()).ldelim(); - }); - if (message.connectionConfig !== undefined) { - ConnectionConfig.encode(message.connectionConfig, writer.uint32(66).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Project { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProject(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 3: - if (tag !== 26) { - break; - } - - const entry3 = Project_SeedsEntry.decode(reader, reader.uint32()); - if (entry3.value !== undefined) { - message.seeds[entry3.key] = entry3.value; - } - continue; - case 4: - if (tag !== 34) { - break; - } - - const entry4 = Project_ModelsEntry.decode(reader, reader.uint32()); - if (entry4.value !== undefined) { - message.models[entry4.key] = entry4.value; - } - continue; - case 5: - if (tag !== 42) { - break; - } - - const entry5 = Project_TestsEntry.decode(reader, reader.uint32()); - if (entry5.value !== undefined) { - message.tests[entry5.key] = entry5.value; - } - continue; - case 6: - if (tag !== 50) { - break; - } - - const entry6 = Project_SourcesEntry.decode(reader, reader.uint32()); - if (entry6.value !== undefined) { - message.sources[entry6.key] = entry6.value; - } - continue; - case 9: - if (tag !== 74) { - break; - } - - const entry9 = Project_SnapshotsEntry.decode(reader, reader.uint32()); - if (entry9.value !== undefined) { - message.snapshots[entry9.key] = entry9.value; - } - continue; - case 7: - if (tag !== 58) { - break; - } - - const entry7 = Project_ProjectFilesEntry.decode(reader, reader.uint32()); - if (entry7.value !== undefined) { - message.projectFiles[entry7.key] = entry7.value; - } - continue; - case 8: - if (tag !== 66) { - break; - } - - message.connectionConfig = ConnectionConfig.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Project { - return { - seeds: isObject(object.seeds) - ? Object.entries(object.seeds).reduce<{ [key: string]: Seed }>((acc, [key, value]) => { - acc[key] = Seed.fromJSON(value); - return acc; - }, {}) - : {}, - models: isObject(object.models) - ? Object.entries(object.models).reduce<{ [key: string]: Model }>((acc, [key, value]) => { - acc[key] = Model.fromJSON(value); - return acc; - }, {}) - : {}, - tests: isObject(object.tests) - ? Object.entries(object.tests).reduce<{ [key: string]: Test }>((acc, [key, value]) => { - acc[key] = Test.fromJSON(value); - return acc; - }, {}) - : {}, - sources: isObject(object.sources) - ? Object.entries(object.sources).reduce<{ [key: string]: Source }>((acc, [key, value]) => { - acc[key] = Source.fromJSON(value); - return acc; - }, {}) - : {}, - snapshots: isObject(object.snapshots) - ? Object.entries(object.snapshots).reduce<{ [key: string]: Snapshot }>((acc, [key, value]) => { - acc[key] = Snapshot.fromJSON(value); - return acc; - }, {}) - : {}, - projectFiles: isObject(object.projectFiles) - ? Object.entries(object.projectFiles).reduce<{ [key: string]: ProjectFile }>((acc, [key, value]) => { - acc[key] = ProjectFile.fromJSON(value); - return acc; - }, {}) - : {}, - connectionConfig: isSet(object.connectionConfig) ? ConnectionConfig.fromJSON(object.connectionConfig) : undefined, - }; - }, - - toJSON(message: Project): unknown { - const obj: any = {}; - if (message.seeds) { - const entries = Object.entries(message.seeds); - if (entries.length > 0) { - obj.seeds = {}; - entries.forEach(([k, v]) => { - obj.seeds[k] = Seed.toJSON(v); - }); - } - } - if (message.models) { - const entries = Object.entries(message.models); - if (entries.length > 0) { - obj.models = {}; - entries.forEach(([k, v]) => { - obj.models[k] = Model.toJSON(v); - }); - } - } - if (message.tests) { - const entries = Object.entries(message.tests); - if (entries.length > 0) { - obj.tests = {}; - entries.forEach(([k, v]) => { - obj.tests[k] = Test.toJSON(v); - }); - } - } - if (message.sources) { - const entries = Object.entries(message.sources); - if (entries.length > 0) { - obj.sources = {}; - entries.forEach(([k, v]) => { - obj.sources[k] = Source.toJSON(v); - }); - } - } - if (message.snapshots) { - const entries = Object.entries(message.snapshots); - if (entries.length > 0) { - obj.snapshots = {}; - entries.forEach(([k, v]) => { - obj.snapshots[k] = Snapshot.toJSON(v); - }); - } - } - if (message.projectFiles) { - const entries = Object.entries(message.projectFiles); - if (entries.length > 0) { - obj.projectFiles = {}; - entries.forEach(([k, v]) => { - obj.projectFiles[k] = ProjectFile.toJSON(v); - }); - } - } - if (message.connectionConfig !== undefined) { - obj.connectionConfig = ConnectionConfig.toJSON(message.connectionConfig); - } - return obj; - }, - - create, I>>(base?: I): Project { - return Project.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Project { - const message = createBaseProject(); - message.seeds = Object.entries(object.seeds ?? {}).reduce<{ [key: string]: Seed }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = Seed.fromPartial(value); - } - return acc; - }, {}); - message.models = Object.entries(object.models ?? {}).reduce<{ [key: string]: Model }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = Model.fromPartial(value); - } - return acc; - }, {}); - message.tests = Object.entries(object.tests ?? {}).reduce<{ [key: string]: Test }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = Test.fromPartial(value); - } - return acc; - }, {}); - message.sources = Object.entries(object.sources ?? {}).reduce<{ [key: string]: Source }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = Source.fromPartial(value); - } - return acc; - }, {}); - message.snapshots = Object.entries(object.snapshots ?? {}).reduce<{ [key: string]: Snapshot }>( - (acc, [key, value]) => { - if (value !== undefined) { - acc[key] = Snapshot.fromPartial(value); - } - return acc; - }, - {}, - ); - message.projectFiles = Object.entries(object.projectFiles ?? {}).reduce<{ [key: string]: ProjectFile }>( - (acc, [key, value]) => { - if (value !== undefined) { - acc[key] = ProjectFile.fromPartial(value); - } - return acc; - }, - {}, - ); - message.connectionConfig = (object.connectionConfig !== undefined && object.connectionConfig !== null) - ? ConnectionConfig.fromPartial(object.connectionConfig) - : undefined; - return message; - }, -}; - -function createBaseProject_SeedsEntry(): Project_SeedsEntry { - return { key: "", value: undefined }; -} - -export const Project_SeedsEntry = { - encode(message: Project_SeedsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== undefined) { - Seed.encode(message.value, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Project_SeedsEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProject_SeedsEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = Seed.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Project_SeedsEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? Seed.fromJSON(object.value) : undefined, - }; - }, - - toJSON(message: Project_SeedsEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== undefined) { - obj.value = Seed.toJSON(message.value); - } - return obj; - }, - - create, I>>(base?: I): Project_SeedsEntry { - return Project_SeedsEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Project_SeedsEntry { - const message = createBaseProject_SeedsEntry(); - message.key = object.key ?? ""; - message.value = (object.value !== undefined && object.value !== null) ? Seed.fromPartial(object.value) : undefined; - return message; - }, -}; - -function createBaseProject_ModelsEntry(): Project_ModelsEntry { - return { key: "", value: undefined }; -} - -export const Project_ModelsEntry = { - encode(message: Project_ModelsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== undefined) { - Model.encode(message.value, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Project_ModelsEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProject_ModelsEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = Model.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Project_ModelsEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? Model.fromJSON(object.value) : undefined, - }; - }, - - toJSON(message: Project_ModelsEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== undefined) { - obj.value = Model.toJSON(message.value); - } - return obj; - }, - - create, I>>(base?: I): Project_ModelsEntry { - return Project_ModelsEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Project_ModelsEntry { - const message = createBaseProject_ModelsEntry(); - message.key = object.key ?? ""; - message.value = (object.value !== undefined && object.value !== null) ? Model.fromPartial(object.value) : undefined; - return message; - }, -}; - -function createBaseProject_TestsEntry(): Project_TestsEntry { - return { key: "", value: undefined }; -} - -export const Project_TestsEntry = { - encode(message: Project_TestsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== undefined) { - Test.encode(message.value, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Project_TestsEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProject_TestsEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = Test.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Project_TestsEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? Test.fromJSON(object.value) : undefined, - }; - }, - - toJSON(message: Project_TestsEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== undefined) { - obj.value = Test.toJSON(message.value); - } - return obj; - }, - - create, I>>(base?: I): Project_TestsEntry { - return Project_TestsEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Project_TestsEntry { - const message = createBaseProject_TestsEntry(); - message.key = object.key ?? ""; - message.value = (object.value !== undefined && object.value !== null) ? Test.fromPartial(object.value) : undefined; - return message; - }, -}; - -function createBaseProject_SourcesEntry(): Project_SourcesEntry { - return { key: "", value: undefined }; -} - -export const Project_SourcesEntry = { - encode(message: Project_SourcesEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== undefined) { - Source.encode(message.value, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Project_SourcesEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProject_SourcesEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = Source.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Project_SourcesEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? Source.fromJSON(object.value) : undefined, - }; - }, - - toJSON(message: Project_SourcesEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== undefined) { - obj.value = Source.toJSON(message.value); - } - return obj; - }, - - create, I>>(base?: I): Project_SourcesEntry { - return Project_SourcesEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Project_SourcesEntry { - const message = createBaseProject_SourcesEntry(); - message.key = object.key ?? ""; - message.value = (object.value !== undefined && object.value !== null) - ? Source.fromPartial(object.value) - : undefined; - return message; - }, -}; - -function createBaseProject_SnapshotsEntry(): Project_SnapshotsEntry { - return { key: "", value: undefined }; -} - -export const Project_SnapshotsEntry = { - encode(message: Project_SnapshotsEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== undefined) { - Snapshot.encode(message.value, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Project_SnapshotsEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProject_SnapshotsEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = Snapshot.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Project_SnapshotsEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? Snapshot.fromJSON(object.value) : undefined, - }; - }, - - toJSON(message: Project_SnapshotsEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== undefined) { - obj.value = Snapshot.toJSON(message.value); - } - return obj; - }, - - create, I>>(base?: I): Project_SnapshotsEntry { - return Project_SnapshotsEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Project_SnapshotsEntry { - const message = createBaseProject_SnapshotsEntry(); - message.key = object.key ?? ""; - message.value = (object.value !== undefined && object.value !== null) - ? Snapshot.fromPartial(object.value) - : undefined; - return message; - }, -}; - -function createBaseProject_ProjectFilesEntry(): Project_ProjectFilesEntry { - return { key: "", value: undefined }; -} - -export const Project_ProjectFilesEntry = { - encode(message: Project_ProjectFilesEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== undefined) { - ProjectFile.encode(message.value, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Project_ProjectFilesEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProject_ProjectFilesEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = ProjectFile.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Project_ProjectFilesEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? ProjectFile.fromJSON(object.value) : undefined, - }; - }, - - toJSON(message: Project_ProjectFilesEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== undefined) { - obj.value = ProjectFile.toJSON(message.value); - } - return obj; - }, - - create, I>>(base?: I): Project_ProjectFilesEntry { - return Project_ProjectFilesEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Project_ProjectFilesEntry { - const message = createBaseProject_ProjectFilesEntry(); - message.key = object.key ?? ""; - message.value = (object.value !== undefined && object.value !== null) - ? ProjectFile.fromPartial(object.value) - : undefined; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isObject(value: any): boolean { - return typeof value === "object" && value !== null; -} - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/project_dag.ts b/proto/gen/ts/quary/service/v1/project_dag.ts deleted file mode 100644 index f9df7702..00000000 --- a/proto/gen/ts/quary/service/v1/project_dag.ts +++ /dev/null @@ -1,278 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -/** - * DirectedAcyclicGraph represents a directed acyclic graph that is used to visualize the project dependencies in a - * project. - */ -export interface ProjectDag { - nodes: Node[]; - edges: Edge[]; -} - -export interface Node { - id: string; - isCached: boolean; -} - -export interface Edge { - to: string; - from: string; -} - -function createBaseProjectDag(): ProjectDag { - return { nodes: [], edges: [] }; -} - -export const ProjectDag = { - encode(message: ProjectDag, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.nodes) { - Node.encode(v!, writer.uint32(10).fork()).ldelim(); - } - for (const v of message.edges) { - Edge.encode(v!, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ProjectDag { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProjectDag(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.nodes.push(Node.decode(reader, reader.uint32())); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.edges.push(Edge.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ProjectDag { - return { - nodes: gt.Array.isArray(object?.nodes) ? object.nodes.map((e: any) => Node.fromJSON(e)) : [], - edges: gt.Array.isArray(object?.edges) ? object.edges.map((e: any) => Edge.fromJSON(e)) : [], - }; - }, - - toJSON(message: ProjectDag): unknown { - const obj: any = {}; - if (message.nodes?.length) { - obj.nodes = message.nodes.map((e) => Node.toJSON(e)); - } - if (message.edges?.length) { - obj.edges = message.edges.map((e) => Edge.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ProjectDag { - return ProjectDag.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ProjectDag { - const message = createBaseProjectDag(); - message.nodes = object.nodes?.map((e) => Node.fromPartial(e)) || []; - message.edges = object.edges?.map((e) => Edge.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseNode(): Node { - return { id: "", isCached: false }; -} - -export const Node = { - encode(message: Node, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.id !== "") { - writer.uint32(10).string(message.id); - } - if (message.isCached === true) { - writer.uint32(16).bool(message.isCached); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Node { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseNode(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.id = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.isCached = reader.bool(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Node { - return { - id: isSet(object.id) ? gt.String(object.id) : "", - isCached: isSet(object.isCached) ? gt.Boolean(object.isCached) : false, - }; - }, - - toJSON(message: Node): unknown { - const obj: any = {}; - if (message.id !== "") { - obj.id = message.id; - } - if (message.isCached === true) { - obj.isCached = message.isCached; - } - return obj; - }, - - create, I>>(base?: I): Node { - return Node.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Node { - const message = createBaseNode(); - message.id = object.id ?? ""; - message.isCached = object.isCached ?? false; - return message; - }, -}; - -function createBaseEdge(): Edge { - return { to: "", from: "" }; -} - -export const Edge = { - encode(message: Edge, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.to !== "") { - writer.uint32(10).string(message.to); - } - if (message.from !== "") { - writer.uint32(18).string(message.from); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Edge { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseEdge(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.to = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.from = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Edge { - return { to: isSet(object.to) ? gt.String(object.to) : "", from: isSet(object.from) ? gt.String(object.from) : "" }; - }, - - toJSON(message: Edge): unknown { - const obj: any = {}; - if (message.to !== "") { - obj.to = message.to; - } - if (message.from !== "") { - obj.from = message.from; - } - return obj; - }, - - create, I>>(base?: I): Edge { - return Edge.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Edge { - const message = createBaseEdge(); - message.to = object.to ?? ""; - message.from = object.from ?? ""; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/project_file.ts b/proto/gen/ts/quary/service/v1/project_file.ts deleted file mode 100644 index f132a49e..00000000 --- a/proto/gen/ts/quary/service/v1/project_file.ts +++ /dev/null @@ -1,1175 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -export interface ProjectFile { - sources: ProjectFileSource[]; - models: ProjectFile_Model[]; - snapshots: ProjectFile_Snapshot[]; -} - -export interface ProjectFile_Model { - name: string; - /** - * Tags are used to group different parts of the project together. For example, you could tag all models that are - * related to a specific department with the same tag. - */ - tags: string[]; - description?: - | string - | undefined; - /** The materialization of the model, available types are specified by each database. */ - materialization?: string | undefined; - tests: ModelTest[]; - columns: ProjectFileColumn[]; -} - -export interface ProjectFile_Snapshot { - name: string; - /** - * Tags are used to group different parts of the project together. For example, you could tag all models that are - * related to a specific department with the same tag. - */ - tags: string[]; - description?: string | undefined; - uniqueKey: string; - strategy: ProjectFile_SnapshotStrategy | undefined; -} - -export interface ProjectFile_SnapshotStrategy { - strategyType?: { $case: "timestamp"; timestamp: ProjectFile_TimestampStrategy } | undefined; -} - -export interface ProjectFile_TimestampStrategy { - updatedAt: string; -} - -export interface ProjectFileSource { - name: string; - /** - * Tags are used to group different parts of the project together. For example, you could tag all sources that are - * related to a specific department with the same tag. - */ - tags: string[]; - description?: - | string - | undefined; - /** - * The full path of the source table in the database. This is used to reference the table itself. For example: - * - 'public.users' for where the schema is 'public' and the table is 'users' - * - 'project_id_123.dataset_id_123.table_id_123' for a BigQuery table - */ - path: string; - tests: ModelTest[]; - columns: ProjectFileColumn[]; -} - -/** - * Standard types are: - * - not_null - * - unique - * - 'relationship' which takes into data (model and field) - */ -export interface ProjectFileColumn { - name: string; - description?: string | undefined; - tests: ColumnTest[]; -} - -export interface ColumnTest { - type: string; - info: { [key: string]: string }; -} - -export interface ColumnTest_InfoEntry { - key: string; - value: string; -} - -export interface ModelTest { - type: string; - info: { [key: string]: string }; -} - -export interface ModelTest_InfoEntry { - key: string; - value: string; -} - -function createBaseProjectFile(): ProjectFile { - return { sources: [], models: [], snapshots: [] }; -} - -export const ProjectFile = { - encode(message: ProjectFile, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.sources) { - ProjectFileSource.encode(v!, writer.uint32(10).fork()).ldelim(); - } - for (const v of message.models) { - ProjectFile_Model.encode(v!, writer.uint32(18).fork()).ldelim(); - } - for (const v of message.snapshots) { - ProjectFile_Snapshot.encode(v!, writer.uint32(26).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ProjectFile { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProjectFile(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.sources.push(ProjectFileSource.decode(reader, reader.uint32())); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.models.push(ProjectFile_Model.decode(reader, reader.uint32())); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.snapshots.push(ProjectFile_Snapshot.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ProjectFile { - return { - sources: gt.Array.isArray(object?.sources) ? object.sources.map((e: any) => ProjectFileSource.fromJSON(e)) : [], - models: gt.Array.isArray(object?.models) ? object.models.map((e: any) => ProjectFile_Model.fromJSON(e)) : [], - snapshots: gt.Array.isArray(object?.snapshots) - ? object.snapshots.map((e: any) => ProjectFile_Snapshot.fromJSON(e)) - : [], - }; - }, - - toJSON(message: ProjectFile): unknown { - const obj: any = {}; - if (message.sources?.length) { - obj.sources = message.sources.map((e) => ProjectFileSource.toJSON(e)); - } - if (message.models?.length) { - obj.models = message.models.map((e) => ProjectFile_Model.toJSON(e)); - } - if (message.snapshots?.length) { - obj.snapshots = message.snapshots.map((e) => ProjectFile_Snapshot.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ProjectFile { - return ProjectFile.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ProjectFile { - const message = createBaseProjectFile(); - message.sources = object.sources?.map((e) => ProjectFileSource.fromPartial(e)) || []; - message.models = object.models?.map((e) => ProjectFile_Model.fromPartial(e)) || []; - message.snapshots = object.snapshots?.map((e) => ProjectFile_Snapshot.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseProjectFile_Model(): ProjectFile_Model { - return { name: "", tags: [], description: undefined, materialization: undefined, tests: [], columns: [] }; -} - -export const ProjectFile_Model = { - encode(message: ProjectFile_Model, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - for (const v of message.tags) { - writer.uint32(50).string(v!); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - if (message.materialization !== undefined) { - writer.uint32(34).string(message.materialization); - } - for (const v of message.tests) { - ModelTest.encode(v!, writer.uint32(42).fork()).ldelim(); - } - for (const v of message.columns) { - ProjectFileColumn.encode(v!, writer.uint32(26).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ProjectFile_Model { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProjectFile_Model(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.tags.push(reader.string()); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.materialization = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.tests.push(ModelTest.decode(reader, reader.uint32())); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.columns.push(ProjectFileColumn.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ProjectFile_Model { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - tags: gt.Array.isArray(object?.tags) ? object.tags.map((e: any) => gt.String(e)) : [], - description: isSet(object.description) ? gt.String(object.description) : undefined, - materialization: isSet(object.materialization) ? gt.String(object.materialization) : undefined, - tests: gt.Array.isArray(object?.tests) ? object.tests.map((e: any) => ModelTest.fromJSON(e)) : [], - columns: gt.Array.isArray(object?.columns) ? object.columns.map((e: any) => ProjectFileColumn.fromJSON(e)) : [], - }; - }, - - toJSON(message: ProjectFile_Model): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.tags?.length) { - obj.tags = message.tags; - } - if (message.description !== undefined) { - obj.description = message.description; - } - if (message.materialization !== undefined) { - obj.materialization = message.materialization; - } - if (message.tests?.length) { - obj.tests = message.tests.map((e) => ModelTest.toJSON(e)); - } - if (message.columns?.length) { - obj.columns = message.columns.map((e) => ProjectFileColumn.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ProjectFile_Model { - return ProjectFile_Model.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ProjectFile_Model { - const message = createBaseProjectFile_Model(); - message.name = object.name ?? ""; - message.tags = object.tags?.map((e) => e) || []; - message.description = object.description ?? undefined; - message.materialization = object.materialization ?? undefined; - message.tests = object.tests?.map((e) => ModelTest.fromPartial(e)) || []; - message.columns = object.columns?.map((e) => ProjectFileColumn.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseProjectFile_Snapshot(): ProjectFile_Snapshot { - return { name: "", tags: [], description: undefined, uniqueKey: "", strategy: undefined }; -} - -export const ProjectFile_Snapshot = { - encode(message: ProjectFile_Snapshot, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - for (const v of message.tags) { - writer.uint32(34).string(v!); - } - if (message.description !== undefined) { - writer.uint32(42).string(message.description); - } - if (message.uniqueKey !== "") { - writer.uint32(18).string(message.uniqueKey); - } - if (message.strategy !== undefined) { - ProjectFile_SnapshotStrategy.encode(message.strategy, writer.uint32(26).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ProjectFile_Snapshot { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProjectFile_Snapshot(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.tags.push(reader.string()); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.description = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.uniqueKey = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.strategy = ProjectFile_SnapshotStrategy.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ProjectFile_Snapshot { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - tags: gt.Array.isArray(object?.tags) ? object.tags.map((e: any) => gt.String(e)) : [], - description: isSet(object.description) ? gt.String(object.description) : undefined, - uniqueKey: isSet(object.uniqueKey) ? gt.String(object.uniqueKey) : "", - strategy: isSet(object.strategy) ? ProjectFile_SnapshotStrategy.fromJSON(object.strategy) : undefined, - }; - }, - - toJSON(message: ProjectFile_Snapshot): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.tags?.length) { - obj.tags = message.tags; - } - if (message.description !== undefined) { - obj.description = message.description; - } - if (message.uniqueKey !== "") { - obj.uniqueKey = message.uniqueKey; - } - if (message.strategy !== undefined) { - obj.strategy = ProjectFile_SnapshotStrategy.toJSON(message.strategy); - } - return obj; - }, - - create, I>>(base?: I): ProjectFile_Snapshot { - return ProjectFile_Snapshot.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ProjectFile_Snapshot { - const message = createBaseProjectFile_Snapshot(); - message.name = object.name ?? ""; - message.tags = object.tags?.map((e) => e) || []; - message.description = object.description ?? undefined; - message.uniqueKey = object.uniqueKey ?? ""; - message.strategy = (object.strategy !== undefined && object.strategy !== null) - ? ProjectFile_SnapshotStrategy.fromPartial(object.strategy) - : undefined; - return message; - }, -}; - -function createBaseProjectFile_SnapshotStrategy(): ProjectFile_SnapshotStrategy { - return { strategyType: undefined }; -} - -export const ProjectFile_SnapshotStrategy = { - encode(message: ProjectFile_SnapshotStrategy, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.strategyType?.$case) { - case "timestamp": - ProjectFile_TimestampStrategy.encode(message.strategyType.timestamp, writer.uint32(10).fork()).ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ProjectFile_SnapshotStrategy { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProjectFile_SnapshotStrategy(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.strategyType = { - $case: "timestamp", - timestamp: ProjectFile_TimestampStrategy.decode(reader, reader.uint32()), - }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ProjectFile_SnapshotStrategy { - return { - strategyType: isSet(object.timestamp) - ? { $case: "timestamp", timestamp: ProjectFile_TimestampStrategy.fromJSON(object.timestamp) } - : undefined, - }; - }, - - toJSON(message: ProjectFile_SnapshotStrategy): unknown { - const obj: any = {}; - if (message.strategyType?.$case === "timestamp") { - obj.timestamp = ProjectFile_TimestampStrategy.toJSON(message.strategyType.timestamp); - } - return obj; - }, - - create, I>>(base?: I): ProjectFile_SnapshotStrategy { - return ProjectFile_SnapshotStrategy.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ProjectFile_SnapshotStrategy { - const message = createBaseProjectFile_SnapshotStrategy(); - if ( - object.strategyType?.$case === "timestamp" && - object.strategyType?.timestamp !== undefined && - object.strategyType?.timestamp !== null - ) { - message.strategyType = { - $case: "timestamp", - timestamp: ProjectFile_TimestampStrategy.fromPartial(object.strategyType.timestamp), - }; - } - return message; - }, -}; - -function createBaseProjectFile_TimestampStrategy(): ProjectFile_TimestampStrategy { - return { updatedAt: "" }; -} - -export const ProjectFile_TimestampStrategy = { - encode(message: ProjectFile_TimestampStrategy, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.updatedAt !== "") { - writer.uint32(10).string(message.updatedAt); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ProjectFile_TimestampStrategy { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProjectFile_TimestampStrategy(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.updatedAt = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ProjectFile_TimestampStrategy { - return { updatedAt: isSet(object.updatedAt) ? gt.String(object.updatedAt) : "" }; - }, - - toJSON(message: ProjectFile_TimestampStrategy): unknown { - const obj: any = {}; - if (message.updatedAt !== "") { - obj.updatedAt = message.updatedAt; - } - return obj; - }, - - create, I>>(base?: I): ProjectFile_TimestampStrategy { - return ProjectFile_TimestampStrategy.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): ProjectFile_TimestampStrategy { - const message = createBaseProjectFile_TimestampStrategy(); - message.updatedAt = object.updatedAt ?? ""; - return message; - }, -}; - -function createBaseProjectFileSource(): ProjectFileSource { - return { name: "", tags: [], description: undefined, path: "", tests: [], columns: [] }; -} - -export const ProjectFileSource = { - encode(message: ProjectFileSource, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - for (const v of message.tags) { - writer.uint32(50).string(v!); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - for (const v of message.tests) { - ModelTest.encode(v!, writer.uint32(42).fork()).ldelim(); - } - for (const v of message.columns) { - ProjectFileColumn.encode(v!, writer.uint32(34).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ProjectFileSource { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProjectFileSource(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.tags.push(reader.string()); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.tests.push(ModelTest.decode(reader, reader.uint32())); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.columns.push(ProjectFileColumn.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ProjectFileSource { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - tags: gt.Array.isArray(object?.tags) ? object.tags.map((e: any) => gt.String(e)) : [], - description: isSet(object.description) ? gt.String(object.description) : undefined, - path: isSet(object.path) ? gt.String(object.path) : "", - tests: gt.Array.isArray(object?.tests) ? object.tests.map((e: any) => ModelTest.fromJSON(e)) : [], - columns: gt.Array.isArray(object?.columns) ? object.columns.map((e: any) => ProjectFileColumn.fromJSON(e)) : [], - }; - }, - - toJSON(message: ProjectFileSource): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.tags?.length) { - obj.tags = message.tags; - } - if (message.description !== undefined) { - obj.description = message.description; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.tests?.length) { - obj.tests = message.tests.map((e) => ModelTest.toJSON(e)); - } - if (message.columns?.length) { - obj.columns = message.columns.map((e) => ProjectFileColumn.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ProjectFileSource { - return ProjectFileSource.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ProjectFileSource { - const message = createBaseProjectFileSource(); - message.name = object.name ?? ""; - message.tags = object.tags?.map((e) => e) || []; - message.description = object.description ?? undefined; - message.path = object.path ?? ""; - message.tests = object.tests?.map((e) => ModelTest.fromPartial(e)) || []; - message.columns = object.columns?.map((e) => ProjectFileColumn.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseProjectFileColumn(): ProjectFileColumn { - return { name: "", description: undefined, tests: [] }; -} - -export const ProjectFileColumn = { - encode(message: ProjectFileColumn, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - for (const v of message.tests) { - ColumnTest.encode(v!, writer.uint32(26).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ProjectFileColumn { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseProjectFileColumn(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.tests.push(ColumnTest.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ProjectFileColumn { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - description: isSet(object.description) ? gt.String(object.description) : undefined, - tests: gt.Array.isArray(object?.tests) ? object.tests.map((e: any) => ColumnTest.fromJSON(e)) : [], - }; - }, - - toJSON(message: ProjectFileColumn): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.description !== undefined) { - obj.description = message.description; - } - if (message.tests?.length) { - obj.tests = message.tests.map((e) => ColumnTest.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ProjectFileColumn { - return ProjectFileColumn.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ProjectFileColumn { - const message = createBaseProjectFileColumn(); - message.name = object.name ?? ""; - message.description = object.description ?? undefined; - message.tests = object.tests?.map((e) => ColumnTest.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseColumnTest(): ColumnTest { - return { type: "", info: {} }; -} - -export const ColumnTest = { - encode(message: ColumnTest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.type !== "") { - writer.uint32(10).string(message.type); - } - Object.entries(message.info).forEach(([key, value]) => { - ColumnTest_InfoEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).ldelim(); - }); - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ColumnTest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseColumnTest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.type = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - const entry2 = ColumnTest_InfoEntry.decode(reader, reader.uint32()); - if (entry2.value !== undefined) { - message.info[entry2.key] = entry2.value; - } - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ColumnTest { - return { - type: isSet(object.type) ? gt.String(object.type) : "", - info: isObject(object.info) - ? Object.entries(object.info).reduce<{ [key: string]: string }>((acc, [key, value]) => { - acc[key] = String(value); - return acc; - }, {}) - : {}, - }; - }, - - toJSON(message: ColumnTest): unknown { - const obj: any = {}; - if (message.type !== "") { - obj.type = message.type; - } - if (message.info) { - const entries = Object.entries(message.info); - if (entries.length > 0) { - obj.info = {}; - entries.forEach(([k, v]) => { - obj.info[k] = v; - }); - } - } - return obj; - }, - - create, I>>(base?: I): ColumnTest { - return ColumnTest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ColumnTest { - const message = createBaseColumnTest(); - message.type = object.type ?? ""; - message.info = Object.entries(object.info ?? {}).reduce<{ [key: string]: string }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = gt.String(value); - } - return acc; - }, {}); - return message; - }, -}; - -function createBaseColumnTest_InfoEntry(): ColumnTest_InfoEntry { - return { key: "", value: "" }; -} - -export const ColumnTest_InfoEntry = { - encode(message: ColumnTest_InfoEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== "") { - writer.uint32(18).string(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ColumnTest_InfoEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseColumnTest_InfoEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ColumnTest_InfoEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? gt.String(object.value) : "", - }; - }, - - toJSON(message: ColumnTest_InfoEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== "") { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): ColumnTest_InfoEntry { - return ColumnTest_InfoEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ColumnTest_InfoEntry { - const message = createBaseColumnTest_InfoEntry(); - message.key = object.key ?? ""; - message.value = object.value ?? ""; - return message; - }, -}; - -function createBaseModelTest(): ModelTest { - return { type: "", info: {} }; -} - -export const ModelTest = { - encode(message: ModelTest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.type !== "") { - writer.uint32(10).string(message.type); - } - Object.entries(message.info).forEach(([key, value]) => { - ModelTest_InfoEntry.encode({ key: key as any, value }, writer.uint32(18).fork()).ldelim(); - }); - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ModelTest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseModelTest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.type = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - const entry2 = ModelTest_InfoEntry.decode(reader, reader.uint32()); - if (entry2.value !== undefined) { - message.info[entry2.key] = entry2.value; - } - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ModelTest { - return { - type: isSet(object.type) ? gt.String(object.type) : "", - info: isObject(object.info) - ? Object.entries(object.info).reduce<{ [key: string]: string }>((acc, [key, value]) => { - acc[key] = String(value); - return acc; - }, {}) - : {}, - }; - }, - - toJSON(message: ModelTest): unknown { - const obj: any = {}; - if (message.type !== "") { - obj.type = message.type; - } - if (message.info) { - const entries = Object.entries(message.info); - if (entries.length > 0) { - obj.info = {}; - entries.forEach(([k, v]) => { - obj.info[k] = v; - }); - } - } - return obj; - }, - - create, I>>(base?: I): ModelTest { - return ModelTest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ModelTest { - const message = createBaseModelTest(); - message.type = object.type ?? ""; - message.info = Object.entries(object.info ?? {}).reduce<{ [key: string]: string }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = gt.String(value); - } - return acc; - }, {}); - return message; - }, -}; - -function createBaseModelTest_InfoEntry(): ModelTest_InfoEntry { - return { key: "", value: "" }; -} - -export const ModelTest_InfoEntry = { - encode(message: ModelTest_InfoEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== "") { - writer.uint32(18).string(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ModelTest_InfoEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseModelTest_InfoEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ModelTest_InfoEntry { - return { - key: isSet(object.key) ? gt.String(object.key) : "", - value: isSet(object.value) ? gt.String(object.value) : "", - }; - }, - - toJSON(message: ModelTest_InfoEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== "") { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): ModelTest_InfoEntry { - return ModelTest_InfoEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ModelTest_InfoEntry { - const message = createBaseModelTest_InfoEntry(); - message.key = object.key ?? ""; - message.value = object.value ?? ""; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isObject(value: any): boolean { - return typeof value === "object" && value !== null; -} - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/query_result.ts b/proto/gen/ts/quary/service/v1/query_result.ts deleted file mode 100644 index 133de3bd..00000000 --- a/proto/gen/ts/quary/service/v1/query_result.ts +++ /dev/null @@ -1,199 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -/** QueryResult is the result of a ran query. */ -export interface QueryResult { - columns: QueryResultColumn[]; -} - -export interface QueryResultColumn { - name: string; - type?: string | undefined; - values: string[]; -} - -function createBaseQueryResult(): QueryResult { - return { columns: [] }; -} - -export const QueryResult = { - encode(message: QueryResult, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.columns) { - QueryResultColumn.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): QueryResult { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseQueryResult(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.columns.push(QueryResultColumn.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): QueryResult { - return { - columns: gt.Array.isArray(object?.columns) ? object.columns.map((e: any) => QueryResultColumn.fromJSON(e)) : [], - }; - }, - - toJSON(message: QueryResult): unknown { - const obj: any = {}; - if (message.columns?.length) { - obj.columns = message.columns.map((e) => QueryResultColumn.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): QueryResult { - return QueryResult.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): QueryResult { - const message = createBaseQueryResult(); - message.columns = object.columns?.map((e) => QueryResultColumn.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseQueryResultColumn(): QueryResultColumn { - return { name: "", type: undefined, values: [] }; -} - -export const QueryResultColumn = { - encode(message: QueryResultColumn, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.type !== undefined) { - writer.uint32(26).string(message.type); - } - for (const v of message.values) { - writer.uint32(18).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): QueryResultColumn { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseQueryResultColumn(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.type = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.values.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): QueryResultColumn { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - type: isSet(object.type) ? gt.String(object.type) : undefined, - values: gt.Array.isArray(object?.values) ? object.values.map((e: any) => gt.String(e)) : [], - }; - }, - - toJSON(message: QueryResultColumn): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.type !== undefined) { - obj.type = message.type; - } - if (message.values?.length) { - obj.values = message.values; - } - return obj; - }, - - create, I>>(base?: I): QueryResultColumn { - return QueryResultColumn.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): QueryResultColumn { - const message = createBaseQueryResultColumn(); - message.name = object.name ?? ""; - message.type = object.type ?? undefined; - message.values = object.values?.map((e) => e) || []; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/range.ts b/proto/gen/ts/quary/service/v1/range.ts deleted file mode 100644 index 44afe841..00000000 --- a/proto/gen/ts/quary/service/v1/range.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; -import { Position } from "./position"; - -export const protobufPackage = "quary.service.v1"; - -/** Range represents a range of positions in a file. */ -export interface Range { - start: Position | undefined; - end: Position | undefined; -} - -function createBaseRange(): Range { - return { start: undefined, end: undefined }; -} - -export const Range = { - encode(message: Range, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.start !== undefined) { - Position.encode(message.start, writer.uint32(10).fork()).ldelim(); - } - if (message.end !== undefined) { - Position.encode(message.end, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Range { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRange(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.start = Position.decode(reader, reader.uint32()); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.end = Position.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Range { - return { - start: isSet(object.start) ? Position.fromJSON(object.start) : undefined, - end: isSet(object.end) ? Position.fromJSON(object.end) : undefined, - }; - }, - - toJSON(message: Range): unknown { - const obj: any = {}; - if (message.start !== undefined) { - obj.start = Position.toJSON(message.start); - } - if (message.end !== undefined) { - obj.end = Position.toJSON(message.end); - } - return obj; - }, - - create, I>>(base?: I): Range { - return Range.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Range { - const message = createBaseRange(); - message.start = (object.start !== undefined && object.start !== null) - ? Position.fromPartial(object.start) - : undefined; - message.end = (object.end !== undefined && object.end !== null) ? Position.fromPartial(object.end) : undefined; - return message; - }, -}; - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/table.ts b/proto/gen/ts/quary/service/v1/table.ts deleted file mode 100644 index 06203e2f..00000000 --- a/proto/gen/ts/quary/service/v1/table.ts +++ /dev/null @@ -1,1042 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; -import { Empty } from "../../../google/protobuf/empty"; -import { ColumnTest } from "./project_file"; - -export const protobufPackage = "quary.service.v1"; - -/** Table is a table in the project that is used to visualise columns, descriptions, and column tests. */ -export interface Table { - tableType?: { $case: "present"; present: Table_PresentInSchema } | { - $case: "notPresent"; - notPresent: Table_NotPresentInSchema; - } | undefined; -} - -/** - * PresentInSchema is a table that is present in a SQL document and in the YAML definitions. - * Values are inferred and read from YAML. - */ -export interface Table_PresentInSchema { - rows: Table_PresentInSchema_PresentRow[]; -} - -export interface Table_PresentInSchema_PresentRow { - row?: - | { $case: "presentInSqlAndDefinitions"; presentInSqlAndDefinitions: Row } - | { $case: "missingInDefinitions"; missingInDefinitions: Row } - | { $case: "presentInDefinitionsButNotRecognisableInSql"; presentInDefinitionsButNotRecognisableInSql: Row } - | undefined; -} - -/** - * NotPresentInSchema is a table that is present as SQL but not in the YAML definitions. And so all the values - * are inferred. - */ -export interface Table_NotPresentInSchema { - rows: Row[]; -} - -/** Row is a row in the table. */ -export interface Row { - title: string; - tests: RowTest[]; - description: RowDescription | undefined; -} - -/** - * TableTest is a test that is run against a row in a table. It is a oneof because the test can be inferred from the - * YAML definitions, or it can be present in the SQL document. - */ -export interface RowTest { - test?: - | { $case: "presentAndNotInferred"; presentAndNotInferred: RowTestDetails } - | { $case: "presentAndInferred"; presentAndInferred: RowTestDetails } - | { $case: "notPresentButInferred"; notPresentButInferred: RowTestDetails } - | undefined; -} - -/** - * RowTestDetails encapsulates the details of tests associated with row and column data. - * The 'column_test' field within this structure is specifically used to manage test operations - * such as deletion and addition. These operations are typically invoked through callbacks. - */ -export interface RowTestDetails { - text: string; - columnTest: ColumnTest | undefined; -} - -/** - * RowDescription is a description of a row in a table. It is a oneof because the description can be inferred from the - * YAML definitions and/or it can be present in the SQL document. - */ -export interface RowDescription { - description?: - | { $case: "present"; present: string } - | { $case: "presentAndInferredIdentical"; presentAndInferredIdentical: string } - | { $case: "presentWithDifferentInference"; presentWithDifferentInference: RowDescription_PresentWithInference } - | { $case: "inferred"; inferred: string } - | { $case: "notPresent"; notPresent: Empty } - | undefined; -} - -export interface RowDescription_PresentWithInference { - present: string; - inferred: string; -} - -function createBaseTable(): Table { - return { tableType: undefined }; -} - -export const Table = { - encode(message: Table, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.tableType?.$case) { - case "present": - Table_PresentInSchema.encode(message.tableType.present, writer.uint32(10).fork()).ldelim(); - break; - case "notPresent": - Table_NotPresentInSchema.encode(message.tableType.notPresent, writer.uint32(18).fork()).ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Table { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTable(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.tableType = { $case: "present", present: Table_PresentInSchema.decode(reader, reader.uint32()) }; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.tableType = { - $case: "notPresent", - notPresent: Table_NotPresentInSchema.decode(reader, reader.uint32()), - }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Table { - return { - tableType: isSet(object.present) - ? { $case: "present", present: Table_PresentInSchema.fromJSON(object.present) } - : isSet(object.notPresent) - ? { $case: "notPresent", notPresent: Table_NotPresentInSchema.fromJSON(object.notPresent) } - : undefined, - }; - }, - - toJSON(message: Table): unknown { - const obj: any = {}; - if (message.tableType?.$case === "present") { - obj.present = Table_PresentInSchema.toJSON(message.tableType.present); - } - if (message.tableType?.$case === "notPresent") { - obj.notPresent = Table_NotPresentInSchema.toJSON(message.tableType.notPresent); - } - return obj; - }, - - create, I>>(base?: I): Table { - return Table.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Table { - const message = createBaseTable(); - if ( - object.tableType?.$case === "present" && - object.tableType?.present !== undefined && - object.tableType?.present !== null - ) { - message.tableType = { $case: "present", present: Table_PresentInSchema.fromPartial(object.tableType.present) }; - } - if ( - object.tableType?.$case === "notPresent" && - object.tableType?.notPresent !== undefined && - object.tableType?.notPresent !== null - ) { - message.tableType = { - $case: "notPresent", - notPresent: Table_NotPresentInSchema.fromPartial(object.tableType.notPresent), - }; - } - return message; - }, -}; - -function createBaseTable_PresentInSchema(): Table_PresentInSchema { - return { rows: [] }; -} - -export const Table_PresentInSchema = { - encode(message: Table_PresentInSchema, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.rows) { - Table_PresentInSchema_PresentRow.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Table_PresentInSchema { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTable_PresentInSchema(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.rows.push(Table_PresentInSchema_PresentRow.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Table_PresentInSchema { - return { - rows: gt.Array.isArray(object?.rows) - ? object.rows.map((e: any) => Table_PresentInSchema_PresentRow.fromJSON(e)) - : [], - }; - }, - - toJSON(message: Table_PresentInSchema): unknown { - const obj: any = {}; - if (message.rows?.length) { - obj.rows = message.rows.map((e) => Table_PresentInSchema_PresentRow.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): Table_PresentInSchema { - return Table_PresentInSchema.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Table_PresentInSchema { - const message = createBaseTable_PresentInSchema(); - message.rows = object.rows?.map((e) => Table_PresentInSchema_PresentRow.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseTable_PresentInSchema_PresentRow(): Table_PresentInSchema_PresentRow { - return { row: undefined }; -} - -export const Table_PresentInSchema_PresentRow = { - encode(message: Table_PresentInSchema_PresentRow, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.row?.$case) { - case "presentInSqlAndDefinitions": - Row.encode(message.row.presentInSqlAndDefinitions, writer.uint32(10).fork()).ldelim(); - break; - case "missingInDefinitions": - Row.encode(message.row.missingInDefinitions, writer.uint32(18).fork()).ldelim(); - break; - case "presentInDefinitionsButNotRecognisableInSql": - Row.encode(message.row.presentInDefinitionsButNotRecognisableInSql, writer.uint32(26).fork()).ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Table_PresentInSchema_PresentRow { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTable_PresentInSchema_PresentRow(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.row = { - $case: "presentInSqlAndDefinitions", - presentInSqlAndDefinitions: Row.decode(reader, reader.uint32()), - }; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.row = { $case: "missingInDefinitions", missingInDefinitions: Row.decode(reader, reader.uint32()) }; - continue; - case 3: - if (tag !== 26) { - break; - } - - message.row = { - $case: "presentInDefinitionsButNotRecognisableInSql", - presentInDefinitionsButNotRecognisableInSql: Row.decode(reader, reader.uint32()), - }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Table_PresentInSchema_PresentRow { - return { - row: isSet(object.presentInSqlAndDefinitions) - ? { - $case: "presentInSqlAndDefinitions", - presentInSqlAndDefinitions: Row.fromJSON(object.presentInSqlAndDefinitions), - } - : isSet(object.missingInDefinitions) - ? { $case: "missingInDefinitions", missingInDefinitions: Row.fromJSON(object.missingInDefinitions) } - : isSet(object.presentInDefinitionsButNotRecognisableInSql) - ? { - $case: "presentInDefinitionsButNotRecognisableInSql", - presentInDefinitionsButNotRecognisableInSql: Row.fromJSON(object.presentInDefinitionsButNotRecognisableInSql), - } - : undefined, - }; - }, - - toJSON(message: Table_PresentInSchema_PresentRow): unknown { - const obj: any = {}; - if (message.row?.$case === "presentInSqlAndDefinitions") { - obj.presentInSqlAndDefinitions = Row.toJSON(message.row.presentInSqlAndDefinitions); - } - if (message.row?.$case === "missingInDefinitions") { - obj.missingInDefinitions = Row.toJSON(message.row.missingInDefinitions); - } - if (message.row?.$case === "presentInDefinitionsButNotRecognisableInSql") { - obj.presentInDefinitionsButNotRecognisableInSql = Row.toJSON( - message.row.presentInDefinitionsButNotRecognisableInSql, - ); - } - return obj; - }, - - create, I>>( - base?: I, - ): Table_PresentInSchema_PresentRow { - return Table_PresentInSchema_PresentRow.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): Table_PresentInSchema_PresentRow { - const message = createBaseTable_PresentInSchema_PresentRow(); - if ( - object.row?.$case === "presentInSqlAndDefinitions" && - object.row?.presentInSqlAndDefinitions !== undefined && - object.row?.presentInSqlAndDefinitions !== null - ) { - message.row = { - $case: "presentInSqlAndDefinitions", - presentInSqlAndDefinitions: Row.fromPartial(object.row.presentInSqlAndDefinitions), - }; - } - if ( - object.row?.$case === "missingInDefinitions" && - object.row?.missingInDefinitions !== undefined && - object.row?.missingInDefinitions !== null - ) { - message.row = { - $case: "missingInDefinitions", - missingInDefinitions: Row.fromPartial(object.row.missingInDefinitions), - }; - } - if ( - object.row?.$case === "presentInDefinitionsButNotRecognisableInSql" && - object.row?.presentInDefinitionsButNotRecognisableInSql !== undefined && - object.row?.presentInDefinitionsButNotRecognisableInSql !== null - ) { - message.row = { - $case: "presentInDefinitionsButNotRecognisableInSql", - presentInDefinitionsButNotRecognisableInSql: Row.fromPartial( - object.row.presentInDefinitionsButNotRecognisableInSql, - ), - }; - } - return message; - }, -}; - -function createBaseTable_NotPresentInSchema(): Table_NotPresentInSchema { - return { rows: [] }; -} - -export const Table_NotPresentInSchema = { - encode(message: Table_NotPresentInSchema, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.rows) { - Row.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Table_NotPresentInSchema { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTable_NotPresentInSchema(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.rows.push(Row.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Table_NotPresentInSchema { - return { rows: gt.Array.isArray(object?.rows) ? object.rows.map((e: any) => Row.fromJSON(e)) : [] }; - }, - - toJSON(message: Table_NotPresentInSchema): unknown { - const obj: any = {}; - if (message.rows?.length) { - obj.rows = message.rows.map((e) => Row.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): Table_NotPresentInSchema { - return Table_NotPresentInSchema.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Table_NotPresentInSchema { - const message = createBaseTable_NotPresentInSchema(); - message.rows = object.rows?.map((e) => Row.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseRow(): Row { - return { title: "", tests: [], description: undefined }; -} - -export const Row = { - encode(message: Row, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.title !== "") { - writer.uint32(10).string(message.title); - } - for (const v of message.tests) { - RowTest.encode(v!, writer.uint32(18).fork()).ldelim(); - } - if (message.description !== undefined) { - RowDescription.encode(message.description, writer.uint32(26).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Row { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRow(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.title = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.tests.push(RowTest.decode(reader, reader.uint32())); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.description = RowDescription.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Row { - return { - title: isSet(object.title) ? gt.String(object.title) : "", - tests: gt.Array.isArray(object?.tests) ? object.tests.map((e: any) => RowTest.fromJSON(e)) : [], - description: isSet(object.description) ? RowDescription.fromJSON(object.description) : undefined, - }; - }, - - toJSON(message: Row): unknown { - const obj: any = {}; - if (message.title !== "") { - obj.title = message.title; - } - if (message.tests?.length) { - obj.tests = message.tests.map((e) => RowTest.toJSON(e)); - } - if (message.description !== undefined) { - obj.description = RowDescription.toJSON(message.description); - } - return obj; - }, - - create, I>>(base?: I): Row { - return Row.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Row { - const message = createBaseRow(); - message.title = object.title ?? ""; - message.tests = object.tests?.map((e) => RowTest.fromPartial(e)) || []; - message.description = (object.description !== undefined && object.description !== null) - ? RowDescription.fromPartial(object.description) - : undefined; - return message; - }, -}; - -function createBaseRowTest(): RowTest { - return { test: undefined }; -} - -export const RowTest = { - encode(message: RowTest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.test?.$case) { - case "presentAndNotInferred": - RowTestDetails.encode(message.test.presentAndNotInferred, writer.uint32(10).fork()).ldelim(); - break; - case "presentAndInferred": - RowTestDetails.encode(message.test.presentAndInferred, writer.uint32(18).fork()).ldelim(); - break; - case "notPresentButInferred": - RowTestDetails.encode(message.test.notPresentButInferred, writer.uint32(26).fork()).ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RowTest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRowTest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.test = { - $case: "presentAndNotInferred", - presentAndNotInferred: RowTestDetails.decode(reader, reader.uint32()), - }; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.test = { - $case: "presentAndInferred", - presentAndInferred: RowTestDetails.decode(reader, reader.uint32()), - }; - continue; - case 3: - if (tag !== 26) { - break; - } - - message.test = { - $case: "notPresentButInferred", - notPresentButInferred: RowTestDetails.decode(reader, reader.uint32()), - }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RowTest { - return { - test: isSet(object.presentAndNotInferred) - ? { - $case: "presentAndNotInferred", - presentAndNotInferred: RowTestDetails.fromJSON(object.presentAndNotInferred), - } - : isSet(object.presentAndInferred) - ? { $case: "presentAndInferred", presentAndInferred: RowTestDetails.fromJSON(object.presentAndInferred) } - : isSet(object.notPresentButInferred) - ? { - $case: "notPresentButInferred", - notPresentButInferred: RowTestDetails.fromJSON(object.notPresentButInferred), - } - : undefined, - }; - }, - - toJSON(message: RowTest): unknown { - const obj: any = {}; - if (message.test?.$case === "presentAndNotInferred") { - obj.presentAndNotInferred = RowTestDetails.toJSON(message.test.presentAndNotInferred); - } - if (message.test?.$case === "presentAndInferred") { - obj.presentAndInferred = RowTestDetails.toJSON(message.test.presentAndInferred); - } - if (message.test?.$case === "notPresentButInferred") { - obj.notPresentButInferred = RowTestDetails.toJSON(message.test.notPresentButInferred); - } - return obj; - }, - - create, I>>(base?: I): RowTest { - return RowTest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RowTest { - const message = createBaseRowTest(); - if ( - object.test?.$case === "presentAndNotInferred" && - object.test?.presentAndNotInferred !== undefined && - object.test?.presentAndNotInferred !== null - ) { - message.test = { - $case: "presentAndNotInferred", - presentAndNotInferred: RowTestDetails.fromPartial(object.test.presentAndNotInferred), - }; - } - if ( - object.test?.$case === "presentAndInferred" && - object.test?.presentAndInferred !== undefined && - object.test?.presentAndInferred !== null - ) { - message.test = { - $case: "presentAndInferred", - presentAndInferred: RowTestDetails.fromPartial(object.test.presentAndInferred), - }; - } - if ( - object.test?.$case === "notPresentButInferred" && - object.test?.notPresentButInferred !== undefined && - object.test?.notPresentButInferred !== null - ) { - message.test = { - $case: "notPresentButInferred", - notPresentButInferred: RowTestDetails.fromPartial(object.test.notPresentButInferred), - }; - } - return message; - }, -}; - -function createBaseRowTestDetails(): RowTestDetails { - return { text: "", columnTest: undefined }; -} - -export const RowTestDetails = { - encode(message: RowTestDetails, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.text !== "") { - writer.uint32(10).string(message.text); - } - if (message.columnTest !== undefined) { - ColumnTest.encode(message.columnTest, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RowTestDetails { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRowTestDetails(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.text = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.columnTest = ColumnTest.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RowTestDetails { - return { - text: isSet(object.text) ? gt.String(object.text) : "", - columnTest: isSet(object.columnTest) ? ColumnTest.fromJSON(object.columnTest) : undefined, - }; - }, - - toJSON(message: RowTestDetails): unknown { - const obj: any = {}; - if (message.text !== "") { - obj.text = message.text; - } - if (message.columnTest !== undefined) { - obj.columnTest = ColumnTest.toJSON(message.columnTest); - } - return obj; - }, - - create, I>>(base?: I): RowTestDetails { - return RowTestDetails.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RowTestDetails { - const message = createBaseRowTestDetails(); - message.text = object.text ?? ""; - message.columnTest = (object.columnTest !== undefined && object.columnTest !== null) - ? ColumnTest.fromPartial(object.columnTest) - : undefined; - return message; - }, -}; - -function createBaseRowDescription(): RowDescription { - return { description: undefined }; -} - -export const RowDescription = { - encode(message: RowDescription, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.description?.$case) { - case "present": - writer.uint32(10).string(message.description.present); - break; - case "presentAndInferredIdentical": - writer.uint32(18).string(message.description.presentAndInferredIdentical); - break; - case "presentWithDifferentInference": - RowDescription_PresentWithInference.encode( - message.description.presentWithDifferentInference, - writer.uint32(26).fork(), - ).ldelim(); - break; - case "inferred": - writer.uint32(34).string(message.description.inferred); - break; - case "notPresent": - Empty.encode(message.description.notPresent, writer.uint32(42).fork()).ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RowDescription { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRowDescription(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.description = { $case: "present", present: reader.string() }; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = { $case: "presentAndInferredIdentical", presentAndInferredIdentical: reader.string() }; - continue; - case 3: - if (tag !== 26) { - break; - } - - message.description = { - $case: "presentWithDifferentInference", - presentWithDifferentInference: RowDescription_PresentWithInference.decode(reader, reader.uint32()), - }; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.description = { $case: "inferred", inferred: reader.string() }; - continue; - case 5: - if (tag !== 42) { - break; - } - - message.description = { $case: "notPresent", notPresent: Empty.decode(reader, reader.uint32()) }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RowDescription { - return { - description: isSet(object.present) - ? { $case: "present", present: gt.String(object.present) } - : isSet(object.presentAndInferredIdentical) - ? { - $case: "presentAndInferredIdentical", - presentAndInferredIdentical: gt.String(object.presentAndInferredIdentical), - } - : isSet(object.presentWithDifferentInference) - ? { - $case: "presentWithDifferentInference", - presentWithDifferentInference: RowDescription_PresentWithInference.fromJSON( - object.presentWithDifferentInference, - ), - } - : isSet(object.inferred) - ? { $case: "inferred", inferred: gt.String(object.inferred) } - : isSet(object.notPresent) - ? { $case: "notPresent", notPresent: Empty.fromJSON(object.notPresent) } - : undefined, - }; - }, - - toJSON(message: RowDescription): unknown { - const obj: any = {}; - if (message.description?.$case === "present") { - obj.present = message.description.present; - } - if (message.description?.$case === "presentAndInferredIdentical") { - obj.presentAndInferredIdentical = message.description.presentAndInferredIdentical; - } - if (message.description?.$case === "presentWithDifferentInference") { - obj.presentWithDifferentInference = RowDescription_PresentWithInference.toJSON( - message.description.presentWithDifferentInference, - ); - } - if (message.description?.$case === "inferred") { - obj.inferred = message.description.inferred; - } - if (message.description?.$case === "notPresent") { - obj.notPresent = Empty.toJSON(message.description.notPresent); - } - return obj; - }, - - create, I>>(base?: I): RowDescription { - return RowDescription.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RowDescription { - const message = createBaseRowDescription(); - if ( - object.description?.$case === "present" && - object.description?.present !== undefined && - object.description?.present !== null - ) { - message.description = { $case: "present", present: object.description.present }; - } - if ( - object.description?.$case === "presentAndInferredIdentical" && - object.description?.presentAndInferredIdentical !== undefined && - object.description?.presentAndInferredIdentical !== null - ) { - message.description = { - $case: "presentAndInferredIdentical", - presentAndInferredIdentical: object.description.presentAndInferredIdentical, - }; - } - if ( - object.description?.$case === "presentWithDifferentInference" && - object.description?.presentWithDifferentInference !== undefined && - object.description?.presentWithDifferentInference !== null - ) { - message.description = { - $case: "presentWithDifferentInference", - presentWithDifferentInference: RowDescription_PresentWithInference.fromPartial( - object.description.presentWithDifferentInference, - ), - }; - } - if ( - object.description?.$case === "inferred" && - object.description?.inferred !== undefined && - object.description?.inferred !== null - ) { - message.description = { $case: "inferred", inferred: object.description.inferred }; - } - if ( - object.description?.$case === "notPresent" && - object.description?.notPresent !== undefined && - object.description?.notPresent !== null - ) { - message.description = { $case: "notPresent", notPresent: Empty.fromPartial(object.description.notPresent) }; - } - return message; - }, -}; - -function createBaseRowDescription_PresentWithInference(): RowDescription_PresentWithInference { - return { present: "", inferred: "" }; -} - -export const RowDescription_PresentWithInference = { - encode(message: RowDescription_PresentWithInference, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.present !== "") { - writer.uint32(10).string(message.present); - } - if (message.inferred !== "") { - writer.uint32(18).string(message.inferred); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RowDescription_PresentWithInference { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRowDescription_PresentWithInference(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.present = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.inferred = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RowDescription_PresentWithInference { - return { - present: isSet(object.present) ? gt.String(object.present) : "", - inferred: isSet(object.inferred) ? gt.String(object.inferred) : "", - }; - }, - - toJSON(message: RowDescription_PresentWithInference): unknown { - const obj: any = {}; - if (message.present !== "") { - obj.present = message.present; - } - if (message.inferred !== "") { - obj.inferred = message.inferred; - } - return obj; - }, - - create, I>>( - base?: I, - ): RowDescription_PresentWithInference { - return RowDescription_PresentWithInference.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): RowDescription_PresentWithInference { - const message = createBaseRowDescription_PresentWithInference(); - message.present = object.present ?? ""; - message.inferred = object.inferred ?? ""; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/table_address.ts b/proto/gen/ts/quary/service/v1/table_address.ts deleted file mode 100644 index 7eb2203d..00000000 --- a/proto/gen/ts/quary/service/v1/table_address.ts +++ /dev/null @@ -1,120 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -/** TableAddress is a struct that represents a table in a database. It contains the name of the table and the full path. */ -export interface TableAddress { - name: string; - fullPath: string; -} - -function createBaseTableAddress(): TableAddress { - return { name: "", fullPath: "" }; -} - -export const TableAddress = { - encode(message: TableAddress, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.fullPath !== "") { - writer.uint32(18).string(message.fullPath); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TableAddress { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTableAddress(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.fullPath = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TableAddress { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - fullPath: isSet(object.fullPath) ? gt.String(object.fullPath) : "", - }; - }, - - toJSON(message: TableAddress): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.fullPath !== "") { - obj.fullPath = message.fullPath; - } - return obj; - }, - - create, I>>(base?: I): TableAddress { - return TableAddress.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TableAddress { - const message = createBaseTableAddress(); - message.name = object.name ?? ""; - message.fullPath = object.fullPath ?? ""; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/test_result.ts b/proto/gen/ts/quary/service/v1/test_result.ts deleted file mode 100644 index 149534df..00000000 --- a/proto/gen/ts/quary/service/v1/test_result.ts +++ /dev/null @@ -1,672 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; -import { Empty } from "../../../google/protobuf/empty"; -import { QueryResult } from "./query_result"; - -export const protobufPackage = "quary.service.v1"; - -/** TestResult is the result of a test serializable so it can be shared */ -export interface TestResult { - testName: string; - query: string; - testResult?: { $case: "passed"; passed: Passed } | { $case: "failed"; failed: Failed } | undefined; -} - -export interface InferredChain { - inferredChain: string[]; -} - -export interface InferredChainWithOperation { - inferredChain: string[]; - operation: string; -} - -export interface Passed { - reason?: - | { $case: "ran"; ran: Empty } - | { $case: "inferredFromTests"; inferredFromTests: InferredChain } - | { $case: "inferredFromLogic"; inferredFromLogic: string } - | { $case: "inferredThroughTestsOperation"; inferredThroughTestsOperation: InferredChainWithOperation } - | undefined; -} - -export interface Failed { - reason?: - | { $case: "ran"; ran: FailedRunResults } - | { $case: "inferredFromTests"; inferredFromTests: InferredChain } - | { $case: "inferredThroughTestsOperation"; inferredThroughTestsOperation: InferredChainWithOperation } - | undefined; -} - -export interface FailedRunResults { - queryResult: QueryResult | undefined; -} - -function createBaseTestResult(): TestResult { - return { testName: "", query: "", testResult: undefined }; -} - -export const TestResult = { - encode(message: TestResult, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.testName !== "") { - writer.uint32(10).string(message.testName); - } - if (message.query !== "") { - writer.uint32(18).string(message.query); - } - switch (message.testResult?.$case) { - case "passed": - Passed.encode(message.testResult.passed, writer.uint32(26).fork()).ldelim(); - break; - case "failed": - Failed.encode(message.testResult.failed, writer.uint32(34).fork()).ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestResult { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestResult(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.testName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.query = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.testResult = { $case: "passed", passed: Passed.decode(reader, reader.uint32()) }; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.testResult = { $case: "failed", failed: Failed.decode(reader, reader.uint32()) }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestResult { - return { - testName: isSet(object.testName) ? gt.String(object.testName) : "", - query: isSet(object.query) ? gt.String(object.query) : "", - testResult: isSet(object.passed) - ? { $case: "passed", passed: Passed.fromJSON(object.passed) } - : isSet(object.failed) - ? { $case: "failed", failed: Failed.fromJSON(object.failed) } - : undefined, - }; - }, - - toJSON(message: TestResult): unknown { - const obj: any = {}; - if (message.testName !== "") { - obj.testName = message.testName; - } - if (message.query !== "") { - obj.query = message.query; - } - if (message.testResult?.$case === "passed") { - obj.passed = Passed.toJSON(message.testResult.passed); - } - if (message.testResult?.$case === "failed") { - obj.failed = Failed.toJSON(message.testResult.failed); - } - return obj; - }, - - create, I>>(base?: I): TestResult { - return TestResult.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestResult { - const message = createBaseTestResult(); - message.testName = object.testName ?? ""; - message.query = object.query ?? ""; - if ( - object.testResult?.$case === "passed" && - object.testResult?.passed !== undefined && - object.testResult?.passed !== null - ) { - message.testResult = { $case: "passed", passed: Passed.fromPartial(object.testResult.passed) }; - } - if ( - object.testResult?.$case === "failed" && - object.testResult?.failed !== undefined && - object.testResult?.failed !== null - ) { - message.testResult = { $case: "failed", failed: Failed.fromPartial(object.testResult.failed) }; - } - return message; - }, -}; - -function createBaseInferredChain(): InferredChain { - return { inferredChain: [] }; -} - -export const InferredChain = { - encode(message: InferredChain, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.inferredChain) { - writer.uint32(10).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): InferredChain { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseInferredChain(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.inferredChain.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): InferredChain { - return { - inferredChain: gt.Array.isArray(object?.inferredChain) ? object.inferredChain.map((e: any) => gt.String(e)) : [], - }; - }, - - toJSON(message: InferredChain): unknown { - const obj: any = {}; - if (message.inferredChain?.length) { - obj.inferredChain = message.inferredChain; - } - return obj; - }, - - create, I>>(base?: I): InferredChain { - return InferredChain.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): InferredChain { - const message = createBaseInferredChain(); - message.inferredChain = object.inferredChain?.map((e) => e) || []; - return message; - }, -}; - -function createBaseInferredChainWithOperation(): InferredChainWithOperation { - return { inferredChain: [], operation: "" }; -} - -export const InferredChainWithOperation = { - encode(message: InferredChainWithOperation, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.inferredChain) { - writer.uint32(10).string(v!); - } - if (message.operation !== "") { - writer.uint32(18).string(message.operation); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): InferredChainWithOperation { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseInferredChainWithOperation(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.inferredChain.push(reader.string()); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.operation = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): InferredChainWithOperation { - return { - inferredChain: gt.Array.isArray(object?.inferredChain) ? object.inferredChain.map((e: any) => gt.String(e)) : [], - operation: isSet(object.operation) ? gt.String(object.operation) : "", - }; - }, - - toJSON(message: InferredChainWithOperation): unknown { - const obj: any = {}; - if (message.inferredChain?.length) { - obj.inferredChain = message.inferredChain; - } - if (message.operation !== "") { - obj.operation = message.operation; - } - return obj; - }, - - create, I>>(base?: I): InferredChainWithOperation { - return InferredChainWithOperation.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): InferredChainWithOperation { - const message = createBaseInferredChainWithOperation(); - message.inferredChain = object.inferredChain?.map((e) => e) || []; - message.operation = object.operation ?? ""; - return message; - }, -}; - -function createBasePassed(): Passed { - return { reason: undefined }; -} - -export const Passed = { - encode(message: Passed, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.reason?.$case) { - case "ran": - Empty.encode(message.reason.ran, writer.uint32(10).fork()).ldelim(); - break; - case "inferredFromTests": - InferredChain.encode(message.reason.inferredFromTests, writer.uint32(18).fork()).ldelim(); - break; - case "inferredFromLogic": - writer.uint32(26).string(message.reason.inferredFromLogic); - break; - case "inferredThroughTestsOperation": - InferredChainWithOperation.encode(message.reason.inferredThroughTestsOperation, writer.uint32(34).fork()) - .ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Passed { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBasePassed(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.reason = { $case: "ran", ran: Empty.decode(reader, reader.uint32()) }; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.reason = { - $case: "inferredFromTests", - inferredFromTests: InferredChain.decode(reader, reader.uint32()), - }; - continue; - case 3: - if (tag !== 26) { - break; - } - - message.reason = { $case: "inferredFromLogic", inferredFromLogic: reader.string() }; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.reason = { - $case: "inferredThroughTestsOperation", - inferredThroughTestsOperation: InferredChainWithOperation.decode(reader, reader.uint32()), - }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Passed { - return { - reason: isSet(object.ran) - ? { $case: "ran", ran: Empty.fromJSON(object.ran) } - : isSet(object.inferredFromTests) - ? { $case: "inferredFromTests", inferredFromTests: InferredChain.fromJSON(object.inferredFromTests) } - : isSet(object.inferredFromLogic) - ? { $case: "inferredFromLogic", inferredFromLogic: gt.String(object.inferredFromLogic) } - : isSet(object.inferredThroughTestsOperation) - ? { - $case: "inferredThroughTestsOperation", - inferredThroughTestsOperation: InferredChainWithOperation.fromJSON(object.inferredThroughTestsOperation), - } - : undefined, - }; - }, - - toJSON(message: Passed): unknown { - const obj: any = {}; - if (message.reason?.$case === "ran") { - obj.ran = Empty.toJSON(message.reason.ran); - } - if (message.reason?.$case === "inferredFromTests") { - obj.inferredFromTests = InferredChain.toJSON(message.reason.inferredFromTests); - } - if (message.reason?.$case === "inferredFromLogic") { - obj.inferredFromLogic = message.reason.inferredFromLogic; - } - if (message.reason?.$case === "inferredThroughTestsOperation") { - obj.inferredThroughTestsOperation = InferredChainWithOperation.toJSON( - message.reason.inferredThroughTestsOperation, - ); - } - return obj; - }, - - create, I>>(base?: I): Passed { - return Passed.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Passed { - const message = createBasePassed(); - if (object.reason?.$case === "ran" && object.reason?.ran !== undefined && object.reason?.ran !== null) { - message.reason = { $case: "ran", ran: Empty.fromPartial(object.reason.ran) }; - } - if ( - object.reason?.$case === "inferredFromTests" && - object.reason?.inferredFromTests !== undefined && - object.reason?.inferredFromTests !== null - ) { - message.reason = { - $case: "inferredFromTests", - inferredFromTests: InferredChain.fromPartial(object.reason.inferredFromTests), - }; - } - if ( - object.reason?.$case === "inferredFromLogic" && - object.reason?.inferredFromLogic !== undefined && - object.reason?.inferredFromLogic !== null - ) { - message.reason = { $case: "inferredFromLogic", inferredFromLogic: object.reason.inferredFromLogic }; - } - if ( - object.reason?.$case === "inferredThroughTestsOperation" && - object.reason?.inferredThroughTestsOperation !== undefined && - object.reason?.inferredThroughTestsOperation !== null - ) { - message.reason = { - $case: "inferredThroughTestsOperation", - inferredThroughTestsOperation: InferredChainWithOperation.fromPartial( - object.reason.inferredThroughTestsOperation, - ), - }; - } - return message; - }, -}; - -function createBaseFailed(): Failed { - return { reason: undefined }; -} - -export const Failed = { - encode(message: Failed, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.reason?.$case) { - case "ran": - FailedRunResults.encode(message.reason.ran, writer.uint32(10).fork()).ldelim(); - break; - case "inferredFromTests": - InferredChain.encode(message.reason.inferredFromTests, writer.uint32(18).fork()).ldelim(); - break; - case "inferredThroughTestsOperation": - InferredChainWithOperation.encode(message.reason.inferredThroughTestsOperation, writer.uint32(26).fork()) - .ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Failed { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseFailed(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.reason = { $case: "ran", ran: FailedRunResults.decode(reader, reader.uint32()) }; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.reason = { - $case: "inferredFromTests", - inferredFromTests: InferredChain.decode(reader, reader.uint32()), - }; - continue; - case 3: - if (tag !== 26) { - break; - } - - message.reason = { - $case: "inferredThroughTestsOperation", - inferredThroughTestsOperation: InferredChainWithOperation.decode(reader, reader.uint32()), - }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Failed { - return { - reason: isSet(object.ran) - ? { $case: "ran", ran: FailedRunResults.fromJSON(object.ran) } - : isSet(object.inferredFromTests) - ? { $case: "inferredFromTests", inferredFromTests: InferredChain.fromJSON(object.inferredFromTests) } - : isSet(object.inferredThroughTestsOperation) - ? { - $case: "inferredThroughTestsOperation", - inferredThroughTestsOperation: InferredChainWithOperation.fromJSON(object.inferredThroughTestsOperation), - } - : undefined, - }; - }, - - toJSON(message: Failed): unknown { - const obj: any = {}; - if (message.reason?.$case === "ran") { - obj.ran = FailedRunResults.toJSON(message.reason.ran); - } - if (message.reason?.$case === "inferredFromTests") { - obj.inferredFromTests = InferredChain.toJSON(message.reason.inferredFromTests); - } - if (message.reason?.$case === "inferredThroughTestsOperation") { - obj.inferredThroughTestsOperation = InferredChainWithOperation.toJSON( - message.reason.inferredThroughTestsOperation, - ); - } - return obj; - }, - - create, I>>(base?: I): Failed { - return Failed.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Failed { - const message = createBaseFailed(); - if (object.reason?.$case === "ran" && object.reason?.ran !== undefined && object.reason?.ran !== null) { - message.reason = { $case: "ran", ran: FailedRunResults.fromPartial(object.reason.ran) }; - } - if ( - object.reason?.$case === "inferredFromTests" && - object.reason?.inferredFromTests !== undefined && - object.reason?.inferredFromTests !== null - ) { - message.reason = { - $case: "inferredFromTests", - inferredFromTests: InferredChain.fromPartial(object.reason.inferredFromTests), - }; - } - if ( - object.reason?.$case === "inferredThroughTestsOperation" && - object.reason?.inferredThroughTestsOperation !== undefined && - object.reason?.inferredThroughTestsOperation !== null - ) { - message.reason = { - $case: "inferredThroughTestsOperation", - inferredThroughTestsOperation: InferredChainWithOperation.fromPartial( - object.reason.inferredThroughTestsOperation, - ), - }; - } - return message; - }, -}; - -function createBaseFailedRunResults(): FailedRunResults { - return { queryResult: undefined }; -} - -export const FailedRunResults = { - encode(message: FailedRunResults, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.queryResult !== undefined) { - QueryResult.encode(message.queryResult, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): FailedRunResults { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseFailedRunResults(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.queryResult = QueryResult.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): FailedRunResults { - return { queryResult: isSet(object.queryResult) ? QueryResult.fromJSON(object.queryResult) : undefined }; - }, - - toJSON(message: FailedRunResults): unknown { - const obj: any = {}; - if (message.queryResult !== undefined) { - obj.queryResult = QueryResult.toJSON(message.queryResult); - } - return obj; - }, - - create, I>>(base?: I): FailedRunResults { - return FailedRunResults.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): FailedRunResults { - const message = createBaseFailedRunResults(); - message.queryResult = (object.queryResult !== undefined && object.queryResult !== null) - ? QueryResult.fromPartial(object.queryResult) - : undefined; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/proto/gen/ts/quary/service/v1/test_results.ts b/proto/gen/ts/quary/service/v1/test_results.ts deleted file mode 100644 index 3582fefb..00000000 --- a/proto/gen/ts/quary/service/v1/test_results.ts +++ /dev/null @@ -1,102 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; -import { TestResult } from "./test_result"; - -export const protobufPackage = "quary.service.v1"; - -/** - * WasmRunTestResponse is a temporary message type to work on inferring in Rust rather than in Typescript. - * The goal is to make better interfaces over time. - */ -export interface TestResults { - results: TestResult[]; -} - -function createBaseTestResults(): TestResults { - return { results: [] }; -} - -export const TestResults = { - encode(message: TestResults, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.results) { - TestResult.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestResults { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestResults(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.results.push(TestResult.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestResults { - return { results: gt.Array.isArray(object?.results) ? object.results.map((e: any) => TestResult.fromJSON(e)) : [] }; - }, - - toJSON(message: TestResults): unknown { - const obj: any = {}; - if (message.results?.length) { - obj.results = message.results.map((e) => TestResult.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): TestResults { - return TestResults.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestResults { - const message = createBaseTestResults(); - message.results = object.results?.map((e) => TestResult.fromPartial(e)) || []; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; diff --git a/proto/gen/ts/quary/service/v1/test_runner.ts b/proto/gen/ts/quary/service/v1/test_runner.ts deleted file mode 100644 index 13bf4fdf..00000000 --- a/proto/gen/ts/quary/service/v1/test_runner.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* eslint-disable */ - -export const protobufPackage = "quary.service.v1"; - -export enum TestRunner { - TEST_RUNNER_UNSPECIFIED = 0, - /** TEST_RUNNER_ALL - TEST_RUNNER_ALL is a runner that will run all the tests in the test suite. */ - TEST_RUNNER_ALL = 1, - /** TEST_RUNNER_SKIP - TEST_RUNNER_NONE is a runner that will run skip tests in the test suite that can be inferred from other tests in the test suite. */ - TEST_RUNNER_SKIP = 2, - UNRECOGNIZED = -1, -} - -export function testRunnerFromJSON(object: any): TestRunner { - switch (object) { - case 0: - case "TEST_RUNNER_UNSPECIFIED": - return TestRunner.TEST_RUNNER_UNSPECIFIED; - case 1: - case "TEST_RUNNER_ALL": - return TestRunner.TEST_RUNNER_ALL; - case 2: - case "TEST_RUNNER_SKIP": - return TestRunner.TEST_RUNNER_SKIP; - case -1: - case "UNRECOGNIZED": - default: - return TestRunner.UNRECOGNIZED; - } -} - -export function testRunnerToJSON(object: TestRunner): string { - switch (object) { - case TestRunner.TEST_RUNNER_UNSPECIFIED: - return "TEST_RUNNER_UNSPECIFIED"; - case TestRunner.TEST_RUNNER_ALL: - return "TEST_RUNNER_ALL"; - case TestRunner.TEST_RUNNER_SKIP: - return "TEST_RUNNER_SKIP"; - case TestRunner.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} diff --git a/proto/gen/ts/quary/service/v1/types.ts b/proto/gen/ts/quary/service/v1/types.ts deleted file mode 100644 index cbfb9a0a..00000000 --- a/proto/gen/ts/quary/service/v1/types.ts +++ /dev/null @@ -1,2590 +0,0 @@ -/* eslint-disable */ -import * as _m0 from "protobufjs/minimal"; - -export const protobufPackage = "quary.service.v1"; - -export interface Test { - testType?: - | { $case: "sql"; sql: TestSQLFile } - | { $case: "unique"; unique: TestUnique } - | { $case: "notNull"; notNull: TestNotNull } - | { $case: "relationship"; relationship: TestRelationship } - | { $case: "acceptedValues"; acceptedValues: TestAcceptedValues } - | { $case: "greaterThanOrEqual"; greaterThanOrEqual: TestGreaterThanOrEqual } - | { $case: "lessThanOrEqual"; lessThanOrEqual: TestLessThanOrEqual } - | { $case: "greaterThan"; greaterThan: TestGreaterThan } - | { $case: "lessThan"; lessThan: TestLessThan } - | { $case: "multiColumnUnique"; multiColumnUnique: TestMultiColumnUnique } - | undefined; -} - -export interface TestSQLFile { - filePath: string; - references: string[]; -} - -export interface TestUnique { - filePath: string; - model: string; - path: string; - column: string; -} - -export interface TestNotNull { - filePath: string; - model: string; - path: string; - column: string; -} - -export interface TestGreaterThanOrEqual { - filePath: string; - model: string; - path: string; - column: string; - value: string; -} - -export interface TestLessThanOrEqual { - filePath: string; - model: string; - path: string; - column: string; - value: string; -} - -export interface TestGreaterThan { - filePath: string; - model: string; - path: string; - column: string; - value: string; -} - -export interface TestLessThan { - filePath: string; - model: string; - path: string; - column: string; - value: string; -} - -export interface TestRelationship { - filePath: string; - sourceModel: string; - sourcePath: string; - sourceColumn: string; - targetModel: string; - targetPath: string; - targetColumn: string; -} - -export interface TestAcceptedValues { - filePath: string; - model: string; - path: string; - column: string; - acceptedValues: string[]; -} - -export interface TestMultiColumnUnique { - filePath: string; - model: string; - path: string; - columns: string[]; -} - -export interface Seed { - name: string; - filePath: string; - fileSha256Hash: string; -} - -export interface Model { - name: string; - description?: - | string - | undefined; - /** Tags are used to group different parts of the project together. */ - tags: string[]; - filePath: string; - fileSha256Hash: string; - materialization?: string | undefined; - columns: Model_ModelColum[]; - /** - * References to other models/seeds/snapshots that are used in the model. These are unique keys and sorted - * alphabetically. - */ - references: string[]; -} - -export interface Model_ModelColum { - title: string; - description?: string | undefined; -} - -export interface Snapshot { - name: string; - description?: - | string - | undefined; - /** Tags are used to group different parts of the project together. */ - tags: string[]; - filePath: string; - fileSha256Hash: string; - uniqueKey: string; - strategy: - | Snapshot_SnapshotStrategy - | undefined; - /** - * References to other seeds/sources that are used in the snapshot. These are unique keys and sorted - * alphabetically. - */ - references: string[]; -} - -export interface Snapshot_SnapshotStrategy { - strategyType?: { $case: "timestamp"; timestamp: Snapshot_SnapshotStrategy_TimestampStrategy } | undefined; -} - -export interface Snapshot_SnapshotStrategy_TimestampStrategy { - updatedAt: string; -} - -/** Generic source structure, used as input to generate the quary-specific source structure */ -export interface DatabaseSource { - name: string; - path: string; - columns: string[]; -} - -export interface Source { - name: string; - description?: string | undefined; - path: string; - /** Tags are used to group different parts of the project together. */ - tags: string[]; - /** TODO Replace File path references with whole file references */ - filePath: string; - columns: Source_SourceColumn[]; -} - -export interface Source_SourceColumn { - title: string; - description?: string | undefined; -} - -function createBaseTest(): Test { - return { testType: undefined }; -} - -export const Test = { - encode(message: Test, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.testType?.$case) { - case "sql": - TestSQLFile.encode(message.testType.sql, writer.uint32(10).fork()).ldelim(); - break; - case "unique": - TestUnique.encode(message.testType.unique, writer.uint32(18).fork()).ldelim(); - break; - case "notNull": - TestNotNull.encode(message.testType.notNull, writer.uint32(26).fork()).ldelim(); - break; - case "relationship": - TestRelationship.encode(message.testType.relationship, writer.uint32(34).fork()).ldelim(); - break; - case "acceptedValues": - TestAcceptedValues.encode(message.testType.acceptedValues, writer.uint32(42).fork()).ldelim(); - break; - case "greaterThanOrEqual": - TestGreaterThanOrEqual.encode(message.testType.greaterThanOrEqual, writer.uint32(50).fork()).ldelim(); - break; - case "lessThanOrEqual": - TestLessThanOrEqual.encode(message.testType.lessThanOrEqual, writer.uint32(58).fork()).ldelim(); - break; - case "greaterThan": - TestGreaterThan.encode(message.testType.greaterThan, writer.uint32(66).fork()).ldelim(); - break; - case "lessThan": - TestLessThan.encode(message.testType.lessThan, writer.uint32(74).fork()).ldelim(); - break; - case "multiColumnUnique": - TestMultiColumnUnique.encode(message.testType.multiColumnUnique, writer.uint32(82).fork()).ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Test { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.testType = { $case: "sql", sql: TestSQLFile.decode(reader, reader.uint32()) }; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.testType = { $case: "unique", unique: TestUnique.decode(reader, reader.uint32()) }; - continue; - case 3: - if (tag !== 26) { - break; - } - - message.testType = { $case: "notNull", notNull: TestNotNull.decode(reader, reader.uint32()) }; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.testType = { $case: "relationship", relationship: TestRelationship.decode(reader, reader.uint32()) }; - continue; - case 5: - if (tag !== 42) { - break; - } - - message.testType = { - $case: "acceptedValues", - acceptedValues: TestAcceptedValues.decode(reader, reader.uint32()), - }; - continue; - case 6: - if (tag !== 50) { - break; - } - - message.testType = { - $case: "greaterThanOrEqual", - greaterThanOrEqual: TestGreaterThanOrEqual.decode(reader, reader.uint32()), - }; - continue; - case 7: - if (tag !== 58) { - break; - } - - message.testType = { - $case: "lessThanOrEqual", - lessThanOrEqual: TestLessThanOrEqual.decode(reader, reader.uint32()), - }; - continue; - case 8: - if (tag !== 66) { - break; - } - - message.testType = { $case: "greaterThan", greaterThan: TestGreaterThan.decode(reader, reader.uint32()) }; - continue; - case 9: - if (tag !== 74) { - break; - } - - message.testType = { $case: "lessThan", lessThan: TestLessThan.decode(reader, reader.uint32()) }; - continue; - case 10: - if (tag !== 82) { - break; - } - - message.testType = { - $case: "multiColumnUnique", - multiColumnUnique: TestMultiColumnUnique.decode(reader, reader.uint32()), - }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Test { - return { - testType: isSet(object.sql) - ? { $case: "sql", sql: TestSQLFile.fromJSON(object.sql) } - : isSet(object.unique) - ? { $case: "unique", unique: TestUnique.fromJSON(object.unique) } - : isSet(object.notNull) - ? { $case: "notNull", notNull: TestNotNull.fromJSON(object.notNull) } - : isSet(object.relationship) - ? { $case: "relationship", relationship: TestRelationship.fromJSON(object.relationship) } - : isSet(object.acceptedValues) - ? { $case: "acceptedValues", acceptedValues: TestAcceptedValues.fromJSON(object.acceptedValues) } - : isSet(object.greaterThanOrEqual) - ? { - $case: "greaterThanOrEqual", - greaterThanOrEqual: TestGreaterThanOrEqual.fromJSON(object.greaterThanOrEqual), - } - : isSet(object.lessThanOrEqual) - ? { $case: "lessThanOrEqual", lessThanOrEqual: TestLessThanOrEqual.fromJSON(object.lessThanOrEqual) } - : isSet(object.greaterThan) - ? { $case: "greaterThan", greaterThan: TestGreaterThan.fromJSON(object.greaterThan) } - : isSet(object.lessThan) - ? { $case: "lessThan", lessThan: TestLessThan.fromJSON(object.lessThan) } - : isSet(object.multiColumnUnique) - ? { $case: "multiColumnUnique", multiColumnUnique: TestMultiColumnUnique.fromJSON(object.multiColumnUnique) } - : undefined, - }; - }, - - toJSON(message: Test): unknown { - const obj: any = {}; - if (message.testType?.$case === "sql") { - obj.sql = TestSQLFile.toJSON(message.testType.sql); - } - if (message.testType?.$case === "unique") { - obj.unique = TestUnique.toJSON(message.testType.unique); - } - if (message.testType?.$case === "notNull") { - obj.notNull = TestNotNull.toJSON(message.testType.notNull); - } - if (message.testType?.$case === "relationship") { - obj.relationship = TestRelationship.toJSON(message.testType.relationship); - } - if (message.testType?.$case === "acceptedValues") { - obj.acceptedValues = TestAcceptedValues.toJSON(message.testType.acceptedValues); - } - if (message.testType?.$case === "greaterThanOrEqual") { - obj.greaterThanOrEqual = TestGreaterThanOrEqual.toJSON(message.testType.greaterThanOrEqual); - } - if (message.testType?.$case === "lessThanOrEqual") { - obj.lessThanOrEqual = TestLessThanOrEqual.toJSON(message.testType.lessThanOrEqual); - } - if (message.testType?.$case === "greaterThan") { - obj.greaterThan = TestGreaterThan.toJSON(message.testType.greaterThan); - } - if (message.testType?.$case === "lessThan") { - obj.lessThan = TestLessThan.toJSON(message.testType.lessThan); - } - if (message.testType?.$case === "multiColumnUnique") { - obj.multiColumnUnique = TestMultiColumnUnique.toJSON(message.testType.multiColumnUnique); - } - return obj; - }, - - create, I>>(base?: I): Test { - return Test.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Test { - const message = createBaseTest(); - if (object.testType?.$case === "sql" && object.testType?.sql !== undefined && object.testType?.sql !== null) { - message.testType = { $case: "sql", sql: TestSQLFile.fromPartial(object.testType.sql) }; - } - if ( - object.testType?.$case === "unique" && object.testType?.unique !== undefined && object.testType?.unique !== null - ) { - message.testType = { $case: "unique", unique: TestUnique.fromPartial(object.testType.unique) }; - } - if ( - object.testType?.$case === "notNull" && - object.testType?.notNull !== undefined && - object.testType?.notNull !== null - ) { - message.testType = { $case: "notNull", notNull: TestNotNull.fromPartial(object.testType.notNull) }; - } - if ( - object.testType?.$case === "relationship" && - object.testType?.relationship !== undefined && - object.testType?.relationship !== null - ) { - message.testType = { - $case: "relationship", - relationship: TestRelationship.fromPartial(object.testType.relationship), - }; - } - if ( - object.testType?.$case === "acceptedValues" && - object.testType?.acceptedValues !== undefined && - object.testType?.acceptedValues !== null - ) { - message.testType = { - $case: "acceptedValues", - acceptedValues: TestAcceptedValues.fromPartial(object.testType.acceptedValues), - }; - } - if ( - object.testType?.$case === "greaterThanOrEqual" && - object.testType?.greaterThanOrEqual !== undefined && - object.testType?.greaterThanOrEqual !== null - ) { - message.testType = { - $case: "greaterThanOrEqual", - greaterThanOrEqual: TestGreaterThanOrEqual.fromPartial(object.testType.greaterThanOrEqual), - }; - } - if ( - object.testType?.$case === "lessThanOrEqual" && - object.testType?.lessThanOrEqual !== undefined && - object.testType?.lessThanOrEqual !== null - ) { - message.testType = { - $case: "lessThanOrEqual", - lessThanOrEqual: TestLessThanOrEqual.fromPartial(object.testType.lessThanOrEqual), - }; - } - if ( - object.testType?.$case === "greaterThan" && - object.testType?.greaterThan !== undefined && - object.testType?.greaterThan !== null - ) { - message.testType = { - $case: "greaterThan", - greaterThan: TestGreaterThan.fromPartial(object.testType.greaterThan), - }; - } - if ( - object.testType?.$case === "lessThan" && - object.testType?.lessThan !== undefined && - object.testType?.lessThan !== null - ) { - message.testType = { $case: "lessThan", lessThan: TestLessThan.fromPartial(object.testType.lessThan) }; - } - if ( - object.testType?.$case === "multiColumnUnique" && - object.testType?.multiColumnUnique !== undefined && - object.testType?.multiColumnUnique !== null - ) { - message.testType = { - $case: "multiColumnUnique", - multiColumnUnique: TestMultiColumnUnique.fromPartial(object.testType.multiColumnUnique), - }; - } - return message; - }, -}; - -function createBaseTestSQLFile(): TestSQLFile { - return { filePath: "", references: [] }; -} - -export const TestSQLFile = { - encode(message: TestSQLFile, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - for (const v of message.references) { - writer.uint32(18).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestSQLFile { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestSQLFile(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.references.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestSQLFile { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - references: gt.Array.isArray(object?.references) ? object.references.map((e: any) => gt.String(e)) : [], - }; - }, - - toJSON(message: TestSQLFile): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.references?.length) { - obj.references = message.references; - } - return obj; - }, - - create, I>>(base?: I): TestSQLFile { - return TestSQLFile.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestSQLFile { - const message = createBaseTestSQLFile(); - message.filePath = object.filePath ?? ""; - message.references = object.references?.map((e) => e) || []; - return message; - }, -}; - -function createBaseTestUnique(): TestUnique { - return { filePath: "", model: "", path: "", column: "" }; -} - -export const TestUnique = { - encode(message: TestUnique, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.model !== "") { - writer.uint32(18).string(message.model); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - if (message.column !== "") { - writer.uint32(34).string(message.column); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestUnique { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestUnique(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.model = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.column = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestUnique { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - model: isSet(object.model) ? gt.String(object.model) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - column: isSet(object.column) ? gt.String(object.column) : "", - }; - }, - - toJSON(message: TestUnique): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.model !== "") { - obj.model = message.model; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.column !== "") { - obj.column = message.column; - } - return obj; - }, - - create, I>>(base?: I): TestUnique { - return TestUnique.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestUnique { - const message = createBaseTestUnique(); - message.filePath = object.filePath ?? ""; - message.model = object.model ?? ""; - message.path = object.path ?? ""; - message.column = object.column ?? ""; - return message; - }, -}; - -function createBaseTestNotNull(): TestNotNull { - return { filePath: "", model: "", path: "", column: "" }; -} - -export const TestNotNull = { - encode(message: TestNotNull, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.model !== "") { - writer.uint32(18).string(message.model); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - if (message.column !== "") { - writer.uint32(34).string(message.column); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestNotNull { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestNotNull(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.model = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.column = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestNotNull { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - model: isSet(object.model) ? gt.String(object.model) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - column: isSet(object.column) ? gt.String(object.column) : "", - }; - }, - - toJSON(message: TestNotNull): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.model !== "") { - obj.model = message.model; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.column !== "") { - obj.column = message.column; - } - return obj; - }, - - create, I>>(base?: I): TestNotNull { - return TestNotNull.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestNotNull { - const message = createBaseTestNotNull(); - message.filePath = object.filePath ?? ""; - message.model = object.model ?? ""; - message.path = object.path ?? ""; - message.column = object.column ?? ""; - return message; - }, -}; - -function createBaseTestGreaterThanOrEqual(): TestGreaterThanOrEqual { - return { filePath: "", model: "", path: "", column: "", value: "" }; -} - -export const TestGreaterThanOrEqual = { - encode(message: TestGreaterThanOrEqual, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.model !== "") { - writer.uint32(18).string(message.model); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - if (message.column !== "") { - writer.uint32(34).string(message.column); - } - if (message.value !== "") { - writer.uint32(42).string(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestGreaterThanOrEqual { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestGreaterThanOrEqual(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.model = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.column = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.value = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestGreaterThanOrEqual { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - model: isSet(object.model) ? gt.String(object.model) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - column: isSet(object.column) ? gt.String(object.column) : "", - value: isSet(object.value) ? gt.String(object.value) : "", - }; - }, - - toJSON(message: TestGreaterThanOrEqual): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.model !== "") { - obj.model = message.model; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.column !== "") { - obj.column = message.column; - } - if (message.value !== "") { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): TestGreaterThanOrEqual { - return TestGreaterThanOrEqual.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestGreaterThanOrEqual { - const message = createBaseTestGreaterThanOrEqual(); - message.filePath = object.filePath ?? ""; - message.model = object.model ?? ""; - message.path = object.path ?? ""; - message.column = object.column ?? ""; - message.value = object.value ?? ""; - return message; - }, -}; - -function createBaseTestLessThanOrEqual(): TestLessThanOrEqual { - return { filePath: "", model: "", path: "", column: "", value: "" }; -} - -export const TestLessThanOrEqual = { - encode(message: TestLessThanOrEqual, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.model !== "") { - writer.uint32(18).string(message.model); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - if (message.column !== "") { - writer.uint32(34).string(message.column); - } - if (message.value !== "") { - writer.uint32(42).string(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestLessThanOrEqual { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestLessThanOrEqual(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.model = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.column = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.value = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestLessThanOrEqual { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - model: isSet(object.model) ? gt.String(object.model) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - column: isSet(object.column) ? gt.String(object.column) : "", - value: isSet(object.value) ? gt.String(object.value) : "", - }; - }, - - toJSON(message: TestLessThanOrEqual): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.model !== "") { - obj.model = message.model; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.column !== "") { - obj.column = message.column; - } - if (message.value !== "") { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): TestLessThanOrEqual { - return TestLessThanOrEqual.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestLessThanOrEqual { - const message = createBaseTestLessThanOrEqual(); - message.filePath = object.filePath ?? ""; - message.model = object.model ?? ""; - message.path = object.path ?? ""; - message.column = object.column ?? ""; - message.value = object.value ?? ""; - return message; - }, -}; - -function createBaseTestGreaterThan(): TestGreaterThan { - return { filePath: "", model: "", path: "", column: "", value: "" }; -} - -export const TestGreaterThan = { - encode(message: TestGreaterThan, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.model !== "") { - writer.uint32(18).string(message.model); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - if (message.column !== "") { - writer.uint32(34).string(message.column); - } - if (message.value !== "") { - writer.uint32(42).string(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestGreaterThan { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestGreaterThan(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.model = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.column = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.value = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestGreaterThan { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - model: isSet(object.model) ? gt.String(object.model) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - column: isSet(object.column) ? gt.String(object.column) : "", - value: isSet(object.value) ? gt.String(object.value) : "", - }; - }, - - toJSON(message: TestGreaterThan): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.model !== "") { - obj.model = message.model; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.column !== "") { - obj.column = message.column; - } - if (message.value !== "") { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): TestGreaterThan { - return TestGreaterThan.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestGreaterThan { - const message = createBaseTestGreaterThan(); - message.filePath = object.filePath ?? ""; - message.model = object.model ?? ""; - message.path = object.path ?? ""; - message.column = object.column ?? ""; - message.value = object.value ?? ""; - return message; - }, -}; - -function createBaseTestLessThan(): TestLessThan { - return { filePath: "", model: "", path: "", column: "", value: "" }; -} - -export const TestLessThan = { - encode(message: TestLessThan, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.model !== "") { - writer.uint32(18).string(message.model); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - if (message.column !== "") { - writer.uint32(34).string(message.column); - } - if (message.value !== "") { - writer.uint32(42).string(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestLessThan { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestLessThan(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.model = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.column = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.value = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestLessThan { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - model: isSet(object.model) ? gt.String(object.model) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - column: isSet(object.column) ? gt.String(object.column) : "", - value: isSet(object.value) ? gt.String(object.value) : "", - }; - }, - - toJSON(message: TestLessThan): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.model !== "") { - obj.model = message.model; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.column !== "") { - obj.column = message.column; - } - if (message.value !== "") { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): TestLessThan { - return TestLessThan.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestLessThan { - const message = createBaseTestLessThan(); - message.filePath = object.filePath ?? ""; - message.model = object.model ?? ""; - message.path = object.path ?? ""; - message.column = object.column ?? ""; - message.value = object.value ?? ""; - return message; - }, -}; - -function createBaseTestRelationship(): TestRelationship { - return { - filePath: "", - sourceModel: "", - sourcePath: "", - sourceColumn: "", - targetModel: "", - targetPath: "", - targetColumn: "", - }; -} - -export const TestRelationship = { - encode(message: TestRelationship, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.sourceModel !== "") { - writer.uint32(18).string(message.sourceModel); - } - if (message.sourcePath !== "") { - writer.uint32(26).string(message.sourcePath); - } - if (message.sourceColumn !== "") { - writer.uint32(34).string(message.sourceColumn); - } - if (message.targetModel !== "") { - writer.uint32(42).string(message.targetModel); - } - if (message.targetPath !== "") { - writer.uint32(58).string(message.targetPath); - } - if (message.targetColumn !== "") { - writer.uint32(66).string(message.targetColumn); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestRelationship { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestRelationship(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.sourceModel = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.sourcePath = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.sourceColumn = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.targetModel = reader.string(); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.targetPath = reader.string(); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.targetColumn = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestRelationship { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - sourceModel: isSet(object.sourceModel) ? gt.String(object.sourceModel) : "", - sourcePath: isSet(object.sourcePath) ? gt.String(object.sourcePath) : "", - sourceColumn: isSet(object.sourceColumn) ? gt.String(object.sourceColumn) : "", - targetModel: isSet(object.targetModel) ? gt.String(object.targetModel) : "", - targetPath: isSet(object.targetPath) ? gt.String(object.targetPath) : "", - targetColumn: isSet(object.targetColumn) ? gt.String(object.targetColumn) : "", - }; - }, - - toJSON(message: TestRelationship): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.sourceModel !== "") { - obj.sourceModel = message.sourceModel; - } - if (message.sourcePath !== "") { - obj.sourcePath = message.sourcePath; - } - if (message.sourceColumn !== "") { - obj.sourceColumn = message.sourceColumn; - } - if (message.targetModel !== "") { - obj.targetModel = message.targetModel; - } - if (message.targetPath !== "") { - obj.targetPath = message.targetPath; - } - if (message.targetColumn !== "") { - obj.targetColumn = message.targetColumn; - } - return obj; - }, - - create, I>>(base?: I): TestRelationship { - return TestRelationship.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestRelationship { - const message = createBaseTestRelationship(); - message.filePath = object.filePath ?? ""; - message.sourceModel = object.sourceModel ?? ""; - message.sourcePath = object.sourcePath ?? ""; - message.sourceColumn = object.sourceColumn ?? ""; - message.targetModel = object.targetModel ?? ""; - message.targetPath = object.targetPath ?? ""; - message.targetColumn = object.targetColumn ?? ""; - return message; - }, -}; - -function createBaseTestAcceptedValues(): TestAcceptedValues { - return { filePath: "", model: "", path: "", column: "", acceptedValues: [] }; -} - -export const TestAcceptedValues = { - encode(message: TestAcceptedValues, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.model !== "") { - writer.uint32(18).string(message.model); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - if (message.column !== "") { - writer.uint32(34).string(message.column); - } - for (const v of message.acceptedValues) { - writer.uint32(42).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestAcceptedValues { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestAcceptedValues(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.model = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.column = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.acceptedValues.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestAcceptedValues { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - model: isSet(object.model) ? gt.String(object.model) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - column: isSet(object.column) ? gt.String(object.column) : "", - acceptedValues: gt.Array.isArray(object?.acceptedValues) - ? object.acceptedValues.map((e: any) => gt.String(e)) - : [], - }; - }, - - toJSON(message: TestAcceptedValues): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.model !== "") { - obj.model = message.model; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.column !== "") { - obj.column = message.column; - } - if (message.acceptedValues?.length) { - obj.acceptedValues = message.acceptedValues; - } - return obj; - }, - - create, I>>(base?: I): TestAcceptedValues { - return TestAcceptedValues.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestAcceptedValues { - const message = createBaseTestAcceptedValues(); - message.filePath = object.filePath ?? ""; - message.model = object.model ?? ""; - message.path = object.path ?? ""; - message.column = object.column ?? ""; - message.acceptedValues = object.acceptedValues?.map((e) => e) || []; - return message; - }, -}; - -function createBaseTestMultiColumnUnique(): TestMultiColumnUnique { - return { filePath: "", model: "", path: "", columns: [] }; -} - -export const TestMultiColumnUnique = { - encode(message: TestMultiColumnUnique, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filePath !== "") { - writer.uint32(10).string(message.filePath); - } - if (message.model !== "") { - writer.uint32(18).string(message.model); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - for (const v of message.columns) { - writer.uint32(34).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TestMultiColumnUnique { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTestMultiColumnUnique(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filePath = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.model = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.columns.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TestMultiColumnUnique { - return { - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - model: isSet(object.model) ? gt.String(object.model) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - columns: gt.Array.isArray(object?.columns) ? object.columns.map((e: any) => gt.String(e)) : [], - }; - }, - - toJSON(message: TestMultiColumnUnique): unknown { - const obj: any = {}; - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.model !== "") { - obj.model = message.model; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.columns?.length) { - obj.columns = message.columns; - } - return obj; - }, - - create, I>>(base?: I): TestMultiColumnUnique { - return TestMultiColumnUnique.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TestMultiColumnUnique { - const message = createBaseTestMultiColumnUnique(); - message.filePath = object.filePath ?? ""; - message.model = object.model ?? ""; - message.path = object.path ?? ""; - message.columns = object.columns?.map((e) => e) || []; - return message; - }, -}; - -function createBaseSeed(): Seed { - return { name: "", filePath: "", fileSha256Hash: "" }; -} - -export const Seed = { - encode(message: Seed, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.filePath !== "") { - writer.uint32(18).string(message.filePath); - } - if (message.fileSha256Hash !== "") { - writer.uint32(26).string(message.fileSha256Hash); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Seed { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSeed(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.filePath = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.fileSha256Hash = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Seed { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - fileSha256Hash: isSet(object.fileSha256Hash) ? gt.String(object.fileSha256Hash) : "", - }; - }, - - toJSON(message: Seed): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.fileSha256Hash !== "") { - obj.fileSha256Hash = message.fileSha256Hash; - } - return obj; - }, - - create, I>>(base?: I): Seed { - return Seed.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Seed { - const message = createBaseSeed(); - message.name = object.name ?? ""; - message.filePath = object.filePath ?? ""; - message.fileSha256Hash = object.fileSha256Hash ?? ""; - return message; - }, -}; - -function createBaseModel(): Model { - return { - name: "", - description: undefined, - tags: [], - filePath: "", - fileSha256Hash: "", - materialization: undefined, - columns: [], - references: [], - }; -} - -export const Model = { - encode(message: Model, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - for (const v of message.tags) { - writer.uint32(34).string(v!); - } - if (message.filePath !== "") { - writer.uint32(26).string(message.filePath); - } - if (message.fileSha256Hash !== "") { - writer.uint32(58).string(message.fileSha256Hash); - } - if (message.materialization !== undefined) { - writer.uint32(66).string(message.materialization); - } - for (const v of message.columns) { - Model_ModelColum.encode(v!, writer.uint32(42).fork()).ldelim(); - } - for (const v of message.references) { - writer.uint32(50).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Model { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseModel(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.tags.push(reader.string()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.filePath = reader.string(); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.fileSha256Hash = reader.string(); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.materialization = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.columns.push(Model_ModelColum.decode(reader, reader.uint32())); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.references.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Model { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - description: isSet(object.description) ? gt.String(object.description) : undefined, - tags: gt.Array.isArray(object?.tags) ? object.tags.map((e: any) => gt.String(e)) : [], - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - fileSha256Hash: isSet(object.fileSha256Hash) ? gt.String(object.fileSha256Hash) : "", - materialization: isSet(object.materialization) ? gt.String(object.materialization) : undefined, - columns: gt.Array.isArray(object?.columns) ? object.columns.map((e: any) => Model_ModelColum.fromJSON(e)) : [], - references: gt.Array.isArray(object?.references) ? object.references.map((e: any) => gt.String(e)) : [], - }; - }, - - toJSON(message: Model): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.description !== undefined) { - obj.description = message.description; - } - if (message.tags?.length) { - obj.tags = message.tags; - } - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.fileSha256Hash !== "") { - obj.fileSha256Hash = message.fileSha256Hash; - } - if (message.materialization !== undefined) { - obj.materialization = message.materialization; - } - if (message.columns?.length) { - obj.columns = message.columns.map((e) => Model_ModelColum.toJSON(e)); - } - if (message.references?.length) { - obj.references = message.references; - } - return obj; - }, - - create, I>>(base?: I): Model { - return Model.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Model { - const message = createBaseModel(); - message.name = object.name ?? ""; - message.description = object.description ?? undefined; - message.tags = object.tags?.map((e) => e) || []; - message.filePath = object.filePath ?? ""; - message.fileSha256Hash = object.fileSha256Hash ?? ""; - message.materialization = object.materialization ?? undefined; - message.columns = object.columns?.map((e) => Model_ModelColum.fromPartial(e)) || []; - message.references = object.references?.map((e) => e) || []; - return message; - }, -}; - -function createBaseModel_ModelColum(): Model_ModelColum { - return { title: "", description: undefined }; -} - -export const Model_ModelColum = { - encode(message: Model_ModelColum, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.title !== "") { - writer.uint32(10).string(message.title); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Model_ModelColum { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseModel_ModelColum(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.title = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Model_ModelColum { - return { - title: isSet(object.title) ? gt.String(object.title) : "", - description: isSet(object.description) ? gt.String(object.description) : undefined, - }; - }, - - toJSON(message: Model_ModelColum): unknown { - const obj: any = {}; - if (message.title !== "") { - obj.title = message.title; - } - if (message.description !== undefined) { - obj.description = message.description; - } - return obj; - }, - - create, I>>(base?: I): Model_ModelColum { - return Model_ModelColum.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Model_ModelColum { - const message = createBaseModel_ModelColum(); - message.title = object.title ?? ""; - message.description = object.description ?? undefined; - return message; - }, -}; - -function createBaseSnapshot(): Snapshot { - return { - name: "", - description: undefined, - tags: [], - filePath: "", - fileSha256Hash: "", - uniqueKey: "", - strategy: undefined, - references: [], - }; -} - -export const Snapshot = { - encode(message: Snapshot, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - for (const v of message.tags) { - writer.uint32(66).string(v!); - } - if (message.filePath !== "") { - writer.uint32(26).string(message.filePath); - } - if (message.fileSha256Hash !== "") { - writer.uint32(34).string(message.fileSha256Hash); - } - if (message.uniqueKey !== "") { - writer.uint32(42).string(message.uniqueKey); - } - if (message.strategy !== undefined) { - Snapshot_SnapshotStrategy.encode(message.strategy, writer.uint32(50).fork()).ldelim(); - } - for (const v of message.references) { - writer.uint32(58).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Snapshot { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSnapshot(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.tags.push(reader.string()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.filePath = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.fileSha256Hash = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.uniqueKey = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.strategy = Snapshot_SnapshotStrategy.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.references.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Snapshot { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - description: isSet(object.description) ? gt.String(object.description) : undefined, - tags: gt.Array.isArray(object?.tags) ? object.tags.map((e: any) => gt.String(e)) : [], - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - fileSha256Hash: isSet(object.fileSha256Hash) ? gt.String(object.fileSha256Hash) : "", - uniqueKey: isSet(object.uniqueKey) ? gt.String(object.uniqueKey) : "", - strategy: isSet(object.strategy) ? Snapshot_SnapshotStrategy.fromJSON(object.strategy) : undefined, - references: gt.Array.isArray(object?.references) ? object.references.map((e: any) => gt.String(e)) : [], - }; - }, - - toJSON(message: Snapshot): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.description !== undefined) { - obj.description = message.description; - } - if (message.tags?.length) { - obj.tags = message.tags; - } - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.fileSha256Hash !== "") { - obj.fileSha256Hash = message.fileSha256Hash; - } - if (message.uniqueKey !== "") { - obj.uniqueKey = message.uniqueKey; - } - if (message.strategy !== undefined) { - obj.strategy = Snapshot_SnapshotStrategy.toJSON(message.strategy); - } - if (message.references?.length) { - obj.references = message.references; - } - return obj; - }, - - create, I>>(base?: I): Snapshot { - return Snapshot.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Snapshot { - const message = createBaseSnapshot(); - message.name = object.name ?? ""; - message.description = object.description ?? undefined; - message.tags = object.tags?.map((e) => e) || []; - message.filePath = object.filePath ?? ""; - message.fileSha256Hash = object.fileSha256Hash ?? ""; - message.uniqueKey = object.uniqueKey ?? ""; - message.strategy = (object.strategy !== undefined && object.strategy !== null) - ? Snapshot_SnapshotStrategy.fromPartial(object.strategy) - : undefined; - message.references = object.references?.map((e) => e) || []; - return message; - }, -}; - -function createBaseSnapshot_SnapshotStrategy(): Snapshot_SnapshotStrategy { - return { strategyType: undefined }; -} - -export const Snapshot_SnapshotStrategy = { - encode(message: Snapshot_SnapshotStrategy, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - switch (message.strategyType?.$case) { - case "timestamp": - Snapshot_SnapshotStrategy_TimestampStrategy.encode(message.strategyType.timestamp, writer.uint32(10).fork()) - .ldelim(); - break; - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Snapshot_SnapshotStrategy { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSnapshot_SnapshotStrategy(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.strategyType = { - $case: "timestamp", - timestamp: Snapshot_SnapshotStrategy_TimestampStrategy.decode(reader, reader.uint32()), - }; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Snapshot_SnapshotStrategy { - return { - strategyType: isSet(object.timestamp) - ? { $case: "timestamp", timestamp: Snapshot_SnapshotStrategy_TimestampStrategy.fromJSON(object.timestamp) } - : undefined, - }; - }, - - toJSON(message: Snapshot_SnapshotStrategy): unknown { - const obj: any = {}; - if (message.strategyType?.$case === "timestamp") { - obj.timestamp = Snapshot_SnapshotStrategy_TimestampStrategy.toJSON(message.strategyType.timestamp); - } - return obj; - }, - - create, I>>(base?: I): Snapshot_SnapshotStrategy { - return Snapshot_SnapshotStrategy.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Snapshot_SnapshotStrategy { - const message = createBaseSnapshot_SnapshotStrategy(); - if ( - object.strategyType?.$case === "timestamp" && - object.strategyType?.timestamp !== undefined && - object.strategyType?.timestamp !== null - ) { - message.strategyType = { - $case: "timestamp", - timestamp: Snapshot_SnapshotStrategy_TimestampStrategy.fromPartial(object.strategyType.timestamp), - }; - } - return message; - }, -}; - -function createBaseSnapshot_SnapshotStrategy_TimestampStrategy(): Snapshot_SnapshotStrategy_TimestampStrategy { - return { updatedAt: "" }; -} - -export const Snapshot_SnapshotStrategy_TimestampStrategy = { - encode(message: Snapshot_SnapshotStrategy_TimestampStrategy, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.updatedAt !== "") { - writer.uint32(10).string(message.updatedAt); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Snapshot_SnapshotStrategy_TimestampStrategy { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSnapshot_SnapshotStrategy_TimestampStrategy(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.updatedAt = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Snapshot_SnapshotStrategy_TimestampStrategy { - return { updatedAt: isSet(object.updatedAt) ? gt.String(object.updatedAt) : "" }; - }, - - toJSON(message: Snapshot_SnapshotStrategy_TimestampStrategy): unknown { - const obj: any = {}; - if (message.updatedAt !== "") { - obj.updatedAt = message.updatedAt; - } - return obj; - }, - - create, I>>( - base?: I, - ): Snapshot_SnapshotStrategy_TimestampStrategy { - return Snapshot_SnapshotStrategy_TimestampStrategy.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>( - object: I, - ): Snapshot_SnapshotStrategy_TimestampStrategy { - const message = createBaseSnapshot_SnapshotStrategy_TimestampStrategy(); - message.updatedAt = object.updatedAt ?? ""; - return message; - }, -}; - -function createBaseDatabaseSource(): DatabaseSource { - return { name: "", path: "", columns: [] }; -} - -export const DatabaseSource = { - encode(message: DatabaseSource, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.path !== "") { - writer.uint32(18).string(message.path); - } - for (const v of message.columns) { - writer.uint32(26).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): DatabaseSource { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseDatabaseSource(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.path = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.columns.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): DatabaseSource { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - path: isSet(object.path) ? gt.String(object.path) : "", - columns: gt.Array.isArray(object?.columns) ? object.columns.map((e: any) => gt.String(e)) : [], - }; - }, - - toJSON(message: DatabaseSource): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.columns?.length) { - obj.columns = message.columns; - } - return obj; - }, - - create, I>>(base?: I): DatabaseSource { - return DatabaseSource.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): DatabaseSource { - const message = createBaseDatabaseSource(); - message.name = object.name ?? ""; - message.path = object.path ?? ""; - message.columns = object.columns?.map((e) => e) || []; - return message; - }, -}; - -function createBaseSource(): Source { - return { name: "", description: undefined, path: "", tags: [], filePath: "", columns: [] }; -} - -export const Source = { - encode(message: Source, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - if (message.path !== "") { - writer.uint32(26).string(message.path); - } - for (const v of message.tags) { - writer.uint32(50).string(v!); - } - if (message.filePath !== "") { - writer.uint32(34).string(message.filePath); - } - for (const v of message.columns) { - Source_SourceColumn.encode(v!, writer.uint32(42).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Source { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSource(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.path = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.tags.push(reader.string()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.filePath = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.columns.push(Source_SourceColumn.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Source { - return { - name: isSet(object.name) ? gt.String(object.name) : "", - description: isSet(object.description) ? gt.String(object.description) : undefined, - path: isSet(object.path) ? gt.String(object.path) : "", - tags: gt.Array.isArray(object?.tags) ? object.tags.map((e: any) => gt.String(e)) : [], - filePath: isSet(object.filePath) ? gt.String(object.filePath) : "", - columns: gt.Array.isArray(object?.columns) ? object.columns.map((e: any) => Source_SourceColumn.fromJSON(e)) : [], - }; - }, - - toJSON(message: Source): unknown { - const obj: any = {}; - if (message.name !== "") { - obj.name = message.name; - } - if (message.description !== undefined) { - obj.description = message.description; - } - if (message.path !== "") { - obj.path = message.path; - } - if (message.tags?.length) { - obj.tags = message.tags; - } - if (message.filePath !== "") { - obj.filePath = message.filePath; - } - if (message.columns?.length) { - obj.columns = message.columns.map((e) => Source_SourceColumn.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): Source { - return Source.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Source { - const message = createBaseSource(); - message.name = object.name ?? ""; - message.description = object.description ?? undefined; - message.path = object.path ?? ""; - message.tags = object.tags?.map((e) => e) || []; - message.filePath = object.filePath ?? ""; - message.columns = object.columns?.map((e) => Source_SourceColumn.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseSource_SourceColumn(): Source_SourceColumn { - return { title: "", description: undefined }; -} - -export const Source_SourceColumn = { - encode(message: Source_SourceColumn, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.title !== "") { - writer.uint32(10).string(message.title); - } - if (message.description !== undefined) { - writer.uint32(18).string(message.description); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Source_SourceColumn { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSource_SourceColumn(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.title = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.description = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Source_SourceColumn { - return { - title: isSet(object.title) ? gt.String(object.title) : "", - description: isSet(object.description) ? gt.String(object.description) : undefined, - }; - }, - - toJSON(message: Source_SourceColumn): unknown { - const obj: any = {}; - if (message.title !== "") { - obj.title = message.title; - } - if (message.description !== undefined) { - obj.description = message.description; - } - return obj; - }, - - create, I>>(base?: I): Source_SourceColumn { - return Source_SourceColumn.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Source_SourceColumn { - const message = createBaseSource_SourceColumn(); - message.title = object.title ?? ""; - message.description = object.description ?? undefined; - return message; - }, -}; - -declare const self: any | undefined; -declare const window: any | undefined; -declare const global: any | undefined; -const gt: any = (() => { - if (typeof globalThis !== "undefined") { - return globalThis; - } - if (typeof self !== "undefined") { - return self; - } - if (typeof window !== "undefined") { - return window; - } - if (typeof global !== "undefined") { - return global; - } - throw "Unable to locate global object"; -})(); - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends { $case: string } ? { [K in keyof Omit]?: DeepPartial } & { $case: T["$case"] } - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -}