@bufbuild/protobuf 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/google/protobuf/struct_pb.js +1 -1
- package/dist/cjs/google/protobuf/type_pb.js +1 -1
- package/dist/esm/google/protobuf/struct_pb.js +1 -1
- package/dist/esm/google/protobuf/type_pb.js +1 -1
- package/dist/protobuf.cjs +2 -0
- package/dist/protobuf.cjs.map +1 -0
- package/dist/protobuf.esm.js +2 -0
- package/dist/protobuf.esm.js.map +1 -0
- package/dist/protobuf.modern.js +2 -0
- package/dist/protobuf.modern.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protobuf.modern.js","sources":["../src/private/assert.ts","../src/private/enum.ts","../src/message.ts","../src/private/proto-runtime.ts","../src/private/message-type.ts","../src/field.ts","../src/google/varint.ts","../src/proto-int64.ts","../src/binary-encoding.ts","../src/private/field-wrapper.ts","../src/private/scalars.ts","../src/private/binary-format-common.ts","../src/proto-base64.ts","../src/private/json-format-common.ts","../src/private/util-common.ts","../src/private/field-list.ts","../src/private/names.ts","../src/private/field.ts","../src/proto3.ts","../src/private/json-format-proto3.ts","../src/private/binary-format-proto3.ts","../src/proto2.ts","../src/private/json-format-proto2.ts","../src/private/binary-format-proto2.ts","../src/service-type.ts","../src/google/protobuf/descriptor_pb.ts","../src/type-registry.ts","../src/descriptor-set.ts","../src/google/protobuf/timestamp_pb.ts","../src/google/protobuf/duration_pb.ts","../src/google/protobuf/any_pb.ts","../src/google/protobuf/empty_pb.ts","../src/google/protobuf/field_mask_pb.ts","../src/google/protobuf/struct_pb.ts","../src/google/protobuf/wrappers_pb.ts","../src/descriptor-registry.ts","../src/google/protobuf/compiler/plugin_pb.ts","../src/google/protobuf/type_pb.ts","../src/google/protobuf/source_context_pb.ts","../src/google/protobuf/api_pb.ts"],"sourcesContent":["// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/**\n * Assert that condition is truthy or throw error (with message)\n */\nexport function assert(condition: unknown, msg?: string): asserts condition {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions -- we want the implicit conversion to boolean\n if (!condition) {\n throw new Error(msg);\n }\n}\n\nconst FLOAT32_MAX = 3.4028234663852886e38,\n FLOAT32_MIN = -3.4028234663852886e38,\n UINT32_MAX = 0xffffffff,\n INT32_MAX = 0x7fffffff,\n INT32_MIN = -0x80000000;\n\n/**\n * Assert a valid signed protobuf 32-bit integer.\n */\nexport function assertInt32(arg: unknown): asserts arg is number {\n if (typeof arg !== \"number\") throw new Error(\"invalid int 32: \" + typeof arg);\n if (!Number.isInteger(arg) || arg > INT32_MAX || arg < INT32_MIN)\n throw new Error(\"invalid int 32: \" + arg); // eslint-disable-line @typescript-eslint/restrict-plus-operands -- we want the implicit conversion to string\n}\n\n/**\n * Assert a valid unsigned protobuf 32-bit integer.\n */\nexport function assertUInt32(arg: unknown): asserts arg is number {\n if (typeof arg !== \"number\")\n throw new Error(\"invalid uint 32: \" + typeof arg);\n if (!Number.isInteger(arg) || arg > UINT32_MAX || arg < 0)\n throw new Error(\"invalid uint 32: \" + arg); // eslint-disable-line @typescript-eslint/restrict-plus-operands -- we want the implicit conversion to string\n}\n\n/**\n * Assert a valid protobuf float value.\n */\nexport function assertFloat32(arg: unknown): asserts arg is number {\n if (typeof arg !== \"number\")\n throw new Error(\"invalid float 32: \" + typeof arg);\n if (!Number.isFinite(arg)) return;\n if (arg > FLOAT32_MAX || arg < FLOAT32_MIN)\n throw new Error(\"invalid float 32: \" + arg); // eslint-disable-line @typescript-eslint/restrict-plus-operands -- we want the implicit conversion to string\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { EnumType, EnumValueInfo } from \"../enum.js\";\nimport { assert } from \"./assert.js\";\n\n/**\n * Represents a generated enum.\n */\nexport interface EnumObject {\n [key: number]: string;\n\n [k: string]: number | string;\n}\n\nconst enumTypeSymbol = Symbol(\"@bufbuild/protobuf/enum-type\");\n\n/**\n * Get reflection information from a generated enum.\n * If this function is called on something other than a generated\n * enum, it raises an error.\n */\nexport function getEnumType(enumObject: EnumObject): EnumType {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-explicit-any\n const t = (enumObject as any)[enumTypeSymbol];\n assert(t, \"missing enum type on enum object\");\n return t; // eslint-disable-line @typescript-eslint/no-unsafe-return\n}\n\n/**\n * Sets reflection information on a generated enum.\n */\nexport function setEnumType(\n enumObject: EnumObject,\n typeName: string,\n values: EnumValueInfo[]\n // We do not surface options at this time\n // opt?: {\n // options?: { readonly [extensionName: string]: JsonValue };\n // },\n): void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (enumObject as any)[enumTypeSymbol] = makeEnumType(typeName, values);\n}\n\n// We do not surface options at this time\n// export type PartialEnumValue = Omit<EnumValueInfo, 'options'> & Partial<Pick<EnumValueInfo, \"options\">>;\n\n/**\n * Create a new EnumType with the given values.\n */\nexport function makeEnumType(\n typeName: string,\n values: EnumValueInfo[]\n // We do not surface options at this time\n // opt?: {\n // options?: { readonly [extensionName: string]: JsonValue };\n // },\n): EnumType {\n const names = Object.create(null) as Record<string, EnumValueInfo>;\n const numbers = Object.create(null) as Record<number, EnumValueInfo>;\n const normalValues: EnumValueInfo[] = [];\n for (const value of values) {\n // We do not surface options at this time\n // const value: EnumValueInfo = {...v, options: v.options ?? emptyReadonlyObject};\n normalValues.push(value);\n names[value.name] = value;\n numbers[value.no] = value;\n }\n return {\n typeName,\n values: normalValues,\n // We do not surface options at this time\n // options: opt?.options ?? Object.create(null),\n findName(name: string): EnumValueInfo | undefined {\n return names[name];\n },\n findNumber(no: number): EnumValueInfo | undefined {\n return numbers[no];\n },\n };\n}\n\n/**\n * Create a new enum object with the given values.\n */\nexport function makeEnum(\n typeName: string,\n values: EnumValueInfo[],\n opt?: {\n /**\n * MY_ENUM_ for `enum MyEnum {MY_ENUM_A=0; MY_ENUM_B=1;}`, or blank string\n */\n sharedPrefix?: string;\n // We do not surface options at this time\n // options?: { readonly [extensionName: string]: JsonValue };\n }\n): EnumObject {\n const enumObject: EnumObject = {};\n for (const value of values) {\n const name = makeEnumValueName(value, opt?.sharedPrefix);\n enumObject[name] = value.no;\n enumObject[value.no] = name;\n }\n setEnumType(enumObject, typeName, values);\n return enumObject;\n}\n\n// Construct a local name for an enum value.\n// This logic matches the Go function with the same name in private/protoplugin/names.go\nfunction makeEnumValueName(\n value: EnumValueInfo,\n sharedPrefix: string | undefined\n): string {\n if (sharedPrefix === undefined) {\n return value.name;\n }\n if (!value.name.startsWith(sharedPrefix)) {\n return value.name;\n }\n return value.name.substring(sharedPrefix.length);\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { BinaryReadOptions, BinaryWriteOptions } from \"./binary-format.js\";\nimport type {\n JsonReadOptions,\n JsonValue,\n JsonWriteOptions,\n JsonWriteStringOptions,\n} from \"./json-format.js\";\nimport type { MessageType } from \"./message-type.js\";\n\n/**\n * AnyMessage is an interface implemented by all messages. If you need to\n * handle messages of unknown type, this interface provides a convenient\n * index signature to access fields with message[\"fieldname\"].\n */\nexport interface AnyMessage extends Message<AnyMessage> {\n [k: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access\n}\n\n/**\n * Message is the base class of every message, generated, or created at\n * runtime.\n *\n * It is _not_ safe to extend this class. If you want to create a message at\n * run time, use proto3.makeMessageType().\n */\nexport class Message<T extends Message<T> = AnyMessage> {\n /**\n * Compare with a message of the same type.\n */\n equals(other: T | PlainMessage<T> | undefined | null): boolean {\n return this.getType().runtime.util.equals(this.getType(), this, other);\n }\n\n /**\n * Create a deep copy.\n */\n clone(): T {\n // return this.getType().runtime.util.clone(this);\n return this.getType().runtime.util.clone(this as unknown as T);\n }\n\n /**\n * Parse from binary data, merging fields.\n *\n * Repeated fields are appended. Map entries are added, overwriting\n * existing keys.\n *\n * If a message field is already present, it will be merged with the\n * new data.\n */\n fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): this {\n const type = this.getType(),\n format = type.runtime.bin,\n opt = format.makeReadOptions(options);\n format.readMessage(this, opt.readerFactory(bytes), bytes.byteLength, opt);\n return this;\n }\n\n /**\n * Parse a message from a JSON value.\n */\n fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): this {\n const type = this.getType(),\n format = type.runtime.json,\n opt = format.makeReadOptions(options);\n format.readMessage(type, jsonValue, opt, this as unknown as T);\n return this;\n }\n\n /**\n * Parse a message from a JSON string.\n */\n fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): this {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- assigning to JsonValue is safe here\n return this.fromJson(JSON.parse(jsonString), options);\n }\n\n /**\n * Serialize the message to binary data.\n */\n toBinary(options?: Partial<BinaryWriteOptions>): Uint8Array {\n const type = this.getType(),\n bin = type.runtime.bin,\n opt = bin.makeWriteOptions(options),\n writer = opt.writerFactory();\n bin.writeMessage(this, writer, opt);\n return writer.finish();\n }\n\n /**\n * Serialize the message to a JSON value, a JavaScript value that can be\n * passed to JSON.stringify().\n */\n toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n const type = this.getType(),\n json = type.runtime.json,\n opt = json.makeWriteOptions(options);\n return json.writeMessage(this, opt);\n }\n\n /**\n * Serialize the message to a JSON string.\n */\n toJsonString(options?: Partial<JsonWriteStringOptions>): string {\n const value = this.toJson(options);\n return JSON.stringify(value, null, options?.prettySpaces ?? 0);\n }\n\n /**\n * Retrieve the MessageType of this message - a singleton that represents\n * the protobuf message declaration and provides metadata for reflection-\n * based operations.\n */\n getType(): MessageType<T> {\n // Any class that extends Message _must_ provide a complete static\n // implementation of MessageType.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return\n return Object.getPrototypeOf(this).constructor;\n }\n}\n\n/**\n * PlainMessage<T> strips all methods from a message, leaving only fields\n * and oneof groups.\n */\nexport type PlainMessage<T extends Message> = Omit<T, keyof Message>;\n\n/**\n * PartialMessage<T> constructs a type from a message. The resulting type\n * only contains the protobuf field members of the message, and all of them\n * are optional.\n *\n * PartialMessage is similar to the built-in type Partial<T>, but recursive,\n * and respects `oneof` groups.\n */\nexport type PartialMessage<T extends Message> = {\n // eslint-disable-next-line @typescript-eslint/ban-types -- we use `Function` to identify methods\n [P in keyof T as T[P] extends Function ? never : P]?: PartialField<T[P]>;\n};\n// prettier-ignore\ntype PartialField<F> =\n F extends (Date | Uint8Array | bigint | boolean | string | number) ? F\n : F extends Array<infer U> ? Array<PartialField<U>>\n : F extends ReadonlyArray<infer U> ? ReadonlyArray<PartialField<U>>\n : F extends Message ? PartialMessage<F>\n : F extends OneofSelectedMessage<infer C, infer V> ? {case: C; value: PartialMessage<V>}\n : F extends { case: string | undefined; value?: unknown; } ? F\n : F extends {[key: string|number]: Message<infer U>} ? {[key: string|number]: PartialMessage<U>}\n : F ;\n\ntype OneofSelectedMessage<K extends string, M extends Message> = {\n case: K;\n value: M;\n};\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { JsonFormat, JsonValue } from \"../json-format.js\";\nimport type { BinaryFormat } from \"../binary-format.js\";\nimport type { AnyMessage } from \"../message.js\";\nimport type { Message } from \"../message.js\";\nimport type { EnumType, EnumValueInfo } from \"../enum.js\";\nimport type { MessageType } from \"../message-type.js\";\nimport type { FieldListSource } from \"./field-list.js\";\nimport type { EnumObject } from \"./enum.js\";\nimport { getEnumType, makeEnum, makeEnumType } from \"./enum.js\";\nimport type { Util } from \"./util.js\";\nimport { makeMessageType } from \"./message-type.js\";\n\n/**\n * A facade that provides serialization and other internal functionality.\n */\nexport interface ProtoRuntime {\n readonly syntax: string;\n readonly json: JsonFormat;\n readonly bin: BinaryFormat;\n readonly util: Util;\n\n /**\n * Create a message type at runtime, without generating code.\n */\n makeMessageType<T extends Message<T> = AnyMessage>(\n typeName: string,\n fields: FieldListSource,\n opt?: {\n localName?: string;\n // We do not surface options at this time\n // options?: { readonly [extensionName: string]: JsonValue };\n }\n ): MessageType<T>;\n\n /**\n * Create an enum object at runtime, without generating code.\n *\n * The object conforms to TypeScript enums, and comes with\n * mapping from name to value, and from value to name.\n *\n * The type name and other reflection information is accessible\n * via getEnumType().\n */\n makeEnum(\n typeName: string,\n values: EnumValueInfo[],\n opt?: {\n // We do not surface options at this time\n // options?: { readonly [extensionName: string]: JsonValue };\n }\n ): EnumObject;\n\n /**\n * Create an enum type at runtime, without generating code.\n * Note that this only creates the reflection information, not an\n * actual enum object.\n */\n makeEnumType(\n typeName: string,\n values: EnumValueInfo[],\n opt?: {\n // We do not surface options at this time\n // options?: { readonly [extensionName: string]: JsonValue };\n }\n ): EnumType;\n\n /**\n * Get reflection information - the EnumType - from an enum object.\n * If this function is called on something other than a generated\n * enum, or an enum constructed with makeEnum(), it raises an error.\n */\n getEnumType(enumObject: EnumObject): EnumType;\n}\n\nexport function makeProtoRuntime(\n syntax: string,\n json: JsonFormat,\n bin: BinaryFormat,\n util: Util\n): ProtoRuntime {\n return {\n syntax,\n json,\n bin,\n util,\n makeMessageType(\n typeName: string,\n fields: FieldListSource,\n opt?: {\n localName?: string;\n options?: { readonly [extensionName: string]: JsonValue };\n }\n ) {\n return makeMessageType(this, typeName, fields, opt);\n },\n makeEnum,\n makeEnumType,\n getEnumType,\n };\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {\n AnyMessage,\n Message,\n PartialMessage,\n PlainMessage,\n} from \"../message.js\";\nimport type { FieldListSource } from \"./field-list.js\";\nimport type { JsonReadOptions, JsonValue } from \"../json-format.js\";\nimport type { MessageType } from \"../message-type.js\";\nimport type { BinaryReadOptions } from \"../binary-format.js\";\nimport type { ProtoRuntime } from \"./proto-runtime.js\";\n\n/**\n * Create a new message type using the given runtime.\n */\nexport function makeMessageType<T extends Message<T> = AnyMessage>(\n runtime: ProtoRuntime,\n typeName: string,\n fields: FieldListSource,\n opt?: {\n /**\n * localName is the \"name\" property of the constructed function.\n * It is useful in stack traces, debuggers and test frameworks,\n * but has no other implications.\n *\n * This property is optional because by default, the last part\n * from the given typeName is used. Since this does not take\n * reserved words into account, we provide this property so that\n * an escaped name can be given.\n */\n localName?: string;\n // We do not surface options at this time\n // options?: { readonly [extensionName: string]: JsonValue };\n }\n): MessageType<T> {\n const localName =\n opt?.localName ?? typeName.substring(typeName.lastIndexOf(\".\") + 1);\n const type = {\n [localName]: function (this: T, data?: PartialMessage<T>) {\n runtime.util.initFields(this);\n runtime.util.initPartial(data, this);\n },\n }[localName] as unknown as MessageType<T>;\n Object.setPrototypeOf(type.prototype, new Message<T>());\n Object.assign<MessageType<T>, Omit<MessageType<T>, \"new\">>(type, {\n runtime,\n typeName,\n fields: runtime.util.newFieldList(fields),\n fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): T {\n return new type().fromBinary(bytes, options);\n },\n fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): T {\n return new type().fromJson(jsonValue, options);\n },\n fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): T {\n return new type().fromJsonString(jsonString, options);\n },\n equals(\n a: T | PlainMessage<T> | undefined,\n b: T | PlainMessage<T> | undefined\n ): boolean {\n return runtime.util.equals(type, a, b);\n },\n });\n return type;\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { EnumType } from \"./enum.js\";\nimport type { MessageType } from \"./message-type.js\";\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * FieldInfo describes a field of a protobuf message for runtime reflection. We\n * distinguish between the following kinds of fields:\n *\n * - \"scalar\": string, bool, float, int32, etc. The scalar type is \"T\".\n * - \"enum\": The field was declared with an enum type. The enum type is \"T\".\n * - \"message\": The field was declared with a message type. The message type is \"T\".\n * - \"map\": The field was declared with map<K,V>. The key type is \"K\", the value type is \"V\".\n *\n * Every field always has the following properties:\n *\n * - \"no\": The field number of the protobuf field.\n * - \"name\": The original name of the protobuf field.\n * - \"localName\": The name of the field as used in generated code.\n * - \"jsonName\": The name for JSON serialization / deserialization.\n * - \"opt\": Whether the field is optional.\n * - \"repeated\": Whether the field is repeated.\n * - \"packed\": Whether the repeated field is packed.\n *\n * Additionally, fields may have the following properties:\n *\n * - \"oneof\": If the field is member of a oneof group.\n * - \"default\": Only proto2: An explicit default value.\n */\nexport type FieldInfo =\n | fiRules<fiScalar>\n | fiRules<fiEnum>\n | fiRules<fiMessage>\n | fiRules<fiMap>;\n\n/**\n * Version of `FieldInfo` that allows the following properties\n * to be omitted:\n *\n * - \"localName\", \"jsonName\": can be omitted if equal to lowerCamelCase(name)\n * - \"opt\": Can be omitted if false.\n * - \"repeated\": Can be omitted if false.\n * - \"packed\": Can be omitted if equal to the standard packing of the field.\n */\nexport type PartialFieldInfo =\n | fiPartialRules<fiScalar>\n | fiPartialRules<fiEnum>\n | fiPartialRules<fiMessage>\n | fiPartialRules<fiMap>;\n\n/**\n * Provides convenient access to field information of a oneof.\n */\nexport interface OneofInfo {\n readonly kind: \"oneof\";\n readonly name: string;\n readonly localName: string;\n readonly repeated: false;\n readonly packed: false;\n readonly opt: false;\n readonly default: undefined;\n readonly fields: readonly FieldInfo[];\n\n /**\n * Return field information by local name.\n */\n findField(localName: string): FieldInfo | undefined;\n}\n\ninterface fiShared {\n /**\n * The field number of the .proto field.\n */\n readonly no: number;\n\n /**\n * The original name of the .proto field.\n */\n readonly name: string;\n\n /**\n * The name of the field as used in generated code.\n */\n readonly localName: string;\n\n /**\n * The name for JSON serialization / deserialization.\n */\n readonly jsonName: string;\n\n /**\n * The `oneof` group, if this field belongs to one.\n */\n readonly oneof?: OneofInfo | undefined;\n\n // We do not surface options at this time\n // readonly options: OptionsMap;\n}\n\ninterface fiScalar extends fiShared {\n readonly kind: \"scalar\";\n\n /**\n * Scalar type of the field.\n */\n readonly T: ScalarType;\n\n /**\n * Is the field repeated?\n */\n readonly repeated: boolean;\n\n /**\n * Is this repeated field packed?\n * BYTES and STRING can never be packed, since they are length-delimited.\n * Other types can be packed with the field option \"packed\".\n * For proto3, fields are packed by default.\n */\n readonly packed: boolean;\n\n /**\n * Is the field optional?\n */\n readonly opt: boolean;\n\n /**\n * Only proto2: An explicit default value.\n */\n readonly default: number | boolean | string | bigint | Uint8Array | undefined;\n}\n\ninterface fiMessage extends fiShared {\n readonly kind: \"message\";\n\n /**\n * Message handler for the field.\n */\n readonly T: MessageType;\n\n /**\n * Is the field repeated?\n */\n readonly repeated: boolean;\n\n /**\n * Is this repeated field packed? Never true for messages.\n */\n readonly packed: false;\n\n /**\n * An explicit default value (only proto2). Never set for messages.\n */\n readonly default: undefined;\n}\n\ninterface fiEnum extends fiShared {\n readonly kind: \"enum\";\n\n /**\n * Enum type information for the field.\n */\n readonly T: EnumType;\n\n /**\n * Is the field repeated?\n */\n readonly repeated: boolean;\n\n /**\n * Is this repeated field packed?\n * Repeated enums can be packed with the field option \"packed\".\n * For proto3, they are packed by default.\n */\n readonly packed: boolean;\n\n /**\n * Is the field optional?\n */\n readonly opt: boolean;\n\n /**\n * Only proto2: An explicit default value.\n */\n readonly default: number | undefined;\n}\n\ninterface fiMap extends fiShared {\n readonly kind: \"map\";\n\n /**\n * Map key type.\n *\n * The key_type can be any integral or string type\n * (so, any scalar type except for floating point\n * types and bytes)\n */\n readonly K: Exclude<\n ScalarType,\n ScalarType.FLOAT | ScalarType.DOUBLE | ScalarType.BYTES\n >;\n\n /**\n * Map value type. Can be scalar, enum, or message.\n */\n readonly V:\n | { readonly kind: \"scalar\"; readonly T: ScalarType }\n | { readonly kind: \"enum\"; readonly T: EnumType }\n | { readonly kind: \"message\"; readonly T: MessageType };\n\n /**\n * Is the field repeated? Never true for maps.\n */\n readonly repeated: false;\n\n /**\n * Is this repeated field packed? Never true for maps.\n */\n readonly packed: false;\n\n /**\n * An explicit default value (only proto2). Never set for maps.\n */\n readonly default: undefined;\n}\n\n// prettier-ignore\ntype fiRules<T> = Omit<T, \"oneof\" | \"repeat\" | \"repeated\" | \"packed\" | \"opt\"> & (\n | { readonly repeated: false, readonly packed: false, readonly opt: false; readonly oneof: undefined; }\n | { readonly repeated: false, readonly packed: false, readonly opt: true; readonly oneof: undefined; }\n | { readonly repeated: boolean, readonly packed: boolean, readonly opt: false; readonly oneof: undefined; }\n | { readonly repeated: false, readonly packed: false, readonly opt: false; readonly oneof: OneofInfo; });\n\n// prettier-ignore\ntype fiPartialRules<T extends fiScalar|fiMap|fiEnum|fiMessage> = Omit<T, \"jsonName\" | \"localName\" | \"oneof\" | \"repeat\" | \"repeated\" | \"packed\" | \"opt\" | \"default\"> & (\n | { readonly jsonName?: string; readonly repeated?: false; readonly packed?: false; readonly opt?: false; readonly oneof?: undefined; default?: T[\"default\"]; }\n | { readonly jsonName?: string; readonly repeated?: false; readonly packed?: false; readonly opt: true; readonly oneof?: undefined; default?: T[\"default\"]; }\n | { readonly jsonName?: string; readonly repeated?: boolean; readonly packed?: boolean; readonly opt?: false; readonly oneof?: undefined; default?: T[\"default\"]; }\n | { readonly jsonName?: string; readonly repeated?: false; readonly packed?: false; readonly opt?: false; readonly oneof: string; default?: T[\"default\"]; });\n\n/**\n * Scalar value types. This is a subset of field types declared by protobuf\n * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE\n * are omitted, but the numerical values are identical.\n */\nexport enum ScalarType {\n // 0 is reserved for errors.\n // Order is weird for historical reasons.\n DOUBLE = 1,\n FLOAT = 2,\n // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if\n // negative values are likely.\n INT64 = 3,\n UINT64 = 4,\n // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if\n // negative values are likely.\n INT32 = 5,\n FIXED64 = 6,\n FIXED32 = 7,\n BOOL = 8,\n STRING = 9,\n // Tag-delimited aggregate.\n // Group type is deprecated and not supported in proto3. However, Proto3\n // implementations should still be able to parse the group wire format and\n // treat group fields as unknown fields.\n // TYPE_GROUP = 10,\n // TYPE_MESSAGE = 11, // Length-delimited aggregate.\n\n // New in version 2.\n BYTES = 12,\n UINT32 = 13,\n // TYPE_ENUM = 14,\n SFIXED32 = 15,\n SFIXED64 = 16,\n SINT32 = 17, // Uses ZigZag encoding.\n SINT64 = 18, // Uses ZigZag encoding.\n}\n","// Copyright 2008 Google Inc. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it. This code is not\n// standalone and requires a support library to be linked with it. This\n// support library is itself covered by the above license.\n\n/* eslint-disable prefer-const,@typescript-eslint/restrict-plus-operands */\n\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [1]: high bits\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nexport function varint64read(this: ReaderLike): [number, number] {\n let lowBits = 0;\n let highBits = 0;\n\n for (let shift = 0; shift < 28; shift += 7) {\n let b = this.buf[this.pos++];\n lowBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n\n let middleByte = this.buf[this.pos++];\n\n // last four bits of the first 32 bit number\n lowBits |= (middleByte & 0x0f) << 28;\n\n // 3 upper bits are part of the next 32 bit number\n highBits = (middleByte & 0x70) >> 4;\n\n if ((middleByte & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n\n for (let shift = 3; shift <= 31; shift += 7) {\n let b = this.buf[this.pos++];\n highBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n\n throw new Error(\"invalid varint\");\n}\n\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nexport function varint64write(lo: number, hi: number, bytes: number[]): void {\n for (let i = 0; i < 28; i = i + 7) {\n const shift = lo >>> i;\n const hasNext = !(shift >>> 7 == 0 && hi == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n\n const splitBits = ((lo >>> 28) & 0x0f) | ((hi & 0x07) << 4);\n const hasMoreBits = !(hi >> 3 == 0);\n bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xff);\n\n if (!hasMoreBits) {\n return;\n }\n\n for (let i = 3; i < 31; i = i + 7) {\n const shift = hi >>> i;\n const hasNext = !(shift >>> 7 == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n\n bytes.push((hi >>> 31) & 0x01);\n}\n\n// constants for binary math\nconst TWO_PWR_32_DBL = (1 << 16) * (1 << 16);\n\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Returns tuple:\n * [0]: minus sign?\n * [1]: low bits\n * [2]: high bits\n *\n * Copyright 2008 Google Inc.\n */\nexport function int64fromString(dec: string): [boolean, number, number] {\n // Check for minus sign.\n let minus = dec[0] == \"-\";\n if (minus) dec = dec.slice(1);\n // Work 6 decimal digits at a time, acting like we're converting base 1e6\n // digits to binary. This is safe to do with floating point math because\n // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n const base = 1e6;\n let lowBits = 0;\n let highBits = 0;\n\n function add1e6digit(begin: number, end?: number) {\n // Note: Number('') is 0.\n const digit1e6 = Number(dec.slice(begin, end));\n highBits *= base;\n lowBits = lowBits * base + digit1e6;\n // Carry bits from lowBits to\n if (lowBits >= TWO_PWR_32_DBL) {\n highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n lowBits = lowBits % TWO_PWR_32_DBL;\n }\n }\n\n add1e6digit(-24, -18);\n add1e6digit(-18, -12);\n add1e6digit(-12, -6);\n add1e6digit(-6);\n return [minus, lowBits, highBits];\n}\n\n/**\n * Format 64 bit integer value (as two JS numbers) to decimal string.\n *\n * Copyright 2008 Google Inc.\n */\nexport function int64toString(bitsLow: number, bitsHigh: number): string {\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n if (bitsHigh <= 0x1fffff) {\n return \"\" + (TWO_PWR_32_DBL * bitsHigh + bitsLow);\n }\n\n // What this code is doing is essentially converting the input number from\n // base-2 to base-1e7, which allows us to represent the 64-bit range with\n // only 3 (very large) digits. Those digits are then trivial to convert to\n // a base-10 string.\n\n // The magic numbers used here are -\n // 2^24 = 16777216 = (1,6777216) in base-1e7.\n // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n\n // Split 32:32 representation into 16:24:24 representation so our\n // intermediate digits don't overflow.\n let low = bitsLow & 0xffffff;\n let mid = (((bitsLow >>> 24) | (bitsHigh << 8)) >>> 0) & 0xffffff;\n let high = (bitsHigh >> 16) & 0xffff;\n\n // Assemble our three base-1e7 digits, ignoring carries. The maximum\n // value in a digit at this step is representable as a 48-bit integer, which\n // can be stored in a 64-bit floating point number.\n let digitA = low + mid * 6777216 + high * 6710656;\n let digitB = mid + high * 8147497;\n let digitC = high * 2;\n\n // Apply carries from A to B and from B to C.\n let base = 10000000;\n if (digitA >= base) {\n digitB += Math.floor(digitA / base);\n digitA %= base;\n }\n\n if (digitB >= base) {\n digitC += Math.floor(digitB / base);\n digitB %= base;\n }\n\n // Convert base-1e7 digits to base-10, with optional leading zeroes.\n function decimalFrom1e7(digit1e7: number, needLeadingZeros: number) {\n let partial = digit1e7 ? String(digit1e7) : \"\";\n if (needLeadingZeros) {\n return \"0000000\".slice(partial.length) + partial;\n }\n return partial;\n }\n\n return (\n decimalFrom1e7(digitC, /*needLeadingZeros=*/ 0) +\n decimalFrom1e7(digitB, /*needLeadingZeros=*/ digitC) +\n // If the final 1e7 digit didn't need leading zeros, we would have\n // returned via the trivial code path at the top.\n decimalFrom1e7(digitA, /*needLeadingZeros=*/ 1)\n );\n}\n\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nexport function varint32write(value: number, bytes: number[]): void {\n if (value >= 0) {\n // write value as varint 32\n while (value > 0x7f) {\n bytes.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n bytes.push(value);\n } else {\n for (let i = 0; i < 9; i++) {\n bytes.push((value & 127) | 128);\n value = value >> 7;\n }\n bytes.push(1);\n }\n}\n\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nexport function varint32read(this: ReaderLike): number {\n let b = this.buf[this.pos++];\n let result = b & 0x7f;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 7;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 14;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 21;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n\n // Extract only last 4 bits\n b = this.buf[this.pos++];\n result |= (b & 0x0f) << 28;\n\n for (let readBytes = 5; (b & 0x80) !== 0 && readBytes < 10; readBytes++)\n b = this.buf[this.pos++];\n\n if ((b & 0x80) != 0) throw new Error(\"invalid varint\");\n\n this.assertBounds();\n\n // Result can have 32 bits, convert it to unsigned\n return result >>> 0;\n}\n\ntype ReaderLike = {\n buf: Uint8Array;\n pos: number;\n len: number;\n assertBounds(): void;\n};\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { int64fromString, int64toString } from \"./google/varint.js\";\n\n/**\n * We use the `bigint` primitive to represent 64-bit integral types. If bigint\n * is unavailable, we fall back to a string representation, which means that\n * all values typed as `bigint` will actually be strings.\n *\n * If your code is intended to run in an environment where bigint may be\n * unavailable, it must handle both the bigint and the string representation.\n * For presenting values, this is straight-forward with implicit or explicit\n * conversion to string:\n *\n * ```ts\n * let el = document.createElement(\"span\");\n * el.innerText = message.int64Field; // assuming a protobuf int64 field\n *\n * console.log(`int64: ${message.int64Field}`);\n *\n * let str: string = message.int64Field.toString();\n * ```\n *\n * If you need to manipulate 64-bit integral values and are sure the values\n * can be safely represented as an IEEE-754 double precision number, you can\n * convert to a JavaScript Number:\n *\n * ```ts\n * console.log(message.int64Field.toString())\n * let num = Number(message.int64Field);\n * num = num + 1;\n * message.int64Field = protoInt64.parse(num);\n * ```\n *\n * If you need to manipulate 64-bit integral values that are outside the\n * range of safe representation as Number, you can work with the two's\n * complement directly. The following example negates a field value:\n *\n * ```ts\n * let t = protoInt64.enc(message.int64Field);\n * t.hi = ~t.hi;\n * if (t.lo) {\n * t.lo = ~t.lo + 1;\n * } else {\n * t.hi += 1;\n * }\n * message.int64Field = protoInt64.dec(t.lo, t.hi);\n * ```\n *\n * There are several 3rd party libraries that provide arithmetic operations\n * on a two's complement, for example the npm package \"long\".\n */\ninterface Int64Support {\n /**\n * 0n if bigint is available, \"0\" if unavailable.\n */\n readonly zero: bigint;\n\n /**\n * Is bigint available?\n */\n readonly supported: boolean;\n\n /**\n * Parse a signed 64-bit integer.\n * Returns a bigint if available, a string otherwise.\n */\n parse(value: string | number | bigint): bigint;\n\n /**\n * Parse an unsigned 64-bit integer.\n * Returns a bigint if available, a string otherwise.\n */\n uParse(value: string | number | bigint): bigint;\n\n /**\n * Convert a signed 64-bit integral value to a two's complement.\n */\n enc(value: string | number | bigint): { lo: number; hi: number };\n\n /**\n * Convert an unsigned 64-bit integral value to a two's complement.\n */\n uEnc(value: string | number | bigint): { lo: number; hi: number };\n\n /**\n * Convert a two's complement to a signed 64-bit integral value.\n * Returns a bigint if available, a string otherwise.\n */\n dec(lo: number, hi: number): bigint;\n\n /**\n * Convert a two's complement to an unsigned 64-bit integral value.\n * Returns a bigint if available, a string otherwise.\n */\n uDec(lo: number, hi: number): bigint;\n}\n\nfunction makeInt64Support(): Int64Support {\n const dv = new DataView(new ArrayBuffer(8));\n // note that Safari 14 implements BigInt, but not the DataView methods\n const ok =\n globalThis.BigInt !== undefined && // eslint-disable-line @typescript-eslint/no-unnecessary-condition -- conditional for BigInt is very much necessary\n typeof dv.getBigInt64 === \"function\" &&\n typeof dv.getBigUint64 === \"function\" &&\n typeof dv.setBigInt64 === \"function\" &&\n typeof dv.setBigUint64 === \"function\";\n if (ok) {\n const MIN = BigInt(\"-9223372036854775808\"),\n MAX = BigInt(\"9223372036854775807\"),\n UMIN = BigInt(\"0\"),\n UMAX = BigInt(\"18446744073709551615\");\n return {\n zero: BigInt(0),\n supported: true,\n parse(value: string | number | bigint): bigint {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > MAX || bi < MIN) {\n throw new Error(`int64 invalid: ${value}`);\n }\n return bi;\n },\n uParse(value: string | number | bigint): bigint {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > UMAX || bi < UMIN) {\n throw new Error(`uint64 invalid: ${value}`);\n }\n return bi;\n },\n enc(value: string | number | bigint): { lo: number; hi: number } {\n dv.setBigInt64(0, this.parse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n uEnc(value: string | number | bigint): { lo: number; hi: number } {\n dv.setBigInt64(0, this.uParse(value), true);\n return {\n lo: dv.getInt32(0, true),\n hi: dv.getInt32(4, true),\n };\n },\n dec(lo: number, hi: number): bigint {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigInt64(0, true);\n },\n uDec(lo: number, hi: number): bigint {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigUint64(0, true);\n },\n };\n }\n return {\n zero: \"0\" as unknown as 0n,\n supported: false,\n parse(value: string): bigint {\n if (!/^-?[0-9]+$/.test(value)) {\n throw new Error(`int64 invalid: ${value}`);\n }\n return value as unknown as bigint;\n },\n uParse(value: string): bigint {\n if (!/^-?[0-9]+$/.test(value)) {\n throw new Error(`uint64 invalid: ${value}`);\n }\n return value as unknown as bigint;\n },\n enc(value: string | number | bigint): { lo: number; hi: number } {\n if (typeof value == \"string\") {\n if (!/^-?[0-9]+$/.test(value)) {\n throw new Error(`int64 invalid: ${value}`);\n }\n } else {\n value = value.toString(10);\n }\n const [, lo, hi] = int64fromString(value);\n return { lo, hi };\n },\n uEnc(value: string | number | bigint): { lo: number; hi: number } {\n if (typeof value == \"string\") {\n if (!/^-?[0-9]+$/.test(value)) {\n throw new Error(`uint64 invalid: ${value}`);\n }\n } else {\n value = value.toString(10);\n }\n const [minus, lo, hi] = int64fromString(value);\n if (minus) {\n throw new Error(`uint64 invalid: ${value}`);\n }\n return { lo, hi };\n },\n dec(lo: number, hi: number): bigint {\n const minus = (hi & 0x80000000) !== 0;\n if (minus) {\n // negate\n hi = ~hi;\n if (lo) {\n lo = ~lo + 1;\n } else {\n hi += 1;\n }\n return (\"-\" + int64toString(lo, hi)) as unknown as bigint;\n }\n return int64toString(lo, hi) as unknown as bigint;\n },\n uDec(lo: number, hi: number): bigint {\n return int64toString(lo, hi) as unknown as bigint;\n },\n };\n}\n\nexport const protoInt64: Int64Support = makeInt64Support();\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {\n varint32read,\n varint32write,\n varint64read,\n varint64write,\n} from \"./google/varint.js\";\nimport { assertFloat32, assertInt32, assertUInt32 } from \"./private/assert.js\";\nimport { protoInt64 } from \"./proto-int64.js\";\n\n/* eslint-disable prefer-const,no-case-declarations,@typescript-eslint/restrict-plus-operands */\n\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nexport enum WireType {\n /**\n * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n */\n Varint = 0,\n\n /**\n * Used for fixed64, sfixed64, double.\n * Always 8 bytes with little-endian byte order.\n */\n Bit64 = 1,\n\n /**\n * Used for string, bytes, embedded messages, packed repeated fields\n *\n * Only repeated numeric types (types which use the varint, 32-bit,\n * or 64-bit wire types) can be packed. In proto3, such fields are\n * packed by default.\n */\n LengthDelimited = 2,\n\n /**\n * Used for groups\n * @deprecated\n */\n StartGroup = 3,\n\n /**\n * Used for groups\n * @deprecated\n */\n EndGroup = 4,\n\n /**\n * Used for fixed32, sfixed32, float.\n * Always 4 bytes with little-endian byte order.\n */\n Bit32 = 5,\n}\n\ntype TextEncoderLike = { encode(input?: string): Uint8Array };\ntype TextDecoderLike = { decode(input?: Uint8Array): string };\n\nexport interface IBinaryReader {\n /**\n * Current position.\n */\n readonly pos: number;\n\n /**\n * Number of bytes available in this reader.\n */\n readonly len: number;\n\n /**\n * Reads a tag - field number and wire type.\n */\n tag(): [number, WireType];\n\n /**\n * Skip one element on the wire and return the skipped data.\n */\n skip(wireType: WireType): Uint8Array;\n\n /**\n * Read a `int32` field, a signed 32 bit varint.\n */\n uint32(): number;\n\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n int32(): number;\n\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n sint32(): number;\n\n /**\n * Read a `int64` field, a signed 64-bit varint.\n */\n int64(): bigint | string;\n\n /**\n * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64(): bigint | string;\n\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64(): bigint | string;\n\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64(): bigint | string;\n\n /**\n * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n */\n fixed64(): bigint | string;\n\n /**\n * Read a `bool` field, a variant.\n */\n bool(): boolean;\n\n /**\n * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n */\n fixed32(): number;\n\n /**\n * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n */\n sfixed32(): number;\n\n /**\n * Read a `float` field, 32-bit floating point number.\n */\n float(): number;\n\n /**\n * Read a `double` field, a 64-bit floating point number.\n */\n double(): number;\n\n /**\n * Read a `bytes` field, length-delimited arbitrary data.\n */\n bytes(): Uint8Array;\n\n /**\n * Read a `string` field, length-delimited data converted to UTF-8 text.\n */\n string(): string;\n}\n\nexport interface IBinaryWriter {\n /**\n * Return all bytes written and reset this writer.\n */\n finish(): Uint8Array;\n\n /**\n * Start a new fork for length-delimited data like a message\n * or a packed repeated field.\n *\n * Must be joined later with `join()`.\n */\n fork(): IBinaryWriter;\n\n /**\n * Join the last fork. Write its length and bytes, then\n * return to the previous state.\n */\n join(): IBinaryWriter;\n\n /**\n * Writes a tag (field number and wire type).\n *\n * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`\n *\n * Generated code should compute the tag ahead of time and call `uint32()`.\n */\n tag(fieldNo: number, type: WireType): IBinaryWriter;\n\n /**\n * Write a chunk of raw bytes.\n */\n raw(chunk: Uint8Array): IBinaryWriter;\n\n /**\n * Write a `uint32` value, an unsigned 32 bit varint.\n */\n uint32(value: number): IBinaryWriter;\n\n /**\n * Write a `int32` value, a signed 32 bit varint.\n */\n int32(value: number): IBinaryWriter;\n\n /**\n * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n */\n sint32(value: number): IBinaryWriter;\n\n /**\n * Write a `int64` value, a signed 64-bit varint.\n */\n int64(value: string | number | bigint): IBinaryWriter;\n\n /**\n * Write a `uint64` value, an unsigned 64-bit varint.\n */\n uint64(value: string | number | bigint): IBinaryWriter;\n\n /**\n * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64(value: string | number | bigint): IBinaryWriter;\n\n /**\n * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n */\n fixed64(value: string | number | bigint): IBinaryWriter;\n\n /**\n * Write a `fixed64` value, a signed, fixed-length 64-bit integer.\n */\n sfixed64(value: string | number | bigint): IBinaryWriter;\n\n /**\n * Write a `bool` value, a variant.\n */\n bool(value: boolean): IBinaryWriter;\n\n /**\n * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n */\n fixed32(value: number): IBinaryWriter;\n\n /**\n * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n */\n sfixed32(value: number): IBinaryWriter;\n\n /**\n * Write a `float` value, 32-bit floating point number.\n */\n float(value: number): IBinaryWriter;\n\n /**\n * Write a `double` value, a 64-bit floating point number.\n */\n double(value: number): IBinaryWriter;\n\n /**\n * Write a `bytes` value, length-delimited arbitrary data.\n */\n bytes(value: Uint8Array): IBinaryWriter;\n\n /**\n * Write a `string` value, length-delimited data converted to UTF-8 text.\n */\n string(value: string): IBinaryWriter;\n}\n\nexport class BinaryWriter implements IBinaryWriter {\n /**\n * We cannot allocate a buffer for the entire output\n * because we don't know it's size.\n *\n * So we collect smaller chunks of known size and\n * concat them later.\n *\n * Use `raw()` to push data to this array. It will flush\n * `buf` first.\n */\n private chunks: Uint8Array[];\n\n /**\n * A growing buffer for byte values. If you don't know\n * the size of the data you are writing, push to this\n * array.\n */\n protected buf: number[];\n\n /**\n * Previous fork states.\n */\n private stack: Array<{ chunks: Uint8Array[]; buf: number[] }> = [];\n\n /**\n * Text encoder instance to convert UTF-8 to bytes.\n */\n private readonly textEncoder: TextEncoderLike;\n\n constructor(textEncoder?: TextEncoderLike) {\n this.textEncoder = textEncoder ?? new TextEncoder();\n this.chunks = [];\n this.buf = [];\n }\n\n /**\n * Return all bytes written and reset this writer.\n */\n finish(): Uint8Array {\n this.chunks.push(new Uint8Array(this.buf)); // flush the buffer\n let len = 0;\n for (let i = 0; i < this.chunks.length; i++) len += this.chunks[i].length;\n let bytes = new Uint8Array(len);\n let offset = 0;\n for (let i = 0; i < this.chunks.length; i++) {\n bytes.set(this.chunks[i], offset);\n offset += this.chunks[i].length;\n }\n this.chunks = [];\n return bytes;\n }\n\n /**\n * Start a new fork for length-delimited data like a message\n * or a packed repeated field.\n *\n * Must be joined later with `join()`.\n */\n fork(): IBinaryWriter {\n this.stack.push({ chunks: this.chunks, buf: this.buf });\n this.chunks = [];\n this.buf = [];\n return this;\n }\n\n /**\n * Join the last fork. Write its length and bytes, then\n * return to the previous state.\n */\n join(): IBinaryWriter {\n // get chunk of fork\n let chunk = this.finish();\n\n // restore previous state\n let prev = this.stack.pop();\n if (!prev) throw new Error(\"invalid state, fork stack empty\");\n this.chunks = prev.chunks;\n this.buf = prev.buf;\n\n // write length of chunk as varint\n this.uint32(chunk.byteLength);\n return this.raw(chunk);\n }\n\n /**\n * Writes a tag (field number and wire type).\n *\n * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`.\n *\n * Generated code should compute the tag ahead of time and call `uint32()`.\n */\n tag(fieldNo: number, type: WireType): IBinaryWriter {\n return this.uint32(((fieldNo << 3) | type) >>> 0);\n }\n\n /**\n * Write a chunk of raw bytes.\n */\n raw(chunk: Uint8Array): IBinaryWriter {\n if (this.buf.length) {\n this.chunks.push(new Uint8Array(this.buf));\n this.buf = [];\n }\n this.chunks.push(chunk);\n return this;\n }\n\n /**\n * Write a `uint32` value, an unsigned 32 bit varint.\n */\n uint32(value: number): IBinaryWriter {\n assertUInt32(value);\n\n // write value as varint 32, inlined for speed\n while (value > 0x7f) {\n this.buf.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n this.buf.push(value);\n\n return this;\n }\n\n /**\n * Write a `int32` value, a signed 32 bit varint.\n */\n int32(value: number): IBinaryWriter {\n assertInt32(value);\n varint32write(value, this.buf);\n return this;\n }\n\n /**\n * Write a `bool` value, a variant.\n */\n bool(value: boolean): IBinaryWriter {\n this.buf.push(value ? 1 : 0);\n return this;\n }\n\n /**\n * Write a `bytes` value, length-delimited arbitrary data.\n */\n bytes(value: Uint8Array): IBinaryWriter {\n this.uint32(value.byteLength); // write length of chunk as varint\n return this.raw(value);\n }\n\n /**\n * Write a `string` value, length-delimited data converted to UTF-8 text.\n */\n string(value: string): IBinaryWriter {\n let chunk = this.textEncoder.encode(value);\n this.uint32(chunk.byteLength); // write length of chunk as varint\n return this.raw(chunk);\n }\n\n /**\n * Write a `float` value, 32-bit floating point number.\n */\n float(value: number): IBinaryWriter {\n assertFloat32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setFloat32(0, value, true);\n return this.raw(chunk);\n }\n\n /**\n * Write a `double` value, a 64-bit floating point number.\n */\n double(value: number): IBinaryWriter {\n let chunk = new Uint8Array(8);\n new DataView(chunk.buffer).setFloat64(0, value, true);\n return this.raw(chunk);\n }\n\n /**\n * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n */\n fixed32(value: number): IBinaryWriter {\n assertUInt32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setUint32(0, value, true);\n return this.raw(chunk);\n }\n\n /**\n * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n */\n sfixed32(value: number): IBinaryWriter {\n assertInt32(value);\n let chunk = new Uint8Array(4);\n new DataView(chunk.buffer).setInt32(0, value, true);\n return this.raw(chunk);\n }\n\n /**\n * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n */\n sint32(value: number): IBinaryWriter {\n assertInt32(value);\n // zigzag encode\n value = ((value << 1) ^ (value >> 31)) >>> 0;\n varint32write(value, this.buf);\n return this;\n }\n\n /**\n * Write a `fixed64` value, a signed, fixed-length 64-bit integer.\n */\n sfixed64(value: string | number | bigint): IBinaryWriter {\n let chunk = new Uint8Array(8),\n view = new DataView(chunk.buffer),\n tc = protoInt64.enc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n return this.raw(chunk);\n }\n\n /**\n * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n */\n fixed64(value: string | number | bigint): IBinaryWriter {\n let chunk = new Uint8Array(8),\n view = new DataView(chunk.buffer),\n tc = protoInt64.uEnc(value);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n return this.raw(chunk);\n }\n\n /**\n * Write a `int64` value, a signed 64-bit varint.\n */\n int64(value: string | number | bigint): IBinaryWriter {\n let tc = protoInt64.enc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n\n /**\n * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64(value: string | number | bigint): IBinaryWriter {\n let tc = protoInt64.enc(value),\n // zigzag encode\n sign = tc.hi >> 31,\n lo = (tc.lo << 1) ^ sign,\n hi = ((tc.hi << 1) | (tc.lo >>> 31)) ^ sign;\n varint64write(lo, hi, this.buf);\n return this;\n }\n\n /**\n * Write a `uint64` value, an unsigned 64-bit varint.\n */\n uint64(value: string | number | bigint): IBinaryWriter {\n let tc = protoInt64.uEnc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n}\n\nexport class BinaryReader implements IBinaryReader {\n /**\n * Current position.\n */\n pos: number;\n\n /**\n * Number of bytes available in this reader.\n */\n readonly len: number;\n\n private readonly buf: Uint8Array;\n private readonly view: DataView;\n private readonly textDecoder: TextDecoderLike;\n\n constructor(buf: Uint8Array, textDecoder?: TextDecoderLike) {\n this.buf = buf;\n this.len = buf.length;\n this.pos = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n this.textDecoder = textDecoder ?? new TextDecoder();\n }\n\n /**\n * Reads a tag - field number and wire type.\n */\n tag(): [number, WireType] {\n let tag = this.uint32(),\n fieldNo = tag >>> 3,\n wireType = tag & 7;\n if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n throw new Error(\n \"illegal tag: field no \" + fieldNo + \" wire type \" + wireType\n );\n return [fieldNo, wireType];\n }\n\n /**\n * Skip one element on the wire and return the skipped data.\n * Supports WireType.StartGroup since v2.0.0-alpha.23.\n */\n skip(wireType: WireType): Uint8Array {\n let start = this.pos;\n switch (wireType) {\n case WireType.Varint:\n while (this.buf[this.pos++] & 0x80) {\n // ignore\n }\n break;\n // eslint-disable-next-line\n // @ts-ignore TS7029: Fallthrough case in switch\n case WireType.Bit64:\n this.pos += 4;\n // eslint-disable-next-line\n // @ts-ignore TS7029: Fallthrough case in switch\n case WireType.Bit32:\n this.pos += 4;\n break;\n case WireType.LengthDelimited:\n let len = this.uint32();\n this.pos += len;\n break;\n case WireType.StartGroup:\n // From descriptor.proto: Group type is deprecated, not supported in proto3.\n // But we must still be able to parse and treat as unknown.\n let t: WireType;\n while ((t = this.tag()[1]) !== WireType.EndGroup) {\n this.skip(t);\n }\n break;\n default:\n throw new Error(\"cant skip wire type \" + wireType);\n }\n this.assertBounds();\n return this.buf.subarray(start, this.pos);\n }\n\n protected varint64 = varint64read as () => [number, number]; // dirty cast for `this`\n\n /**\n * Throws error if position in byte array is out of range.\n */\n protected assertBounds(): void {\n if (this.pos > this.len) throw new RangeError(\"premature EOF\");\n }\n\n /**\n * Read a `uint32` field, an unsigned 32 bit varint.\n */\n uint32 = varint32read as IBinaryReader[\"uint32\"]; // dirty cast for `this` and access to protected `buf`\n\n /**\n * Read a `int32` field, a signed 32 bit varint.\n */\n int32(): number {\n return this.uint32() | 0;\n }\n\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n sint32(): number {\n let zze = this.uint32();\n // decode zigzag\n return (zze >>> 1) ^ -(zze & 1);\n }\n\n /**\n * Read a `int64` field, a signed 64-bit varint.\n */\n int64(): bigint | string {\n return protoInt64.dec(...this.varint64());\n }\n\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64(): bigint | string {\n return protoInt64.uDec(...this.varint64());\n }\n\n /**\n * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64(): bigint | string {\n let [lo, hi] = this.varint64();\n // decode zig zag\n let s = -(lo & 1);\n lo = ((lo >>> 1) | ((hi & 1) << 31)) ^ s;\n hi = (hi >>> 1) ^ s;\n return protoInt64.dec(lo, hi);\n }\n\n /**\n * Read a `bool` field, a variant.\n */\n bool(): boolean {\n let [lo, hi] = this.varint64();\n return lo !== 0 || hi !== 0;\n }\n\n /**\n * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n */\n fixed32(): number {\n return this.view.getUint32((this.pos += 4) - 4, true);\n }\n\n /**\n * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n */\n sfixed32(): number {\n return this.view.getInt32((this.pos += 4) - 4, true);\n }\n\n /**\n * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n */\n fixed64(): bigint | string {\n return protoInt64.uDec(this.sfixed32(), this.sfixed32());\n }\n\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64(): bigint | string {\n return protoInt64.dec(this.sfixed32(), this.sfixed32());\n }\n\n /**\n * Read a `float` field, 32-bit floating point number.\n */\n float(): number {\n return this.view.getFloat32((this.pos += 4) - 4, true);\n }\n\n /**\n * Read a `double` field, a 64-bit floating point number.\n */\n double(): number {\n return this.view.getFloat64((this.pos += 8) - 8, true);\n }\n\n /**\n * Read a `bytes` field, length-delimited arbitrary data.\n */\n bytes(): Uint8Array {\n let len = this.uint32(),\n start = this.pos;\n this.pos += len;\n this.assertBounds();\n return this.buf.subarray(start, start + len);\n }\n\n /**\n * Read a `string` field, length-delimited data converted to UTF-8 text.\n */\n string(): string {\n return this.textDecoder.decode(this.bytes());\n }\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { Message } from \"../message.js\";\nimport type { MessageType } from \"../message-type.js\";\n\n/* eslint-disable @typescript-eslint/no-explicit-any -- unknown fields are represented with any */\n\n/**\n * A field wrapper unwraps a message to a primitive value that is more\n * ergonomic for use as a message field.\n *\n * Note that this feature exists for google/protobuf/{wrappers,struct}.proto\n * and cannot be used to arbitrarily modify types in generated code.\n */\nexport interface FieldWrapper<T extends Message<T> = any, U = any> {\n wrapField(value: U): T;\n\n unwrapField(value: T): U;\n}\n\n/**\n * Wrap field values whose message type has a wrapper.\n */\nexport function wrapField<T extends Message<T>>(\n type: MessageType<T>,\n value: any\n): T {\n if (value instanceof type) {\n return value;\n }\n if (type.fieldWrapper) {\n return type.fieldWrapper.wrapField(value);\n }\n throw new Error(\n `cannot unwrap field value, ${type.typeName} does not define a field wrapper`\n );\n}\n\n/**\n * Unwrap field values whose message type has a wrapper.\n */\nexport function unwrapField<T extends Message<T>>(\n type: MessageType<T>,\n value: T\n): any {\n return type.fieldWrapper ? type.fieldWrapper.unwrapField(value) : value;\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { ScalarType } from \"../field.js\";\nimport { IBinaryWriter, WireType } from \"../binary-encoding.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Returns true if both scalar values are equal.\n */\nexport function scalarEquals(\n type: ScalarType,\n a: string | boolean | number | bigint | Uint8Array | undefined,\n b: string | boolean | number | bigint | Uint8Array | undefined\n): boolean {\n if (a === b) {\n // This correctly matches equal values except BYTES and (possibly) 64-bit integers.\n return true;\n }\n // Special case BYTES - we need to compare each byte individually\n if (type == ScalarType.BYTES) {\n if (!(a instanceof Uint8Array) || !(b instanceof Uint8Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n }\n // Special case 64-bit integers - we support number, string and bigint representation.\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (type) {\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n // Loose comparison will match between 0n, 0 and \"0\".\n return a == b;\n }\n // Anything that hasn't been caught by strict comparison or special cased\n // BYTES and 64-bit integers is not equal.\n return false;\n}\n\n/**\n * Returns the default value for the given scalar type, following\n * proto3 semantics.\n */\nexport function scalarDefaultValue(type: ScalarType): any {\n switch (type) {\n case ScalarType.BOOL:\n return false;\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n return protoInt64.zero;\n case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n return 0.0;\n case ScalarType.BYTES:\n return new Uint8Array(0);\n case ScalarType.STRING:\n return \"\";\n default:\n // Handles INT32, UINT32, SINT32, FIXED32, SFIXED32.\n // We do not use individual cases to save a few bytes code size.\n return 0;\n }\n}\n\n/**\n * Get information for writing a scalar value.\n *\n * Returns tuple:\n * [0]: appropriate WireType\n * [1]: name of the appropriate method of IBinaryWriter\n * [2]: whether the given value is a default value for proto3 semantics\n *\n * If argument `value` is omitted, [2] is always false.\n */\nexport function scalarTypeInfo(\n type: ScalarType,\n value?: any\n): [\n WireType,\n Exclude<keyof IBinaryWriter, \"tag\" | \"raw\" | \"fork\" | \"join\" | \"finish\">,\n boolean\n] {\n const isUndefined = value === undefined;\n let wireType = WireType.Varint;\n let isIntrinsicDefault = value === 0;\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- INT32, UINT32, SINT32 are covered by the defaults\n switch (type) {\n case ScalarType.STRING:\n isIntrinsicDefault = isUndefined || !(value as string).length;\n wireType = WireType.LengthDelimited;\n break;\n case ScalarType.BOOL:\n isIntrinsicDefault = value === false;\n break;\n case ScalarType.DOUBLE:\n wireType = WireType.Bit64;\n break;\n case ScalarType.FLOAT:\n wireType = WireType.Bit32;\n break;\n case ScalarType.INT64:\n isIntrinsicDefault = isUndefined || value == 0;\n break;\n case ScalarType.UINT64:\n isIntrinsicDefault = isUndefined || value == 0;\n break;\n case ScalarType.FIXED64:\n isIntrinsicDefault = isUndefined || value == 0;\n wireType = WireType.Bit64;\n break;\n case ScalarType.BYTES:\n isIntrinsicDefault = isUndefined || !(value as Uint8Array).byteLength;\n wireType = WireType.LengthDelimited;\n break;\n case ScalarType.FIXED32:\n wireType = WireType.Bit32;\n break;\n case ScalarType.SFIXED32:\n wireType = WireType.Bit32;\n break;\n case ScalarType.SFIXED64:\n isIntrinsicDefault = isUndefined || value == 0;\n wireType = WireType.Bit64;\n break;\n case ScalarType.SINT64:\n isIntrinsicDefault = isUndefined || value == 0;\n break;\n }\n const method = ScalarType[type].toLowerCase() as Exclude<\n keyof IBinaryWriter,\n \"tag\" | \"raw\" | \"fork\" | \"join\" | \"finish\"\n >;\n return [wireType, method, isUndefined || isIntrinsicDefault];\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {\n BinaryReader,\n BinaryWriter,\n IBinaryReader,\n IBinaryWriter,\n WireType,\n} from \"../binary-encoding.js\";\nimport type {\n BinaryReadOptions,\n BinaryWriteOptions,\n} from \"../binary-format.js\";\nimport type { BinaryFormat } from \"../binary-format.js\";\nimport type { Message } from \"../message.js\";\nimport { FieldInfo, ScalarType } from \"../field.js\";\nimport { unwrapField, wrapField } from \"./field-wrapper.js\";\nimport { scalarDefaultValue, scalarTypeInfo } from \"./scalars.js\";\nimport { assert } from \"./assert.js\";\nimport type { MessageType } from \"../message-type.js\";\n\n/* eslint-disable @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unnecessary-condition, no-case-declarations, prefer-const */\n\nconst unknownFieldsSymbol = Symbol(\"@bufbuild/protobuf/unknown-fields\");\n\n// Default options for parsing binary data.\nconst readDefaults: Readonly<BinaryReadOptions> = {\n readUnknownFields: true,\n readerFactory: (bytes) => new BinaryReader(bytes),\n};\n\n// Default options for serializing binary data.\nconst writeDefaults: Readonly<BinaryWriteOptions> = {\n writeUnknownFields: true,\n writerFactory: () => new BinaryWriter(),\n};\n\nfunction makeReadOptions(\n options?: Partial<BinaryReadOptions>\n): Readonly<BinaryReadOptions> {\n return options ? { ...readDefaults, ...options } : readDefaults;\n}\n\nfunction makeWriteOptions(\n options?: Partial<BinaryWriteOptions>\n): Readonly<BinaryWriteOptions> {\n return options ? { ...writeDefaults, ...options } : writeDefaults;\n}\n\nexport function makeBinaryFormatCommon(): Omit<BinaryFormat, \"writeMessage\"> {\n return {\n makeReadOptions,\n makeWriteOptions,\n listUnknownFields(\n message: Message\n ): ReadonlyArray<{ no: number; wireType: WireType; data: Uint8Array }> {\n return (message as any)[unknownFieldsSymbol] ?? [];\n },\n discardUnknownFields(message: Message): void {\n delete (message as any)[unknownFieldsSymbol];\n },\n writeUnknownFields(message: Message, writer: IBinaryWriter): void {\n const m = message as any;\n const c = m[unknownFieldsSymbol] as any[] | undefined;\n if (c) {\n for (const f of c) {\n writer.tag(f.no, f.wireType).raw(f.data);\n }\n }\n },\n onUnknownField(\n message: Message,\n no: number,\n wireType: WireType,\n data: Uint8Array\n ): void {\n const m = message as any;\n if (!Array.isArray(m[unknownFieldsSymbol])) {\n m[unknownFieldsSymbol] = [];\n }\n m[unknownFieldsSymbol].push({ no, wireType, data });\n },\n readMessage<T extends Message>(\n message: T,\n reader: IBinaryReader,\n length: number,\n options: BinaryReadOptions\n ): void {\n const type = message.getType();\n const end = length === undefined ? reader.len : reader.pos + length;\n while (reader.pos < end) {\n const [fieldNo, wireType] = reader.tag(),\n field = type.fields.find(fieldNo);\n if (!field) {\n const data = reader.skip(wireType);\n if (options.readUnknownFields) {\n this.onUnknownField(message, fieldNo, wireType, data);\n }\n continue;\n }\n let target = message as any,\n repeated = field.repeated,\n localName = field.localName;\n if (field.oneof) {\n target = target[field.oneof.localName];\n if (target.case != localName) {\n delete target.value;\n }\n target.case = localName;\n localName = \"value\";\n }\n switch (field.kind) {\n case \"scalar\":\n case \"enum\":\n const scalarType =\n field.kind == \"enum\" ? ScalarType.INT32 : field.T;\n if (repeated) {\n let arr = target[localName] as any[]; // safe to assume presence of array, oneof cannot contain repeated values\n if (\n wireType == WireType.LengthDelimited &&\n scalarType != ScalarType.STRING &&\n scalarType != ScalarType.BYTES\n ) {\n let e = reader.uint32() + reader.pos;\n while (reader.pos < e) {\n arr.push(readScalar(reader, scalarType));\n }\n } else {\n arr.push(readScalar(reader, scalarType));\n }\n } else {\n target[localName] = readScalar(reader, scalarType);\n }\n break;\n case \"message\":\n const messageType = field.T;\n if (repeated) {\n // safe to assume presence of array, oneof cannot contain repeated values\n (target[localName] as any[]).push(\n messageType.fromBinary(reader.bytes(), options)\n );\n } else {\n if (target[localName] instanceof messageType) {\n (target[localName] as Message).fromBinary(\n reader.bytes(),\n options\n );\n } else {\n target[localName] = unwrapField(\n messageType,\n messageType.fromBinary(reader.bytes(), options)\n );\n }\n }\n break;\n case \"map\":\n let [mapKey, mapVal] = readMapEntry(field, reader, options);\n // safe to assume presence of map object, oneof cannot contain repeated values\n target[localName][mapKey] = mapVal;\n break;\n }\n }\n },\n };\n}\n\n// Read a map field, expecting key field = 1, value field = 2\nfunction readMapEntry(\n field: FieldInfo & { kind: \"map\" },\n reader: IBinaryReader,\n options: BinaryReadOptions\n): [string | number, any] {\n const length = reader.uint32(),\n end = reader.pos + length;\n let key: any, val: any;\n while (reader.pos < end) {\n let [fieldNo] = reader.tag();\n switch (fieldNo) {\n case 1:\n key = readScalar(reader, field.K);\n break;\n case 2:\n switch (field.V.kind) {\n case \"scalar\":\n val = readScalar(reader, field.V.T);\n break;\n case \"enum\":\n val = reader.int32();\n break;\n case \"message\":\n val = field.V.T.fromBinary(reader.bytes(), options);\n break;\n }\n break;\n }\n }\n if (key === undefined) {\n let keyRaw = scalarDefaultValue(field.K);\n key =\n field.K == ScalarType.BOOL\n ? keyRaw.toString()\n : (keyRaw as string | number);\n }\n if (typeof key != \"string\" && typeof key != \"number\") {\n key = key.toString();\n }\n if (val === undefined) {\n switch (field.V.kind) {\n case \"scalar\":\n val = scalarDefaultValue(field.V.T);\n break;\n case \"enum\":\n val = 0;\n break;\n case \"message\":\n val = new field.V.T();\n break;\n }\n }\n return [key, val];\n}\n\nfunction readScalar(reader: IBinaryReader, type: ScalarType): any {\n let [, method] = scalarTypeInfo(type);\n return reader[method]();\n}\n\nexport function writeMapEntry(\n writer: IBinaryWriter,\n options: BinaryWriteOptions,\n field: FieldInfo & { kind: \"map\" },\n key: any,\n value: any\n): void {\n writer.tag(field.no, WireType.LengthDelimited);\n writer.fork();\n\n // javascript only allows number or string for object properties\n // we convert from our representation to the protobuf type\n let keyValue = key;\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- we deliberately handle just the special cases for map keys\n switch (field.K) {\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n keyValue = Number.parseInt(key);\n break;\n case ScalarType.BOOL:\n assert(key == \"true\" || key == \"false\");\n keyValue = key == \"true\";\n break;\n }\n\n // write key, expecting key field number = 1\n writeScalar(writer, field.K, 1, keyValue, true);\n\n // write value, expecting value field number = 2\n switch (field.V.kind) {\n case \"scalar\":\n writeScalar(writer, field.V.T, 2, value, true);\n break;\n case \"enum\":\n writeScalar(writer, ScalarType.INT32, 2, value, true);\n break;\n case \"message\":\n writeMessageField(writer, options, field.V.T, 2, value);\n break;\n }\n\n writer.join();\n}\n\nexport function writeMessageField(\n writer: IBinaryWriter,\n options: BinaryWriteOptions,\n type: MessageType,\n fieldNo: number,\n value: any\n): void {\n if (value !== undefined) {\n const message = wrapField(type, value);\n writer\n .tag(fieldNo, WireType.LengthDelimited)\n .bytes(message.toBinary(options));\n }\n}\n\nexport function writeScalar(\n writer: IBinaryWriter,\n type: ScalarType,\n fieldNo: number,\n value: any,\n emitIntrinsicDefault: boolean\n): void {\n let [wireType, method, isIntrinsicDefault] = scalarTypeInfo(type, value);\n if (!isIntrinsicDefault || emitIntrinsicDefault) {\n (writer.tag(fieldNo, wireType)[method] as any)(value);\n }\n}\n\nexport function writePacked(\n writer: IBinaryWriter,\n type: ScalarType,\n fieldNo: number,\n value: any[]\n): void {\n if (!value.length) {\n return;\n }\n writer.tag(fieldNo, WireType.LengthDelimited).fork();\n let [, method] = scalarTypeInfo(type);\n for (let i = 0; i < value.length; i++) {\n (writer[method] as any)(value[i]);\n }\n writer.join();\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unnecessary-condition, prefer-const */\n\n// lookup table from base64 character to byte\nlet encTable =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");\n\n// lookup table from base64 character *code* to byte because lookup by number is fast\nlet decTable: number[] = [];\nfor (let i = 0; i < encTable.length; i++)\n decTable[encTable[i].charCodeAt(0)] = i;\n\n// support base64url variants\ndecTable[\"-\".charCodeAt(0)] = encTable.indexOf(\"+\");\ndecTable[\"_\".charCodeAt(0)] = encTable.indexOf(\"/\");\n\nexport const protoBase64 = {\n /**\n * Decodes a base64 string to a byte array.\n *\n * - ignores white-space, including line breaks and tabs\n * - allows inner padding (can decode concatenated base64 strings)\n * - does not require padding\n * - understands base64url encoding:\n * \"-\" instead of \"+\",\n * \"_\" instead of \"/\",\n * no padding\n */\n dec(base64Str: string): Uint8Array {\n // estimate byte size, not accounting for inner padding and whitespace\n let es = (base64Str.length * 3) / 4;\n // if (es % 3 !== 0)\n // throw new Error(\"invalid base64 string\");\n if (base64Str[base64Str.length - 2] == \"=\") es -= 2;\n else if (base64Str[base64Str.length - 1] == \"=\") es -= 1;\n\n let bytes = new Uint8Array(es),\n bytePos = 0, // position in byte array\n groupPos = 0, // position in base64 group\n b, // current byte\n p = 0; // previous byte\n for (let i = 0; i < base64Str.length; i++) {\n b = decTable[base64Str.charCodeAt(i)];\n if (b === undefined) {\n switch (base64Str[i]) {\n // @ts-ignore TS7029: Fallthrough case in switch\n case \"=\":\n groupPos = 0; // reset state when padding found\n // @ts-ignore TS7029: Fallthrough case in switch\n case \"\\n\":\n case \"\\r\":\n case \"\\t\":\n case \" \":\n continue; // skip white-space, and padding\n default:\n throw Error(\"invalid base64 string.\");\n }\n }\n switch (groupPos) {\n case 0:\n p = b;\n groupPos = 1;\n break;\n case 1:\n bytes[bytePos++] = (p << 2) | ((b & 48) >> 4);\n p = b;\n groupPos = 2;\n break;\n case 2:\n bytes[bytePos++] = ((p & 15) << 4) | ((b & 60) >> 2);\n p = b;\n groupPos = 3;\n break;\n case 3:\n bytes[bytePos++] = ((p & 3) << 6) | b;\n groupPos = 0;\n break;\n }\n }\n if (groupPos == 1) throw Error(\"invalid base64 string.\");\n return bytes.subarray(0, bytePos);\n },\n /**\n * Decodes a base64 string to a byte array.\n *\n * - ignores white-space, including line breaks and tabs\n * - allows inner padding (can decode concatenated base64 strings)\n * - does not require padding\n * - understands base64url encoding:\n * \"-\" instead of \"+\",\n * \"_\" instead of \"/\",\n * no padding\n */\n enc(bytes: Uint8Array): string {\n let base64 = \"\",\n groupPos = 0, // position in base64 group\n b, // current byte\n p = 0; // carry over from previous byte\n\n for (let i = 0; i < bytes.length; i++) {\n b = bytes[i];\n switch (groupPos) {\n case 0:\n base64 += encTable[b >> 2];\n p = (b & 3) << 4;\n groupPos = 1;\n break;\n case 1:\n base64 += encTable[p | (b >> 4)];\n p = (b & 15) << 2;\n groupPos = 2;\n break;\n case 2:\n base64 += encTable[p | (b >> 6)];\n base64 += encTable[b & 63];\n groupPos = 0;\n break;\n }\n }\n\n // padding required?\n if (groupPos) {\n base64 += encTable[p];\n base64 += \"=\";\n if (groupPos == 1) base64 += \"=\";\n }\n\n return base64;\n },\n} as const;\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {\n JsonFormat,\n JsonObject,\n JsonReadOptions,\n JsonValue,\n JsonWriteOptions,\n JsonWriteStringOptions,\n} from \"../json-format.js\";\nimport type { AnyMessage, Message } from \"../message.js\";\nimport type { MessageType } from \"../message-type.js\";\nimport { unwrapField, wrapField } from \"./field-wrapper.js\";\nimport { FieldInfo, ScalarType } from \"../field.js\";\nimport { assert, assertFloat32, assertInt32, assertUInt32 } from \"./assert.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { protoBase64 } from \"../proto-base64.js\";\nimport type { EnumType } from \"../enum.js\";\n\n/* eslint-disable no-case-declarations, @typescript-eslint/restrict-plus-operands,@typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument */\n\n// Default options for parsing JSON.\nconst jsonReadDefaults: Readonly<JsonReadOptions> = {\n ignoreUnknownFields: false,\n};\n\n// Default options for serializing to JSON.\nconst jsonWriteDefaults: Readonly<JsonWriteStringOptions> = {\n emitDefaultValues: false,\n enumAsInteger: false,\n useProtoFieldName: false,\n prettySpaces: 0,\n};\n\nfunction makeReadOptions(\n options?: Partial<JsonReadOptions>\n): Readonly<JsonReadOptions> {\n return options ? { ...jsonReadDefaults, ...options } : jsonReadDefaults;\n}\n\nfunction makeWriteOptions(\n options?: Partial<JsonWriteStringOptions>\n): Readonly<JsonWriteStringOptions> {\n return options ? { ...jsonWriteDefaults, ...options } : jsonWriteDefaults;\n}\n\ntype JsonFormatWriteFieldFn = (\n field: FieldInfo,\n value: any,\n options: JsonWriteOptions\n) => JsonValue | undefined;\n\nexport function makeJsonFormatCommon(\n makeWriteField: (\n writeEnumFn: typeof writeEnum,\n writeScalarFn: typeof writeScalar\n ) => JsonFormatWriteFieldFn\n): JsonFormat {\n const writeField = makeWriteField(writeEnum, writeScalar);\n return {\n makeReadOptions,\n makeWriteOptions,\n readMessage<T extends Message<T>>(\n type: MessageType<T>,\n json: JsonValue,\n options: JsonReadOptions,\n message?: T\n ): T {\n if (json == null || Array.isArray(json) || typeof json != \"object\") {\n throw new Error(\n `cannot decode message ${type.typeName} from JSON: ${this.debug(\n json\n )}`\n );\n }\n message = message ?? new type();\n const oneofSeen: { [oneof: string]: string } = {};\n for (const [jsonKey, jsonValue] of Object.entries(json)) {\n const field = type.fields.findJsonName(jsonKey);\n if (!field) {\n if (!options.ignoreUnknownFields) {\n throw new Error(\n `cannot decode message ${type.typeName} from JSON: key \"${jsonKey}\" is unknown`\n );\n }\n continue;\n }\n let localName = field.localName;\n let target: { [localFieldName: string]: any } = message;\n if (field.oneof) {\n if (jsonValue === null && field.kind == \"scalar\") {\n // see conformance test Required.Proto3.JsonInput.OneofFieldNull{First,Second}\n continue;\n }\n const seen = oneofSeen[field.oneof.localName];\n if (seen) {\n throw new Error(\n `cannot decode message ${type.typeName} from JSON: multiple keys for oneof \"${field.oneof.name}\" present: \"${seen}\", \"${jsonKey}\"`\n );\n }\n oneofSeen[field.oneof.localName] = jsonKey;\n target = target[field.oneof.localName] = { case: localName };\n localName = \"value\";\n }\n if (field.repeated) {\n if (jsonValue === null) {\n continue;\n }\n if (!Array.isArray(jsonValue)) {\n throw new Error(\n `cannot decode field ${type.typeName}.${\n field.name\n } from JSON: \"${this.debug(jsonValue)}\"`\n );\n }\n const targetArray = target[localName] as unknown[];\n for (const jsonItem of jsonValue) {\n if (jsonItem === null) {\n throw new Error(\n `cannot decode field ${type.typeName}.${\n field.name\n } from JSON: \"${this.debug(jsonItem)}\"`\n );\n }\n let val;\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- \"map\" is invalid for repeated fields\n switch (field.kind) {\n case \"message\":\n val = field.T.fromJson(jsonItem, options);\n break;\n case \"enum\":\n val = readEnum(field.T, jsonItem, options.ignoreUnknownFields);\n if (val === undefined) continue;\n break;\n case \"scalar\":\n try {\n val = readScalar(field.T, jsonItem);\n } catch (e) {\n let m = `cannot decode field ${type.typeName}.${\n field.name\n } from JSON: \"${this.debug(jsonItem)}\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`;\n }\n throw new Error(m);\n }\n break;\n }\n targetArray.push(val);\n }\n } else if (field.kind == \"map\") {\n if (jsonValue === null) {\n continue;\n }\n if (Array.isArray(jsonValue) || typeof jsonValue != \"object\") {\n throw new Error(\n `cannot decode field ${type.typeName}.${\n field.name\n } from JSON: ${this.debug(jsonValue)}`\n );\n }\n const targetMap = target[localName] as { [k: string]: unknown };\n for (const [jsonMapKey, jsonMapValue] of Object.entries(jsonValue)) {\n if (jsonMapValue === null) {\n throw new Error(\n `cannot decode field ${type.typeName}.${field.name} from JSON: map value null`\n );\n }\n let val;\n switch (field.V.kind) {\n case \"message\":\n val = field.V.T.fromJson(jsonMapValue, options);\n break;\n case \"enum\":\n val = readEnum(\n field.V.T,\n jsonMapValue,\n options.ignoreUnknownFields\n );\n if (val === undefined) continue;\n break;\n case \"scalar\":\n try {\n val = readScalar(field.V.T, jsonMapValue);\n } catch (e) {\n let m = `cannot decode map value for field ${type.typeName}.${\n field.name\n } from JSON: \"${this.debug(jsonValue)}\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`;\n }\n throw new Error(m);\n }\n break;\n }\n try {\n targetMap[\n readScalar(\n field.K,\n field.K == ScalarType.BOOL\n ? jsonMapKey == \"true\"\n ? true\n : jsonMapKey == \"false\"\n ? false\n : jsonMapKey\n : jsonMapKey\n ).toString()\n ] = val;\n } catch (e) {\n let m = `cannot decode map key for field ${type.typeName}.${\n field.name\n } from JSON: \"${this.debug(jsonValue)}\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`;\n }\n throw new Error(m);\n }\n }\n } else {\n switch (field.kind) {\n case \"message\":\n const messageType = field.T;\n if (\n jsonValue === null &&\n messageType.typeName != \"google.protobuf.Value\"\n ) {\n if (field.oneof) {\n throw new Error(\n `cannot decode field ${type.typeName}.${field.name} from JSON: null is invalid for oneof field \"${jsonKey}\"`\n );\n }\n continue;\n }\n const targetMessage: Message =\n target[localName] === undefined\n ? new messageType()\n : wrapField(messageType, target[localName]);\n target[localName] = unwrapField(\n messageType,\n targetMessage.fromJson(jsonValue, options)\n );\n break;\n case \"enum\":\n const enumValue = readEnum(\n field.T,\n jsonValue,\n options.ignoreUnknownFields\n );\n if (enumValue !== undefined) {\n target[localName] = enumValue;\n }\n break;\n case \"scalar\":\n try {\n target[localName] = readScalar(field.T, jsonValue);\n } catch (e) {\n let m = `cannot decode field ${type.typeName}.${\n field.name\n } from JSON: \"${this.debug(jsonValue)}\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`;\n }\n throw new Error(m);\n }\n break;\n }\n }\n }\n return message;\n },\n writeMessage(message: Message, options: JsonWriteOptions): JsonValue {\n const type = message.getType();\n const json: JsonObject = {};\n let field: FieldInfo | undefined;\n try {\n for (const member of type.fields.byMember()) {\n let jsonValue: JsonValue | undefined;\n if (member.kind == \"oneof\") {\n const oneof = (message as AnyMessage)[member.localName];\n if (oneof.value === undefined) {\n continue;\n }\n field = member.findField(oneof.case);\n if (!field) {\n throw \"oneof case not found: \" + oneof.case;\n }\n jsonValue = writeField(field, oneof.value, options);\n } else {\n field = member;\n jsonValue = writeField(\n field,\n (message as AnyMessage)[field.localName],\n options\n );\n }\n if (jsonValue !== undefined) {\n json[options.useProtoFieldName ? field.name : field.jsonName] =\n jsonValue;\n }\n }\n } catch (e) {\n const m = field\n ? `cannot encode field ${type.typeName}.${field.name} to JSON`\n : `cannot encode message ${type.typeName} to JSON`;\n const r = e instanceof Error ? e.message : String(e);\n throw new Error(m + (r.length > 0 ? `: ${r}` : \"\"));\n }\n return json;\n },\n readScalar,\n writeScalar,\n debug: debugJsonValue,\n };\n}\n\nfunction debugJsonValue(json: JsonValue): string {\n if (json === null) {\n return \"null\";\n }\n switch (typeof json) {\n case \"object\":\n return Array.isArray(json) ? \"array\" : \"object\";\n case \"string\":\n return json.length > 100 ? \"string\" : `\"${json.split('\"').join('\\\\\"')}\"`;\n default:\n return json.toString();\n }\n}\n\n// May throw an error. If the error message is non-blank, it should be shown.\n// It is up to the caller to provide context.\nfunction readScalar(type: ScalarType, json: JsonValue): any {\n // every valid case in the switch below returns, and every fall\n // through is regarded as a failure.\n switch (type) {\n // float, double: JSON value will be a number or one of the special string values \"NaN\", \"Infinity\", and \"-Infinity\".\n // Either numbers or strings are accepted. Exponent notation is also accepted.\n case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n if (json === null) return 0.0;\n if (json === \"NaN\") return Number.NaN;\n if (json === \"Infinity\") return Number.POSITIVE_INFINITY;\n if (json === \"-Infinity\") return Number.NEGATIVE_INFINITY;\n if (json === \"\") {\n // empty string is not a number\n break;\n }\n if (typeof json == \"string\" && json.trim().length !== json.length) {\n // extra whitespace\n break;\n }\n if (typeof json != \"string\" && typeof json != \"number\") {\n break;\n }\n const float = Number(json);\n if (Number.isNaN(float)) {\n // not a number\n break;\n }\n if (!Number.isFinite(float)) {\n // infinity and -infinity are handled by string representation above, so this is an error\n break;\n }\n if (type == ScalarType.FLOAT) assertFloat32(float);\n return float;\n\n // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n case ScalarType.UINT32:\n if (json === null) return 0;\n let int32: number | undefined;\n if (typeof json == \"number\") int32 = json;\n else if (typeof json == \"string\" && json.length > 0) {\n if (json.trim().length === json.length) int32 = Number(json);\n }\n if (int32 === undefined) break;\n if (type == ScalarType.UINT32) assertUInt32(int32);\n else assertInt32(int32);\n return int32;\n\n // int64, fixed64, uint64: JSON value will be a decimal string. Either numbers or strings are accepted.\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n if (json === null) return protoInt64.zero;\n if (typeof json != \"number\" && typeof json != \"string\") break;\n return protoInt64.parse(json);\n case ScalarType.FIXED64:\n case ScalarType.UINT64:\n if (json === null) return protoInt64.zero;\n if (typeof json != \"number\" && typeof json != \"string\") break;\n return protoInt64.uParse(json);\n\n // bool:\n case ScalarType.BOOL:\n if (json === null) return false;\n if (typeof json !== \"boolean\") break;\n return json;\n\n // string:\n case ScalarType.STRING:\n if (json === null) return \"\";\n if (typeof json !== \"string\") {\n break;\n }\n // A string must always contain UTF-8 encoded or 7-bit ASCII.\n // We validate with encodeURIComponent, which appears to be the fastest widely available option.\n try {\n encodeURIComponent(json);\n } catch (e) {\n throw new Error(\"invalid UTF8\");\n }\n return json;\n\n // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings.\n // Either standard or URL-safe base64 encoding with/without paddings are accepted.\n case ScalarType.BYTES:\n if (json === null || json === \"\") return new Uint8Array(0);\n if (typeof json !== \"string\") break;\n return protoBase64.dec(json);\n }\n throw new Error();\n}\n\nfunction readEnum(\n type: EnumType,\n json: JsonValue,\n ignoreUnknownFields: boolean\n): number | undefined {\n if (json === null) {\n // proto3 requires 0 to be default value for all enums\n return 0;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (typeof json) {\n case \"number\":\n if (Number.isInteger(json)) {\n return json;\n }\n break;\n case \"string\":\n const value = type.findName(json);\n if (value || ignoreUnknownFields) {\n return value?.no;\n }\n break;\n }\n throw new Error(\n `cannot decode enum ${type.typeName} from JSON: ${debugJsonValue(json)}`\n );\n}\n\nfunction writeEnum(\n type: EnumType,\n value: number | undefined,\n emitIntrinsicDefault: boolean,\n enumAsInteger: boolean\n): JsonValue | undefined {\n if (value === undefined) {\n return value;\n }\n if (value === 0 && !emitIntrinsicDefault) {\n // proto3 requires 0 to be default value for all enums\n return undefined;\n }\n if (enumAsInteger) {\n return value;\n }\n if (type.typeName == \"google.protobuf.NullValue\") {\n return null;\n }\n const val = type.findNumber(value);\n return val?.name ?? value; // if we don't know the enum value, just return the number\n}\n\nfunction writeScalar(\n type: ScalarType,\n value: any,\n emitIntrinsicDefault: boolean\n): JsonValue | undefined {\n if (value === undefined) {\n return undefined;\n }\n switch (type) {\n // int32, fixed32, uint32: JSON value will be a decimal number. Either numbers or strings are accepted.\n case ScalarType.INT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n assert(typeof value == \"number\");\n return value != 0 || emitIntrinsicDefault ? value : undefined;\n\n // float, double: JSON value will be a number or one of the special string values \"NaN\", \"Infinity\", and \"-Infinity\".\n // Either numbers or strings are accepted. Exponent notation is also accepted.\n case ScalarType.FLOAT:\n // assertFloat32(value);\n case ScalarType.DOUBLE: // eslint-disable-line no-fallthrough\n assert(typeof value == \"number\");\n if (Number.isNaN(value)) return \"NaN\";\n if (value === Number.POSITIVE_INFINITY) return \"Infinity\";\n if (value === Number.NEGATIVE_INFINITY) return \"-Infinity\";\n return value !== 0 || emitIntrinsicDefault ? value : undefined;\n\n // string:\n case ScalarType.STRING:\n assert(typeof value == \"string\");\n return value.length > 0 || emitIntrinsicDefault ? value : undefined;\n\n // bool:\n case ScalarType.BOOL:\n assert(typeof value == \"boolean\");\n return value || emitIntrinsicDefault ? value : undefined;\n\n // JSON value will be a decimal string. Either numbers or strings are accepted.\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n assert(\n typeof value == \"bigint\" ||\n typeof value == \"string\" ||\n typeof value == \"number\"\n );\n // We use implicit conversion with `value != 0` to catch both 0n and \"0\"\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return emitIntrinsicDefault || value != 0\n ? value.toString(10)\n : undefined;\n\n // bytes: JSON value will be the data encoded as a string using standard base64 encoding with paddings.\n // Either standard or URL-safe base64 encoding with/without paddings are accepted.\n case ScalarType.BYTES:\n assert(value instanceof Uint8Array);\n return emitIntrinsicDefault || value.byteLength > 0\n ? protoBase64.enc(value)\n : undefined;\n }\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { setEnumType } from \"./enum.js\";\nimport type {\n AnyMessage,\n Message,\n PartialMessage,\n PlainMessage,\n} from \"../message.js\";\nimport type { MessageType } from \"../message-type.js\";\nimport { FieldInfo, ScalarType } from \"../field.js\";\nimport type { Util } from \"./util.js\";\nimport { scalarEquals } from \"./scalars.js\";\n\n/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-argument,no-case-declarations */\n\nexport function makeUtilCommon(): Omit<Util, \"newFieldList\" | \"initFields\"> {\n return {\n setEnumType,\n initPartial<T extends Message<T>>(\n source: PartialMessage<T> | undefined,\n target: T\n ): void {\n if (source === undefined) {\n return;\n }\n const type = target.getType();\n for (const member of type.fields.byMember()) {\n const localName = member.localName,\n t = target as AnyMessage,\n s = source as PartialMessage<AnyMessage>;\n if (s[localName] === undefined) {\n continue;\n }\n switch (member.kind) {\n case \"oneof\":\n const sk = s[localName].case;\n if (sk === undefined) {\n continue;\n }\n const sourceField = member.findField(sk);\n let val = s[localName].value;\n if (\n sourceField &&\n sourceField.kind == \"message\" &&\n !(val instanceof sourceField.T)\n ) {\n val = new sourceField.T(val);\n }\n t[localName] = { case: sk, value: val };\n break;\n case \"scalar\":\n case \"enum\":\n t[localName] = s[localName];\n break;\n case \"map\":\n switch (member.V.kind) {\n case \"scalar\":\n case \"enum\":\n Object.assign(t[localName], s[localName]);\n break;\n case \"message\":\n const messageType = member.V.T;\n for (const k of Object.keys(s[localName])) {\n let val = s[localName][k];\n if (!messageType.fieldWrapper) {\n // We only take partial input for messages that are not a wrapper type.\n // For those messages, we recursively normalize the partial input.\n val = new messageType(val);\n }\n t[localName][k] = val;\n }\n break;\n }\n break;\n case \"message\":\n const mt = member.T;\n if (member.repeated) {\n t[localName] = (s[localName] as any[]).map((val) =>\n val instanceof mt ? val : new mt(val)\n );\n } else if (s[localName] !== undefined) {\n const val = s[localName];\n if (mt.fieldWrapper) {\n t[localName] = val;\n } else {\n t[localName] = val instanceof mt ? val : new mt(val);\n }\n }\n break;\n }\n }\n },\n equals<T extends Message<T>>(\n type: MessageType<T>,\n a: T | PlainMessage<T> | undefined | null,\n b: T | PlainMessage<T> | undefined | null\n ): boolean {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n return type.fields.byMember().every((m) => {\n const va = (a as any)[m.localName];\n const vb = (b as any)[m.localName];\n if (m.repeated) {\n if (va.length !== vb.length) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- repeated fields are never \"map\"\n switch (m.kind) {\n case \"message\":\n return (va as any[]).every((a, i) => m.T.equals(a, vb[i]));\n case \"scalar\":\n return (va as any[]).every((a: any, i: number) =>\n scalarEquals(m.T, a, vb[i])\n );\n case \"enum\":\n return (va as any[]).every((a: any, i: number) =>\n scalarEquals(ScalarType.INT32, a, vb[i])\n );\n }\n throw new Error(`repeated cannot contain ${m.kind}`);\n }\n switch (m.kind) {\n case \"message\":\n return m.T.equals(va, vb);\n case \"enum\":\n return scalarEquals(ScalarType.INT32, va, vb);\n case \"scalar\":\n return scalarEquals(m.T, va, vb);\n case \"oneof\":\n if (va.case !== vb.case) {\n return false;\n }\n const k = va.case,\n s = m.findField(k);\n if (s === undefined) {\n return true;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- oneof fields are never \"map\"\n switch (s.kind) {\n case \"message\":\n return s.T.equals(va[k], vb[k]);\n case \"enum\":\n return scalarEquals(ScalarType.INT32, va, vb);\n case \"scalar\":\n return scalarEquals(s.T, va, vb);\n }\n throw new Error(`oneof cannot contain ${s.kind}`);\n case \"map\":\n const keys = Object.keys(va);\n if (keys.some((k) => vb[k] === undefined)) {\n return false;\n }\n switch (m.V.kind) {\n case \"message\":\n const messageType = m.V.T;\n return keys.every((k) => messageType.equals(va[k], vb[k]));\n case \"enum\":\n return keys.every((k) =>\n scalarEquals(ScalarType.INT32, va[k], vb[k])\n );\n case \"scalar\":\n const scalarType = m.V.T;\n return keys.every((k) =>\n scalarEquals(scalarType, va[k], vb[k])\n );\n }\n break;\n }\n });\n },\n clone<T extends Message<T>>(message: T): T {\n const type = message.getType(),\n target = new type(),\n any = target as AnyMessage;\n for (const member of type.fields.byMember()) {\n const source = (message as AnyMessage)[member.localName];\n let copy: any;\n if (member.repeated) {\n copy = (source as any[]).map((e) => cloneSingularField(member, e));\n } else if (member.kind == \"map\") {\n copy = any[member.localName];\n for (const [key, v] of Object.entries(source)) {\n copy[key] = cloneSingularField(member.V, v);\n }\n } else if (member.kind == \"oneof\") {\n const f = member.findField(source.case);\n copy = f\n ? { case: source.case, value: cloneSingularField(f, source.value) }\n : { case: undefined };\n } else {\n copy = cloneSingularField(member, source);\n }\n any[member.localName] = copy;\n }\n return target;\n },\n };\n}\n\n// clone a single field value - i.e. the element type of repeated fields, the value type of maps\nfunction cloneSingularField(\n field: FieldInfo | (FieldInfo & { kind: \"map\" })[\"V\"],\n value: any\n): any {\n if (value === undefined) {\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- unmatched \"map\" is unsupported\n switch (field.kind) {\n case \"enum\":\n return value;\n case \"scalar\":\n if (field.T === ScalarType.BYTES) {\n const c = new Uint8Array((value as Uint8Array).byteLength);\n c.set(value as Uint8Array);\n return c;\n }\n return value;\n case \"message\":\n if (field.T.fieldWrapper) {\n return field.T.fieldWrapper.unwrapField(\n field.T.fieldWrapper.wrapField(value).clone()\n );\n }\n return (value as Message).clone();\n }\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { FieldInfo, OneofInfo, PartialFieldInfo } from \"../field.js\";\nimport type { FieldList } from \"../field-list.js\";\n\nexport type FieldListSource =\n | readonly PartialFieldInfo[]\n | readonly FieldInfo[]\n | (() => readonly PartialFieldInfo[])\n | (() => readonly FieldInfo[]);\n\nexport class InternalFieldList implements FieldList {\n private readonly _fields: FieldListSource;\n private readonly _normalizer: (p: FieldListSource) => FieldInfo[];\n private all?: readonly FieldInfo[];\n private numbersAsc?: readonly FieldInfo[];\n private jsonNames?: { readonly [jsonName: string]: FieldInfo };\n private numbers?: { readonly [fieldNo: number]: FieldInfo };\n private members?: (FieldInfo | OneofInfo)[];\n\n constructor(\n fields: FieldListSource,\n normalizer: (p: FieldListSource) => FieldInfo[]\n ) {\n this._fields = fields;\n this._normalizer = normalizer;\n }\n\n findJsonName(jsonName: string): FieldInfo | undefined {\n if (!this.jsonNames) {\n const t: { [jsonName: string]: FieldInfo } = {};\n for (const f of this.list()) {\n t[f.jsonName] = t[f.name] = f;\n }\n this.jsonNames = t;\n }\n return this.jsonNames[jsonName];\n }\n\n find(fieldNo: number): FieldInfo | undefined {\n if (!this.numbers) {\n const t: { [fieldNo: number]: FieldInfo } = {};\n for (const f of this.list()) {\n t[f.no] = f;\n }\n this.numbers = t;\n }\n return this.numbers[fieldNo];\n }\n\n list(): readonly FieldInfo[] {\n if (!this.all) {\n this.all = this._normalizer(this._fields);\n }\n return this.all;\n }\n\n byNumber(): readonly FieldInfo[] {\n if (!this.numbersAsc) {\n this.numbersAsc = this.list()\n .concat()\n .sort((a, b) => a.no - b.no);\n }\n return this.numbersAsc;\n }\n\n byMember(): readonly (FieldInfo | OneofInfo)[] {\n if (!this.members) {\n this.members = [];\n const a = this.members;\n let o: OneofInfo | undefined;\n for (const f of this.list()) {\n if (f.oneof) {\n if (f.oneof !== o) {\n o = f.oneof;\n a.push(o);\n }\n } else {\n a.push(f);\n }\n }\n }\n return this.members;\n }\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/**\n * Returns the JSON name for a protobuf field, exactly like protoc does.\n */\nexport function makeJsonName(protoName: string) {\n return protoCamelCase(protoName);\n}\n\n/**\n * Returns the local name of a field, exactly like protoc-gen-es does.\n */\nexport function makeFieldName(protoName: string, inOneof: boolean) {\n const n = protoCamelCase(protoName);\n if (inOneof) {\n return n;\n }\n return rProp[n] ? n + escapeChar : n;\n}\n\n/**\n * Returns the local name of a oneof group, exactly like protoc-gen-es does.\n */\nexport function makeOneofName(protoName: string): string {\n return makeFieldName(protoName, false);\n}\n\n/**\n * Returns the local name of a rpc, exactly like protoc-gen-es does.\n */\nexport function makeMethodName(protoName: string): string {\n if (protoName.length == 0) {\n return protoName;\n }\n return protoName[0].toLowerCase() + protoName.substring(1);\n}\n\n// Converts snake_case to protoCamelCase according to the convention\n// used by protoc to convert a field name to a JSON name.\nfunction protoCamelCase(snakeCase: string): string {\n let capNext = false;\n const b = [];\n for (let i = 0; i < snakeCase.length; i++) {\n let c = snakeCase.charAt(i);\n switch (c) {\n case \"_\":\n capNext = true;\n break;\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n b.push(c);\n capNext = false;\n break;\n default:\n if (capNext) {\n capNext = false;\n c = c.toUpperCase();\n }\n b.push(c);\n break;\n }\n }\n return b.join(\"\");\n}\n\n// escapeChar must be appended to a reserved name.\n// We choose '$' because it is invalid in proto identifiers.\nconst escapeChar = \"$\";\n\n// Names that cannot be used for object properties.\n// See buf_es/protoc-gen-es/internal/protoplugin/names.go\nconst rProp: { [k: string]: boolean } = {\n // names reserved by JavaScript\n constructor: true,\n toString: true,\n toJSON: true,\n valueOf: true,\n\n // names reserved by the runtime\n getType: true,\n clone: true,\n equals: true,\n fromBinary: true,\n fromJson: true,\n fromJsonString: true,\n toBinary: true,\n toJson: true,\n toJsonString: true,\n\n // names reserved by the runtime for the future\n toObject: true,\n};\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { FieldInfo, OneofInfo } from \"../field.js\";\nimport { makeOneofName } from \"./names.js\";\nimport { assert } from \"./assert.js\";\n\nexport class InternalOneofInfo implements OneofInfo {\n readonly kind = \"oneof\";\n readonly name: string;\n readonly localName: string;\n readonly repeated = false;\n readonly packed = false;\n readonly opt = false;\n readonly default = undefined;\n readonly fields: FieldInfo[] = [];\n private _lookup?: { [localName: string]: FieldInfo | undefined };\n\n constructor(name: string) {\n this.name = name;\n this.localName = makeOneofName(name);\n }\n\n addField(field: FieldInfo) {\n assert(field.oneof === this, `field ${field.name} not one of ${this.name}`);\n this.fields.push(field);\n }\n\n findField(localName: string): FieldInfo | undefined {\n if (!this._lookup) {\n this._lookup = Object.create(null) as {\n [localName: string]: FieldInfo | undefined;\n };\n for (let i = 0; i < this.fields.length; i++) {\n this._lookup[this.fields[i].localName] = this.fields[i];\n }\n }\n return this._lookup[localName];\n }\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { makeProtoRuntime } from \"./private/proto-runtime.js\";\nimport { makeBinaryFormatProto3 } from \"./private/binary-format-proto3.js\";\nimport { makeJsonFormatProto3 } from \"./private/json-format-proto3.js\";\nimport { makeUtilCommon } from \"./private/util-common.js\";\nimport { FieldListSource, InternalFieldList } from \"./private/field-list.js\";\nimport type { FieldList } from \"./field-list.js\";\nimport type { AnyMessage, Message } from \"./message.js\";\nimport { scalarDefaultValue } from \"./private/scalars.js\";\nimport { FieldInfo, ScalarType } from \"./field.js\";\nimport { InternalOneofInfo } from \"./private/field.js\";\nimport { makeFieldName, makeJsonName } from \"./private/names.js\";\n\n/**\n * Provides functionality for messages defined with the proto3 syntax.\n */\nexport const proto3 = makeProtoRuntime(\n \"proto3\",\n makeJsonFormatProto3(),\n makeBinaryFormatProto3(),\n {\n ...makeUtilCommon(),\n newFieldList(fields: FieldListSource): FieldList {\n return new InternalFieldList(fields, normalizeFieldInfosProto3);\n },\n initFields(target: Message): void {\n for (const member of target.getType().fields.byMember()) {\n if (member.opt) {\n continue;\n }\n const name = member.localName,\n t = target as AnyMessage;\n if (member.repeated) {\n t[name] = [];\n continue;\n }\n switch (member.kind) {\n case \"oneof\":\n t[name] = { case: undefined };\n break;\n case \"enum\":\n t[name] = 0;\n break;\n case \"map\":\n t[name] = {};\n break;\n case \"scalar\":\n t[name] = scalarDefaultValue(member.T); // eslint-disable-line @typescript-eslint/no-unsafe-assignment\n break;\n case \"message\":\n // message fields are always optional in proto3\n break;\n }\n }\n },\n }\n);\n\n/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument */\n\nfunction normalizeFieldInfosProto3(fieldInfos: FieldListSource): FieldInfo[] {\n const r: FieldInfo[] = [];\n let o: InternalOneofInfo | undefined;\n for (const field of typeof fieldInfos == \"function\"\n ? fieldInfos()\n : fieldInfos) {\n const f = field as any;\n f.localName = makeFieldName(field.name, field.oneof !== undefined);\n f.jsonName = field.jsonName ?? makeJsonName(field.name);\n f.repeated = field.repeated ?? false;\n // From the proto3 language guide:\n // > In proto3, repeated fields of scalar numeric types are packed by default.\n // This information is incomplete - according to the conformance tests, BOOL\n // and ENUM are packed by default as well. This means only STRING and BYTES\n // are not packed by default, which makes sense because they are length-delimited.\n f.packed =\n field.packed ??\n (field.kind == \"enum\" ||\n (field.kind == \"scalar\" &&\n field.T != ScalarType.BYTES &&\n field.T != ScalarType.STRING));\n // We do not surface options at this time\n // f.options = field.options ?? emptyReadonlyObject;\n if (field.oneof !== undefined) {\n const ooname =\n typeof field.oneof == \"string\" ? field.oneof : field.oneof.name;\n if (!o || o.name != ooname) {\n o = new InternalOneofInfo(ooname);\n }\n f.oneof = o;\n o.addField(f);\n }\n r.push(f);\n }\n return r;\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {\n JsonFormat,\n JsonObject,\n JsonValue,\n JsonWriteOptions,\n} from \"../json-format.js\";\nimport { wrapField } from \"./field-wrapper.js\";\nimport type { FieldInfo } from \"../field.js\";\nimport { assert } from \"./assert.js\";\nimport { makeJsonFormatCommon } from \"./json-format-common.js\";\nimport type { Message } from \"../message.js\";\n\n/* eslint-disable no-case-declarations, @typescript-eslint/restrict-plus-operands,@typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument */\n\nexport function makeJsonFormatProto3(): JsonFormat {\n return makeJsonFormatCommon((writeEnum, writeScalar) => {\n return function writeField(\n field: FieldInfo,\n value: any,\n options: JsonWriteOptions\n ): JsonValue | undefined {\n if (field.kind == \"map\") {\n const jsonObj: JsonObject = {};\n switch (field.V.kind) {\n case \"scalar\":\n for (const [entryKey, entryValue] of Object.entries(value)) {\n const val = writeScalar(field.V.T, entryValue, true);\n assert(val !== undefined);\n jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key\n }\n break;\n case \"message\":\n for (const [entryKey, entryValue] of Object.entries(value)) {\n // JSON standard allows only (double quoted) string as property key\n jsonObj[entryKey.toString()] = (entryValue as Message).toJson(\n options\n );\n }\n break;\n case \"enum\":\n const enumType = field.V.T;\n for (const [entryKey, entryValue] of Object.entries(value)) {\n assert(entryValue === undefined || typeof entryValue == \"number\");\n const val = writeEnum(\n enumType,\n entryValue as number,\n true,\n options.enumAsInteger\n );\n assert(val !== undefined);\n jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key\n }\n break;\n }\n return options.emitDefaultValues || Object.keys(jsonObj).length > 0\n ? jsonObj\n : undefined;\n } else if (field.repeated) {\n const jsonArr: JsonValue[] = [];\n switch (field.kind) {\n case \"scalar\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(writeScalar(field.T, value[i], true) as JsonValue);\n }\n break;\n case \"enum\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(\n writeEnum(\n field.T,\n value[i],\n true,\n options.enumAsInteger\n ) as JsonValue\n );\n }\n break;\n case \"message\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(wrapField(field.T, value[i]).toJson(options));\n }\n break;\n }\n return options.emitDefaultValues || jsonArr.length > 0\n ? jsonArr\n : undefined;\n } else {\n switch (field.kind) {\n case \"scalar\":\n return writeScalar(\n field.T,\n value,\n !!field.oneof || field.opt || options.emitDefaultValues\n );\n case \"enum\":\n return writeEnum(\n field.T,\n value,\n !!field.oneof || field.opt || options.emitDefaultValues,\n options.enumAsInteger\n );\n case \"message\":\n return value !== undefined\n ? wrapField(field.T, value).toJson(options)\n : undefined;\n }\n }\n };\n });\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { AnyMessage, Message } from \"../message.js\";\nimport type { BinaryFormat, BinaryWriteOptions } from \"../binary-format.js\";\nimport type { IBinaryWriter } from \"../binary-encoding.js\";\nimport { ScalarType } from \"../field.js\";\nimport {\n makeBinaryFormatCommon,\n writeMapEntry,\n writeMessageField,\n writePacked,\n writeScalar,\n} from \"./binary-format-common.js\";\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unnecessary-condition, @typescript-eslint/strict-boolean-expressions, prefer-const, no-case-declarations */\n\nexport function makeBinaryFormatProto3(): BinaryFormat {\n return {\n ...makeBinaryFormatCommon(),\n writeMessage(\n message: Message,\n writer: IBinaryWriter,\n options: BinaryWriteOptions\n ): IBinaryWriter {\n const type = message.getType();\n for (const field of type.fields.byNumber()) {\n let value, // this will be our field value, whether it is member of a oneof or regular field\n repeated = field.repeated,\n localName = field.localName;\n\n if (field.oneof) {\n const oneof = (message as AnyMessage)[field.oneof.localName];\n if (oneof.case !== localName) {\n continue; // field is not selected, skip\n }\n value = oneof.value;\n } else {\n value = (message as AnyMessage)[localName];\n }\n\n switch (field.kind) {\n case \"scalar\":\n case \"enum\":\n let scalarType = field.kind == \"enum\" ? ScalarType.INT32 : field.T;\n if (repeated) {\n if (field.packed) {\n writePacked(writer, scalarType, field.no, value);\n } else {\n for (const item of value) {\n writeScalar(writer, scalarType, field.no, item, true);\n }\n }\n } else {\n if (value !== undefined) {\n writeScalar(\n writer,\n scalarType,\n field.no,\n value,\n !!field.oneof || field.opt\n );\n }\n }\n break;\n case \"message\":\n if (repeated) {\n for (const item of value) {\n writeMessageField(writer, options, field.T, field.no, item);\n }\n } else {\n writeMessageField(writer, options, field.T, field.no, value);\n }\n break;\n case \"map\":\n for (const [key, val] of Object.entries(value)) {\n writeMapEntry(writer, options, field, key, val);\n }\n break;\n }\n }\n if (options.writeUnknownFields) {\n this.writeUnknownFields(message, writer);\n }\n return writer;\n },\n };\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { makeProtoRuntime } from \"./private/proto-runtime.js\";\nimport { makeBinaryFormatProto2 } from \"./private/binary-format-proto2.js\";\nimport { makeUtilCommon } from \"./private/util-common.js\";\nimport { FieldListSource, InternalFieldList } from \"./private/field-list.js\";\nimport type { FieldList } from \"./field-list.js\";\nimport type { AnyMessage, Message } from \"./message.js\";\nimport type { FieldInfo } from \"./field.js\";\nimport { InternalOneofInfo } from \"./private/field.js\";\nimport { makeFieldName, makeJsonName } from \"./private/names.js\";\nimport { makeJsonFormatProto2 } from \"./private/json-format-proto2.js\";\n\n/**\n * Provides functionality for messages defined with the proto2 syntax.\n */\nexport const proto2 = makeProtoRuntime(\n \"proto2\",\n makeJsonFormatProto2(),\n makeBinaryFormatProto2(),\n {\n ...makeUtilCommon(),\n newFieldList(fields: FieldListSource): FieldList {\n return new InternalFieldList(fields, normalizeFieldInfosProto2);\n },\n initFields(target: Message): void {\n for (const member of target.getType().fields.byMember()) {\n const name = member.localName,\n t = target as AnyMessage;\n if (member.repeated) {\n t[name] = [];\n continue;\n }\n switch (member.kind) {\n case \"oneof\":\n t[name] = { case: undefined };\n break;\n case \"map\":\n t[name] = {};\n break;\n case \"scalar\":\n case \"enum\":\n case \"message\":\n // In contrast to proto3, enum and scalar fields have no intrinsic default value,\n // only an optional explicit default value.\n // Unlike proto3 intrinsic default values, proto2 explicit default values are not\n // set on construction, because they are not omitted on the wire. If we did set\n // default values on construction, a deserialize-serialize round-trip would add\n // fields to a message.\n break;\n }\n }\n },\n }\n);\n\n/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument */\n\nfunction normalizeFieldInfosProto2(fieldInfos: FieldListSource): FieldInfo[] {\n const r: FieldInfo[] = [];\n let o: InternalOneofInfo | undefined;\n for (const field of typeof fieldInfos == \"function\"\n ? fieldInfos()\n : fieldInfos) {\n const f = field as any;\n f.localName = makeFieldName(field.name, field.oneof !== undefined);\n f.jsonName = field.jsonName ?? makeJsonName(field.name);\n f.repeated = field.repeated ?? false;\n // In contrast to proto3, repeated fields are unpacked except when explicitly specified.\n f.packed = field.packed ?? false;\n // We do not surface options at this time\n // f.options = field.options ?? emptyReadonlyObject;\n if (field.oneof !== undefined) {\n const ooname =\n typeof field.oneof == \"string\" ? field.oneof : field.oneof.name;\n if (!o || o.name != ooname) {\n o = new InternalOneofInfo(ooname);\n }\n f.oneof = o;\n o.addField(f);\n }\n r.push(f);\n }\n return r;\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {\n JsonFormat,\n JsonObject,\n JsonValue,\n JsonWriteOptions,\n} from \"../json-format.js\";\nimport { wrapField } from \"./field-wrapper.js\";\nimport type { FieldInfo } from \"../field.js\";\nimport { assert } from \"./assert.js\";\nimport { makeJsonFormatCommon } from \"./json-format-common.js\";\nimport type { Message } from \"../message.js\";\n\n/* eslint-disable no-case-declarations, @typescript-eslint/restrict-plus-operands,@typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument */\n\nexport function makeJsonFormatProto2(): JsonFormat {\n return makeJsonFormatCommon((writeEnum, writeScalar) => {\n return function writeField(\n field: FieldInfo,\n value: any,\n options: JsonWriteOptions\n ): JsonValue | undefined {\n if (field.kind == \"map\") {\n const jsonObj: JsonObject = {};\n switch (field.V.kind) {\n case \"scalar\":\n for (const [entryKey, entryValue] of Object.entries(value)) {\n const val = writeScalar(field.V.T, entryValue, true);\n assert(val !== undefined);\n jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key\n }\n break;\n case \"message\":\n for (const [entryKey, entryValue] of Object.entries(value)) {\n // JSON standard allows only (double quoted) string as property key\n jsonObj[entryKey.toString()] = (entryValue as Message).toJson(\n options\n );\n }\n break;\n case \"enum\":\n const enumType = field.V.T;\n for (const [entryKey, entryValue] of Object.entries(value)) {\n assert(entryValue === undefined || typeof entryValue == \"number\");\n const val = writeEnum(\n enumType,\n entryValue as number,\n true,\n options.enumAsInteger\n );\n assert(val !== undefined);\n jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key\n }\n break;\n }\n return options.emitDefaultValues || Object.keys(jsonObj).length > 0\n ? jsonObj\n : undefined;\n } else if (field.repeated) {\n const jsonArr: JsonValue[] = [];\n switch (field.kind) {\n case \"scalar\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(writeScalar(field.T, value[i], true) as JsonValue);\n }\n break;\n case \"enum\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(\n writeEnum(\n field.T,\n value[i],\n true,\n options.enumAsInteger\n ) as JsonValue\n );\n }\n break;\n case \"message\":\n for (let i = 0; i < value.length; i++) {\n jsonArr.push(value[i].toJson(options));\n }\n break;\n }\n return options.emitDefaultValues || jsonArr.length > 0\n ? jsonArr\n : undefined;\n } else {\n // In contrast to proto3, we raise an error if a non-optional (proto2 required)\n // field is missing a value.\n if (value === undefined) {\n if (!field.oneof && !field.opt) {\n throw `required field not set`;\n }\n return undefined;\n }\n switch (field.kind) {\n case \"scalar\":\n // In contrast to proto3, we do not skip intrinsic default values.\n // Explicit default values are not special cased either.\n return writeScalar(field.T, value, true);\n case \"enum\":\n // In contrast to proto3, we do not skip intrinsic default values.\n // Explicit default values are not special cased either.\n return writeEnum(field.T, value, true, options.enumAsInteger);\n case \"message\":\n return wrapField(field.T, value).toJson(options);\n }\n }\n };\n });\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { AnyMessage, Message } from \"../message.js\";\nimport type { BinaryFormat, BinaryWriteOptions } from \"../binary-format.js\";\nimport type { IBinaryWriter } from \"../binary-encoding.js\";\nimport { FieldInfo, ScalarType } from \"../field.js\";\nimport {\n makeBinaryFormatCommon,\n writeMapEntry,\n writeMessageField,\n writePacked,\n writeScalar,\n} from \"./binary-format-common.js\";\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unnecessary-condition, @typescript-eslint/strict-boolean-expressions, no-case-declarations, prefer-const */\n\nexport function makeBinaryFormatProto2(): BinaryFormat {\n return {\n ...makeBinaryFormatCommon(),\n writeMessage(\n message: Message,\n writer: IBinaryWriter,\n options: BinaryWriteOptions\n ): IBinaryWriter {\n const type = message.getType();\n let field: FieldInfo | undefined;\n try {\n for (field of type.fields.byNumber()) {\n let value, // this will be our field value, whether it is member of a oneof or not\n repeated = field.repeated,\n localName = field.localName;\n if (field.oneof) {\n const oneof = (message as AnyMessage)[field.oneof.localName];\n if (oneof.case !== localName) {\n continue; // field is not selected, skip\n }\n value = oneof.value;\n } else {\n value = (message as AnyMessage)[localName];\n // In contrast to proto3, we raise an error if a non-optional (proto2 required)\n // field is missing a value.\n if (value === undefined && !field.oneof && !field.opt) {\n throw new Error(\n `cannot encode field ${type.typeName}.${field.name} to JSON: required field not set`\n );\n }\n }\n switch (field.kind) {\n case \"scalar\":\n case \"enum\":\n let scalarType =\n field.kind == \"enum\" ? ScalarType.INT32 : field.T;\n if (repeated) {\n if (field.packed) {\n writePacked(writer, scalarType, field.no, value);\n } else {\n for (const item of value) {\n writeScalar(writer, scalarType, field.no, item, true);\n }\n }\n } else {\n if (value !== undefined) {\n // In contrast to proto3, we do not skip intrinsic default values.\n // Explicit default values are not special cased either.\n writeScalar(writer, scalarType, field.no, value, true);\n }\n }\n break;\n case \"message\":\n if (repeated) {\n for (const item of value) {\n writeMessageField(writer, options, field.T, field.no, item);\n }\n } else {\n writeMessageField(writer, options, field.T, field.no, value);\n }\n break;\n case \"map\":\n for (const [key, val] of Object.entries(value)) {\n writeMapEntry(writer, options, field, key, val);\n }\n break;\n }\n }\n } catch (e) {\n let m = field\n ? `cannot encode field ${type.typeName}.${field?.name} to binary`\n : `cannot encode message ${type.typeName} to binary`;\n let r = e instanceof Error ? e.message : String(e);\n throw new Error(m + (r.length > 0 ? `: ${r}` : \"\"));\n }\n if (options.writeUnknownFields) {\n this.writeUnknownFields(message, writer);\n }\n return writer;\n },\n };\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { AnyMessage, Message } from \"./message.js\";\nimport type { MessageType } from \"./message-type.js\";\n\n/**\n * ServiceType represents a protobuf services. It provides metadata for\n * reflection-based operations.\n */\nexport interface ServiceType {\n /**\n * The fully qualified name of the service.\n */\n readonly typeName: string;\n\n // We do not surface options at this time\n // readonly options: OptionsMap;\n\n /**\n * A map of local name (safe to use in ECMAScript) to method.\n */\n readonly methods: {\n [localName: string]: MethodInfo;\n };\n}\n\n/**\n * MethodInfo represents a method of a protobuf service, a remote procedure\n * call. All methods provide the following properties:\n *\n * - \"name\": The original name of the protobuf rpc.\n * - \"localName\": A variation of the name that follows the lowerCamelCase\n * naming convention in ECMAScript.\n * - \"I\": The input message type.\n * - \"O\": The output message type.\n * - \"kind\": The method type.\n * - \"idempotency\": User-provided indication whether the method will cause\n * the same effect every time it is called.\n */\nexport type MethodInfo<\n I extends Message<I> = AnyMessage,\n O extends Message<O> = AnyMessage\n> =\n | MethodInfoUnary<I, O>\n | MethodInfoServerStreaming<I, O>\n | MethodInfoClientStreaming<I, O>\n | MethodInfoBiDiStreaming<I, O>;\n\n/**\n * A unary method: rpc (Input) returns (Output)\n */\nexport interface MethodInfoUnary<I extends Message<I>, O extends Message<O>>\n extends miShared<I, O> {\n readonly kind: MethodKind.Unary;\n}\n\n/**\n * A server streaming method: rpc (Input) returns (stream Output)\n */\nexport interface MethodInfoServerStreaming<\n I extends Message<I>,\n O extends Message<O>\n> extends miShared<I, O> {\n readonly kind: MethodKind.ServerStreaming;\n}\n\n/**\n * A client streaming method: rpc (stream Input) returns (Output)\n */\nexport interface MethodInfoClientStreaming<\n I extends Message<I>,\n O extends Message<O>\n> extends miShared<I, O> {\n readonly kind: MethodKind.ClientStreaming;\n}\n\n/**\n * A method that streams bi-directionally: rpc (stream Input) returns (stream Output)\n */\nexport interface MethodInfoBiDiStreaming<\n I extends Message<I>,\n O extends Message<O>\n> extends miShared<I, O> {\n readonly kind: MethodKind.BiDiStreaming;\n}\n\ninterface miShared<\n I extends Message<I> = AnyMessage,\n O extends Message<O> = AnyMessage\n> {\n readonly name: string;\n readonly I: MessageType<I>;\n readonly O: MessageType<O>;\n readonly idempotency?: MethodIdempotency;\n // We do not surface options at this time\n // options: OptionsMap;\n}\n\n/**\n * MethodKind represents the four method types that can be declared in\n * protobuf with the `stream` keyword:\n *\n * 1. Unary: rpc (Input) returns (Output)\n * 2. ServerStreaming: rpc (Input) returns (stream Output)\n * 3. ClientStreaming: rpc (stream Input) returns (Output)\n * 4. BiDiStreaming: rpc (stream Input) returns (stream Output)\n */\nexport enum MethodKind {\n Unary,\n ServerStreaming,\n ClientStreaming,\n BiDiStreaming,\n}\n\n/**\n * Is this method side-effect-free (or safe in HTTP parlance), or just\n * idempotent, or neither? HTTP based RPC implementation may choose GET verb\n * for safe methods, and PUT verb for idempotent methods instead of the\n * default POST.\n *\n * This enum matches the protobuf enum google.protobuf.MethodOptions.IdempotencyLevel,\n * defined in the well-known type google/protobuf/descriptor.proto, but\n * drops UNKNOWN.\n */\nexport enum MethodIdempotency {\n /**\n * Idempotent, no side effects.\n */\n NoSideEffects = 1,\n\n /**\n * Idempotent, but may have side effects.\n */\n Idempotent = 2,\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Author: kenton@google.com (Kenton Varda)\n// Based on original Protocol Buffers design by\n// Sanjay Ghemawat, Jeff Dean, and others.\n//\n// The messages in this file describe the definitions found in .proto files.\n// A valid .proto file can be translated directly to a FileDescriptorProto\n// without any other information (e.g. without reading its imports).\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/descriptor.proto (package google.protobuf, syntax proto2)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto2} from \"../../proto2.js\";\n\n/**\n * The protocol compiler can output a FileDescriptorSet containing the .proto\n * files it parses.\n *\n * @generated from message google.protobuf.FileDescriptorSet\n */\nexport class FileDescriptorSet extends Message<FileDescriptorSet> {\n /**\n * @generated from field: repeated google.protobuf.FileDescriptorProto file = 1;\n */\n file: FileDescriptorProto[] = [];\n\n constructor(data?: PartialMessage<FileDescriptorSet>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.FileDescriptorSet\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"file\", kind: \"message\", T: FileDescriptorProto, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FileDescriptorSet {\n return new FileDescriptorSet().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FileDescriptorSet {\n return new FileDescriptorSet().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FileDescriptorSet {\n return new FileDescriptorSet().fromJsonString(jsonString, options);\n }\n\n static equals(a: FileDescriptorSet | PlainMessage<FileDescriptorSet> | undefined, b: FileDescriptorSet | PlainMessage<FileDescriptorSet> | undefined): boolean {\n return proto2.util.equals(FileDescriptorSet, a, b);\n }\n}\n\n/**\n * Describes a complete .proto file.\n *\n * @generated from message google.protobuf.FileDescriptorProto\n */\nexport class FileDescriptorProto extends Message<FileDescriptorProto> {\n /**\n * file name, relative to root of source tree\n *\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * e.g. \"foo\", \"foo.bar\", etc.\n *\n * @generated from field: optional string package = 2;\n */\n package?: string;\n\n /**\n * Names of files imported by this file.\n *\n * @generated from field: repeated string dependency = 3;\n */\n dependency: string[] = [];\n\n /**\n * Indexes of the public imported files in the dependency list above.\n *\n * @generated from field: repeated int32 public_dependency = 10;\n */\n publicDependency: number[] = [];\n\n /**\n * Indexes of the weak imported files in the dependency list.\n * For Google-internal migration only. Do not use.\n *\n * @generated from field: repeated int32 weak_dependency = 11;\n */\n weakDependency: number[] = [];\n\n /**\n * All top-level definitions in this file.\n *\n * @generated from field: repeated google.protobuf.DescriptorProto message_type = 4;\n */\n messageType: DescriptorProto[] = [];\n\n /**\n * @generated from field: repeated google.protobuf.EnumDescriptorProto enum_type = 5;\n */\n enumType: EnumDescriptorProto[] = [];\n\n /**\n * @generated from field: repeated google.protobuf.ServiceDescriptorProto service = 6;\n */\n service: ServiceDescriptorProto[] = [];\n\n /**\n * @generated from field: repeated google.protobuf.FieldDescriptorProto extension = 7;\n */\n extension: FieldDescriptorProto[] = [];\n\n /**\n * @generated from field: optional google.protobuf.FileOptions options = 8;\n */\n options?: FileOptions;\n\n /**\n * This field contains optional information about the original source code.\n * You may safely remove this entire field without harming runtime\n * functionality of the descriptors -- the information is needed only by\n * development tools.\n *\n * @generated from field: optional google.protobuf.SourceCodeInfo source_code_info = 9;\n */\n sourceCodeInfo?: SourceCodeInfo;\n\n /**\n * The syntax of the proto file.\n * The supported values are \"proto2\" and \"proto3\".\n *\n * @generated from field: optional string syntax = 12;\n */\n syntax?: string;\n\n constructor(data?: PartialMessage<FileDescriptorProto>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.FileDescriptorProto\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"package\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"dependency\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 10, name: \"public_dependency\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, repeated: true },\n { no: 11, name: \"weak_dependency\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, repeated: true },\n { no: 4, name: \"message_type\", kind: \"message\", T: DescriptorProto, repeated: true },\n { no: 5, name: \"enum_type\", kind: \"message\", T: EnumDescriptorProto, repeated: true },\n { no: 6, name: \"service\", kind: \"message\", T: ServiceDescriptorProto, repeated: true },\n { no: 7, name: \"extension\", kind: \"message\", T: FieldDescriptorProto, repeated: true },\n { no: 8, name: \"options\", kind: \"message\", T: FileOptions, opt: true },\n { no: 9, name: \"source_code_info\", kind: \"message\", T: SourceCodeInfo, opt: true },\n { no: 12, name: \"syntax\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FileDescriptorProto {\n return new FileDescriptorProto().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FileDescriptorProto {\n return new FileDescriptorProto().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FileDescriptorProto {\n return new FileDescriptorProto().fromJsonString(jsonString, options);\n }\n\n static equals(a: FileDescriptorProto | PlainMessage<FileDescriptorProto> | undefined, b: FileDescriptorProto | PlainMessage<FileDescriptorProto> | undefined): boolean {\n return proto2.util.equals(FileDescriptorProto, a, b);\n }\n}\n\n/**\n * Describes a message type.\n *\n * @generated from message google.protobuf.DescriptorProto\n */\nexport class DescriptorProto extends Message<DescriptorProto> {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: repeated google.protobuf.FieldDescriptorProto field = 2;\n */\n field: FieldDescriptorProto[] = [];\n\n /**\n * @generated from field: repeated google.protobuf.FieldDescriptorProto extension = 6;\n */\n extension: FieldDescriptorProto[] = [];\n\n /**\n * @generated from field: repeated google.protobuf.DescriptorProto nested_type = 3;\n */\n nestedType: DescriptorProto[] = [];\n\n /**\n * @generated from field: repeated google.protobuf.EnumDescriptorProto enum_type = 4;\n */\n enumType: EnumDescriptorProto[] = [];\n\n /**\n * @generated from field: repeated google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;\n */\n extensionRange: DescriptorProto_ExtensionRange[] = [];\n\n /**\n * @generated from field: repeated google.protobuf.OneofDescriptorProto oneof_decl = 8;\n */\n oneofDecl: OneofDescriptorProto[] = [];\n\n /**\n * @generated from field: optional google.protobuf.MessageOptions options = 7;\n */\n options?: MessageOptions;\n\n /**\n * @generated from field: repeated google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;\n */\n reservedRange: DescriptorProto_ReservedRange[] = [];\n\n /**\n * Reserved field names, which may not be used by fields in the same message.\n * A given name may only be reserved once.\n *\n * @generated from field: repeated string reserved_name = 10;\n */\n reservedName: string[] = [];\n\n constructor(data?: PartialMessage<DescriptorProto>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.DescriptorProto\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"field\", kind: \"message\", T: FieldDescriptorProto, repeated: true },\n { no: 6, name: \"extension\", kind: \"message\", T: FieldDescriptorProto, repeated: true },\n { no: 3, name: \"nested_type\", kind: \"message\", T: DescriptorProto, repeated: true },\n { no: 4, name: \"enum_type\", kind: \"message\", T: EnumDescriptorProto, repeated: true },\n { no: 5, name: \"extension_range\", kind: \"message\", T: DescriptorProto_ExtensionRange, repeated: true },\n { no: 8, name: \"oneof_decl\", kind: \"message\", T: OneofDescriptorProto, repeated: true },\n { no: 7, name: \"options\", kind: \"message\", T: MessageOptions, opt: true },\n { no: 9, name: \"reserved_range\", kind: \"message\", T: DescriptorProto_ReservedRange, repeated: true },\n { no: 10, name: \"reserved_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DescriptorProto {\n return new DescriptorProto().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DescriptorProto {\n return new DescriptorProto().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DescriptorProto {\n return new DescriptorProto().fromJsonString(jsonString, options);\n }\n\n static equals(a: DescriptorProto | PlainMessage<DescriptorProto> | undefined, b: DescriptorProto | PlainMessage<DescriptorProto> | undefined): boolean {\n return proto2.util.equals(DescriptorProto, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.DescriptorProto.ExtensionRange\n */\nexport class DescriptorProto_ExtensionRange extends Message<DescriptorProto_ExtensionRange> {\n /**\n * Inclusive.\n *\n * @generated from field: optional int32 start = 1;\n */\n start?: number;\n\n /**\n * Exclusive.\n *\n * @generated from field: optional int32 end = 2;\n */\n end?: number;\n\n /**\n * @generated from field: optional google.protobuf.ExtensionRangeOptions options = 3;\n */\n options?: ExtensionRangeOptions;\n\n constructor(data?: PartialMessage<DescriptorProto_ExtensionRange>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.DescriptorProto.ExtensionRange\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"start\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 2, name: \"end\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 3, name: \"options\", kind: \"message\", T: ExtensionRangeOptions, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DescriptorProto_ExtensionRange {\n return new DescriptorProto_ExtensionRange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DescriptorProto_ExtensionRange {\n return new DescriptorProto_ExtensionRange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DescriptorProto_ExtensionRange {\n return new DescriptorProto_ExtensionRange().fromJsonString(jsonString, options);\n }\n\n static equals(a: DescriptorProto_ExtensionRange | PlainMessage<DescriptorProto_ExtensionRange> | undefined, b: DescriptorProto_ExtensionRange | PlainMessage<DescriptorProto_ExtensionRange> | undefined): boolean {\n return proto2.util.equals(DescriptorProto_ExtensionRange, a, b);\n }\n}\n\n/**\n * Range of reserved tag numbers. Reserved tag numbers may not be used by\n * fields or extension ranges in the same message. Reserved ranges may\n * not overlap.\n *\n * @generated from message google.protobuf.DescriptorProto.ReservedRange\n */\nexport class DescriptorProto_ReservedRange extends Message<DescriptorProto_ReservedRange> {\n /**\n * Inclusive.\n *\n * @generated from field: optional int32 start = 1;\n */\n start?: number;\n\n /**\n * Exclusive.\n *\n * @generated from field: optional int32 end = 2;\n */\n end?: number;\n\n constructor(data?: PartialMessage<DescriptorProto_ReservedRange>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.DescriptorProto.ReservedRange\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"start\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 2, name: \"end\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DescriptorProto_ReservedRange {\n return new DescriptorProto_ReservedRange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DescriptorProto_ReservedRange {\n return new DescriptorProto_ReservedRange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DescriptorProto_ReservedRange {\n return new DescriptorProto_ReservedRange().fromJsonString(jsonString, options);\n }\n\n static equals(a: DescriptorProto_ReservedRange | PlainMessage<DescriptorProto_ReservedRange> | undefined, b: DescriptorProto_ReservedRange | PlainMessage<DescriptorProto_ReservedRange> | undefined): boolean {\n return proto2.util.equals(DescriptorProto_ReservedRange, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.ExtensionRangeOptions\n */\nexport class ExtensionRangeOptions extends Message<ExtensionRangeOptions> {\n /**\n * The parser stores options it doesn't recognize here. See above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<ExtensionRangeOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.ExtensionRangeOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ExtensionRangeOptions {\n return new ExtensionRangeOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ExtensionRangeOptions {\n return new ExtensionRangeOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ExtensionRangeOptions {\n return new ExtensionRangeOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: ExtensionRangeOptions | PlainMessage<ExtensionRangeOptions> | undefined, b: ExtensionRangeOptions | PlainMessage<ExtensionRangeOptions> | undefined): boolean {\n return proto2.util.equals(ExtensionRangeOptions, a, b);\n }\n}\n\n/**\n * Describes a field within a message.\n *\n * @generated from message google.protobuf.FieldDescriptorProto\n */\nexport class FieldDescriptorProto extends Message<FieldDescriptorProto> {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: optional int32 number = 3;\n */\n number?: number;\n\n /**\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Label label = 4;\n */\n label?: FieldDescriptorProto_Label;\n\n /**\n * If type_name is set, this need not be set. If both this and type_name\n * are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type type = 5;\n */\n type?: FieldDescriptorProto_Type;\n\n /**\n * For message and enum types, this is the name of the type. If the name\n * starts with a '.', it is fully-qualified. Otherwise, C++-like scoping\n * rules are used to find the type (i.e. first the nested types within this\n * message are searched, then within the parent, on up to the root\n * namespace).\n *\n * @generated from field: optional string type_name = 6;\n */\n typeName?: string;\n\n /**\n * For extensions, this is the name of the type being extended. It is\n * resolved in the same manner as type_name.\n *\n * @generated from field: optional string extendee = 2;\n */\n extendee?: string;\n\n /**\n * For numeric types, contains the original text representation of the value.\n * For booleans, \"true\" or \"false\".\n * For strings, contains the default text contents (not escaped in any way).\n * For bytes, contains the C escaped value. All bytes >= 128 are escaped.\n *\n * @generated from field: optional string default_value = 7;\n */\n defaultValue?: string;\n\n /**\n * If set, gives the index of a oneof in the containing type's oneof_decl\n * list. This field is a member of that oneof.\n *\n * @generated from field: optional int32 oneof_index = 9;\n */\n oneofIndex?: number;\n\n /**\n * JSON name of this field. The value is set by protocol compiler. If the\n * user has set a \"json_name\" option on this field, that option's value\n * will be used. Otherwise, it's deduced from the field's name by converting\n * it to camelCase.\n *\n * @generated from field: optional string json_name = 10;\n */\n jsonName?: string;\n\n /**\n * @generated from field: optional google.protobuf.FieldOptions options = 8;\n */\n options?: FieldOptions;\n\n /**\n * If true, this is a proto3 \"optional\". When a proto3 field is optional, it\n * tracks presence regardless of field type.\n *\n * When proto3_optional is true, this field must be belong to a oneof to\n * signal to old proto3 clients that presence is tracked for this field. This\n * oneof is known as a \"synthetic\" oneof, and this field must be its sole\n * member (each proto3 optional field gets its own synthetic oneof). Synthetic\n * oneofs exist in the descriptor only, and do not generate any API. Synthetic\n * oneofs must be ordered after all \"real\" oneofs.\n *\n * For message fields, proto3_optional doesn't create any semantic change,\n * since non-repeated message fields always track presence. However it still\n * indicates the semantic detail of whether the user wrote \"optional\" or not.\n * This can be useful for round-tripping the .proto file. For consistency we\n * give message fields a synthetic oneof also, even though it is not required\n * to track presence. This is especially important because the parser can't\n * tell if a field is a message or an enum, so it must always create a\n * synthetic oneof.\n *\n * Proto2 optional fields do not set this flag, because they already indicate\n * optional with `LABEL_OPTIONAL`.\n *\n * @generated from field: optional bool proto3_optional = 17;\n */\n proto3Optional?: boolean;\n\n constructor(data?: PartialMessage<FieldDescriptorProto>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.FieldDescriptorProto\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"number\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 4, name: \"label\", kind: \"enum\", T: proto2.getEnumType(FieldDescriptorProto_Label), opt: true },\n { no: 5, name: \"type\", kind: \"enum\", T: proto2.getEnumType(FieldDescriptorProto_Type), opt: true },\n { no: 6, name: \"type_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"extendee\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 7, name: \"default_value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 9, name: \"oneof_index\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 10, name: \"json_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 8, name: \"options\", kind: \"message\", T: FieldOptions, opt: true },\n { no: 17, name: \"proto3_optional\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FieldDescriptorProto {\n return new FieldDescriptorProto().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FieldDescriptorProto {\n return new FieldDescriptorProto().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FieldDescriptorProto {\n return new FieldDescriptorProto().fromJsonString(jsonString, options);\n }\n\n static equals(a: FieldDescriptorProto | PlainMessage<FieldDescriptorProto> | undefined, b: FieldDescriptorProto | PlainMessage<FieldDescriptorProto> | undefined): boolean {\n return proto2.util.equals(FieldDescriptorProto, a, b);\n }\n}\n\n/**\n * @generated from enum google.protobuf.FieldDescriptorProto.Type\n */\nexport enum FieldDescriptorProto_Type {\n /**\n * 0 is reserved for errors.\n * Order is weird for historical reasons.\n *\n * @generated from enum value: TYPE_DOUBLE = 1;\n */\n DOUBLE = 1,\n\n /**\n * @generated from enum value: TYPE_FLOAT = 2;\n */\n FLOAT = 2,\n\n /**\n * Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if\n * negative values are likely.\n *\n * @generated from enum value: TYPE_INT64 = 3;\n */\n INT64 = 3,\n\n /**\n * @generated from enum value: TYPE_UINT64 = 4;\n */\n UINT64 = 4,\n\n /**\n * Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if\n * negative values are likely.\n *\n * @generated from enum value: TYPE_INT32 = 5;\n */\n INT32 = 5,\n\n /**\n * @generated from enum value: TYPE_FIXED64 = 6;\n */\n FIXED64 = 6,\n\n /**\n * @generated from enum value: TYPE_FIXED32 = 7;\n */\n FIXED32 = 7,\n\n /**\n * @generated from enum value: TYPE_BOOL = 8;\n */\n BOOL = 8,\n\n /**\n * @generated from enum value: TYPE_STRING = 9;\n */\n STRING = 9,\n\n /**\n * Tag-delimited aggregate.\n * Group type is deprecated and not supported in proto3. However, Proto3\n * implementations should still be able to parse the group wire format and\n * treat group fields as unknown fields.\n *\n * @generated from enum value: TYPE_GROUP = 10;\n */\n GROUP = 10,\n\n /**\n * Length-delimited aggregate.\n *\n * @generated from enum value: TYPE_MESSAGE = 11;\n */\n MESSAGE = 11,\n\n /**\n * New in version 2.\n *\n * @generated from enum value: TYPE_BYTES = 12;\n */\n BYTES = 12,\n\n /**\n * @generated from enum value: TYPE_UINT32 = 13;\n */\n UINT32 = 13,\n\n /**\n * @generated from enum value: TYPE_ENUM = 14;\n */\n ENUM = 14,\n\n /**\n * @generated from enum value: TYPE_SFIXED32 = 15;\n */\n SFIXED32 = 15,\n\n /**\n * @generated from enum value: TYPE_SFIXED64 = 16;\n */\n SFIXED64 = 16,\n\n /**\n * Uses ZigZag encoding.\n *\n * @generated from enum value: TYPE_SINT32 = 17;\n */\n SINT32 = 17,\n\n /**\n * Uses ZigZag encoding.\n *\n * @generated from enum value: TYPE_SINT64 = 18;\n */\n SINT64 = 18,\n}\n// Retrieve enum metadata with: proto2.getEnumType(FieldDescriptorProto_Type)\nproto2.util.setEnumType(FieldDescriptorProto_Type, \"google.protobuf.FieldDescriptorProto.Type\", [\n { no: 1, name: \"TYPE_DOUBLE\" },\n { no: 2, name: \"TYPE_FLOAT\" },\n { no: 3, name: \"TYPE_INT64\" },\n { no: 4, name: \"TYPE_UINT64\" },\n { no: 5, name: \"TYPE_INT32\" },\n { no: 6, name: \"TYPE_FIXED64\" },\n { no: 7, name: \"TYPE_FIXED32\" },\n { no: 8, name: \"TYPE_BOOL\" },\n { no: 9, name: \"TYPE_STRING\" },\n { no: 10, name: \"TYPE_GROUP\" },\n { no: 11, name: \"TYPE_MESSAGE\" },\n { no: 12, name: \"TYPE_BYTES\" },\n { no: 13, name: \"TYPE_UINT32\" },\n { no: 14, name: \"TYPE_ENUM\" },\n { no: 15, name: \"TYPE_SFIXED32\" },\n { no: 16, name: \"TYPE_SFIXED64\" },\n { no: 17, name: \"TYPE_SINT32\" },\n { no: 18, name: \"TYPE_SINT64\" },\n]);\n\n/**\n * @generated from enum google.protobuf.FieldDescriptorProto.Label\n */\nexport enum FieldDescriptorProto_Label {\n /**\n * 0 is reserved for errors\n *\n * @generated from enum value: LABEL_OPTIONAL = 1;\n */\n OPTIONAL = 1,\n\n /**\n * @generated from enum value: LABEL_REQUIRED = 2;\n */\n REQUIRED = 2,\n\n /**\n * @generated from enum value: LABEL_REPEATED = 3;\n */\n REPEATED = 3,\n}\n// Retrieve enum metadata with: proto2.getEnumType(FieldDescriptorProto_Label)\nproto2.util.setEnumType(FieldDescriptorProto_Label, \"google.protobuf.FieldDescriptorProto.Label\", [\n { no: 1, name: \"LABEL_OPTIONAL\" },\n { no: 2, name: \"LABEL_REQUIRED\" },\n { no: 3, name: \"LABEL_REPEATED\" },\n]);\n\n/**\n * Describes a oneof.\n *\n * @generated from message google.protobuf.OneofDescriptorProto\n */\nexport class OneofDescriptorProto extends Message<OneofDescriptorProto> {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: optional google.protobuf.OneofOptions options = 2;\n */\n options?: OneofOptions;\n\n constructor(data?: PartialMessage<OneofDescriptorProto>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.OneofDescriptorProto\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"options\", kind: \"message\", T: OneofOptions, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OneofDescriptorProto {\n return new OneofDescriptorProto().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OneofDescriptorProto {\n return new OneofDescriptorProto().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OneofDescriptorProto {\n return new OneofDescriptorProto().fromJsonString(jsonString, options);\n }\n\n static equals(a: OneofDescriptorProto | PlainMessage<OneofDescriptorProto> | undefined, b: OneofDescriptorProto | PlainMessage<OneofDescriptorProto> | undefined): boolean {\n return proto2.util.equals(OneofDescriptorProto, a, b);\n }\n}\n\n/**\n * Describes an enum type.\n *\n * @generated from message google.protobuf.EnumDescriptorProto\n */\nexport class EnumDescriptorProto extends Message<EnumDescriptorProto> {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: repeated google.protobuf.EnumValueDescriptorProto value = 2;\n */\n value: EnumValueDescriptorProto[] = [];\n\n /**\n * @generated from field: optional google.protobuf.EnumOptions options = 3;\n */\n options?: EnumOptions;\n\n /**\n * Range of reserved numeric values. Reserved numeric values may not be used\n * by enum values in the same enum declaration. Reserved ranges may not\n * overlap.\n *\n * @generated from field: repeated google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;\n */\n reservedRange: EnumDescriptorProto_EnumReservedRange[] = [];\n\n /**\n * Reserved enum value names, which may not be reused. A given name may only\n * be reserved once.\n *\n * @generated from field: repeated string reserved_name = 5;\n */\n reservedName: string[] = [];\n\n constructor(data?: PartialMessage<EnumDescriptorProto>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.EnumDescriptorProto\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"value\", kind: \"message\", T: EnumValueDescriptorProto, repeated: true },\n { no: 3, name: \"options\", kind: \"message\", T: EnumOptions, opt: true },\n { no: 4, name: \"reserved_range\", kind: \"message\", T: EnumDescriptorProto_EnumReservedRange, repeated: true },\n { no: 5, name: \"reserved_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnumDescriptorProto {\n return new EnumDescriptorProto().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnumDescriptorProto {\n return new EnumDescriptorProto().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnumDescriptorProto {\n return new EnumDescriptorProto().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnumDescriptorProto | PlainMessage<EnumDescriptorProto> | undefined, b: EnumDescriptorProto | PlainMessage<EnumDescriptorProto> | undefined): boolean {\n return proto2.util.equals(EnumDescriptorProto, a, b);\n }\n}\n\n/**\n * Range of reserved numeric values. Reserved values may not be used by\n * entries in the same enum. Reserved ranges may not overlap.\n *\n * Note that this is distinct from DescriptorProto.ReservedRange in that it\n * is inclusive such that it can appropriately represent the entire int32\n * domain.\n *\n * @generated from message google.protobuf.EnumDescriptorProto.EnumReservedRange\n */\nexport class EnumDescriptorProto_EnumReservedRange extends Message<EnumDescriptorProto_EnumReservedRange> {\n /**\n * Inclusive.\n *\n * @generated from field: optional int32 start = 1;\n */\n start?: number;\n\n /**\n * Inclusive.\n *\n * @generated from field: optional int32 end = 2;\n */\n end?: number;\n\n constructor(data?: PartialMessage<EnumDescriptorProto_EnumReservedRange>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.EnumDescriptorProto.EnumReservedRange\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"start\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 2, name: \"end\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnumDescriptorProto_EnumReservedRange {\n return new EnumDescriptorProto_EnumReservedRange().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnumDescriptorProto_EnumReservedRange {\n return new EnumDescriptorProto_EnumReservedRange().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnumDescriptorProto_EnumReservedRange {\n return new EnumDescriptorProto_EnumReservedRange().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnumDescriptorProto_EnumReservedRange | PlainMessage<EnumDescriptorProto_EnumReservedRange> | undefined, b: EnumDescriptorProto_EnumReservedRange | PlainMessage<EnumDescriptorProto_EnumReservedRange> | undefined): boolean {\n return proto2.util.equals(EnumDescriptorProto_EnumReservedRange, a, b);\n }\n}\n\n/**\n * Describes a value within an enum.\n *\n * @generated from message google.protobuf.EnumValueDescriptorProto\n */\nexport class EnumValueDescriptorProto extends Message<EnumValueDescriptorProto> {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: optional int32 number = 2;\n */\n number?: number;\n\n /**\n * @generated from field: optional google.protobuf.EnumValueOptions options = 3;\n */\n options?: EnumValueOptions;\n\n constructor(data?: PartialMessage<EnumValueDescriptorProto>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.EnumValueDescriptorProto\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"number\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 3, name: \"options\", kind: \"message\", T: EnumValueOptions, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnumValueDescriptorProto {\n return new EnumValueDescriptorProto().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnumValueDescriptorProto {\n return new EnumValueDescriptorProto().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnumValueDescriptorProto {\n return new EnumValueDescriptorProto().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnumValueDescriptorProto | PlainMessage<EnumValueDescriptorProto> | undefined, b: EnumValueDescriptorProto | PlainMessage<EnumValueDescriptorProto> | undefined): boolean {\n return proto2.util.equals(EnumValueDescriptorProto, a, b);\n }\n}\n\n/**\n * Describes a service.\n *\n * @generated from message google.protobuf.ServiceDescriptorProto\n */\nexport class ServiceDescriptorProto extends Message<ServiceDescriptorProto> {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: repeated google.protobuf.MethodDescriptorProto method = 2;\n */\n method: MethodDescriptorProto[] = [];\n\n /**\n * @generated from field: optional google.protobuf.ServiceOptions options = 3;\n */\n options?: ServiceOptions;\n\n constructor(data?: PartialMessage<ServiceDescriptorProto>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.ServiceDescriptorProto\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"method\", kind: \"message\", T: MethodDescriptorProto, repeated: true },\n { no: 3, name: \"options\", kind: \"message\", T: ServiceOptions, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ServiceDescriptorProto {\n return new ServiceDescriptorProto().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ServiceDescriptorProto {\n return new ServiceDescriptorProto().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ServiceDescriptorProto {\n return new ServiceDescriptorProto().fromJsonString(jsonString, options);\n }\n\n static equals(a: ServiceDescriptorProto | PlainMessage<ServiceDescriptorProto> | undefined, b: ServiceDescriptorProto | PlainMessage<ServiceDescriptorProto> | undefined): boolean {\n return proto2.util.equals(ServiceDescriptorProto, a, b);\n }\n}\n\n/**\n * Describes a method of a service.\n *\n * @generated from message google.protobuf.MethodDescriptorProto\n */\nexport class MethodDescriptorProto extends Message<MethodDescriptorProto> {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * Input and output type names. These are resolved in the same way as\n * FieldDescriptorProto.type_name, but must refer to a message type.\n *\n * @generated from field: optional string input_type = 2;\n */\n inputType?: string;\n\n /**\n * @generated from field: optional string output_type = 3;\n */\n outputType?: string;\n\n /**\n * @generated from field: optional google.protobuf.MethodOptions options = 4;\n */\n options?: MethodOptions;\n\n /**\n * Identifies if client streams multiple client messages\n *\n * @generated from field: optional bool client_streaming = 5 [default = false];\n */\n clientStreaming?: boolean;\n\n /**\n * Identifies if server streams multiple server messages\n *\n * @generated from field: optional bool server_streaming = 6 [default = false];\n */\n serverStreaming?: boolean;\n\n constructor(data?: PartialMessage<MethodDescriptorProto>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.MethodDescriptorProto\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"input_type\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"output_type\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"options\", kind: \"message\", T: MethodOptions, opt: true },\n { no: 5, name: \"client_streaming\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 6, name: \"server_streaming\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): MethodDescriptorProto {\n return new MethodDescriptorProto().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): MethodDescriptorProto {\n return new MethodDescriptorProto().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): MethodDescriptorProto {\n return new MethodDescriptorProto().fromJsonString(jsonString, options);\n }\n\n static equals(a: MethodDescriptorProto | PlainMessage<MethodDescriptorProto> | undefined, b: MethodDescriptorProto | PlainMessage<MethodDescriptorProto> | undefined): boolean {\n return proto2.util.equals(MethodDescriptorProto, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.FileOptions\n */\nexport class FileOptions extends Message<FileOptions> {\n /**\n * Sets the Java package where classes generated from this .proto will be\n * placed. By default, the proto package is used, but this is often\n * inappropriate because proto packages do not normally start with backwards\n * domain names.\n *\n * @generated from field: optional string java_package = 1;\n */\n javaPackage?: string;\n\n /**\n * Controls the name of the wrapper Java class generated for the .proto file.\n * That class will always contain the .proto file's getDescriptor() method as\n * well as any top-level extensions defined in the .proto file.\n * If java_multiple_files is disabled, then all the other classes from the\n * .proto file will be nested inside the single wrapper outer class.\n *\n * @generated from field: optional string java_outer_classname = 8;\n */\n javaOuterClassname?: string;\n\n /**\n * If enabled, then the Java code generator will generate a separate .java\n * file for each top-level message, enum, and service defined in the .proto\n * file. Thus, these types will *not* be nested inside the wrapper class\n * named by java_outer_classname. However, the wrapper class will still be\n * generated to contain the file's getDescriptor() method as well as any\n * top-level extensions defined in the file.\n *\n * @generated from field: optional bool java_multiple_files = 10 [default = false];\n */\n javaMultipleFiles?: boolean;\n\n /**\n * This option does nothing.\n *\n * @generated from field: optional bool java_generate_equals_and_hash = 20 [deprecated = true];\n * @deprecated\n */\n javaGenerateEqualsAndHash?: boolean;\n\n /**\n * If set true, then the Java2 code generator will generate code that\n * throws an exception whenever an attempt is made to assign a non-UTF-8\n * byte sequence to a string field.\n * Message reflection will do the same.\n * However, an extension field still accepts non-UTF-8 byte sequences.\n * This option has no effect on when used with the lite runtime.\n *\n * @generated from field: optional bool java_string_check_utf8 = 27 [default = false];\n */\n javaStringCheckUtf8?: boolean;\n\n /**\n * @generated from field: optional google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];\n */\n optimizeFor?: FileOptions_OptimizeMode;\n\n /**\n * Sets the Go package where structs generated from this .proto will be\n * placed. If omitted, the Go package will be derived from the following:\n * - The basename of the package import path, if provided.\n * - Otherwise, the package statement in the .proto file, if present.\n * - Otherwise, the basename of the .proto file, without extension.\n *\n * @generated from field: optional string go_package = 11;\n */\n goPackage?: string;\n\n /**\n * Should generic services be generated in each language? \"Generic\" services\n * are not specific to any particular RPC system. They are generated by the\n * main code generators in each language (without additional plugins).\n * Generic services were the only kind of service generation supported by\n * early versions of google.protobuf.\n *\n * Generic services are now considered deprecated in favor of using plugins\n * that generate code specific to your particular RPC system. Therefore,\n * these default to false. Old code which depends on generic services should\n * explicitly set them to true.\n *\n * @generated from field: optional bool cc_generic_services = 16 [default = false];\n */\n ccGenericServices?: boolean;\n\n /**\n * @generated from field: optional bool java_generic_services = 17 [default = false];\n */\n javaGenericServices?: boolean;\n\n /**\n * @generated from field: optional bool py_generic_services = 18 [default = false];\n */\n pyGenericServices?: boolean;\n\n /**\n * @generated from field: optional bool php_generic_services = 42 [default = false];\n */\n phpGenericServices?: boolean;\n\n /**\n * Is this file deprecated?\n * Depending on the target platform, this can emit Deprecated annotations\n * for everything in the file, or it will be completely ignored; in the very\n * least, this is a formalization for deprecating files.\n *\n * @generated from field: optional bool deprecated = 23 [default = false];\n */\n deprecated?: boolean;\n\n /**\n * Enables the use of arenas for the proto messages in this file. This applies\n * only to generated classes for C++.\n *\n * @generated from field: optional bool cc_enable_arenas = 31 [default = true];\n */\n ccEnableArenas?: boolean;\n\n /**\n * Sets the objective c class prefix which is prepended to all objective c\n * generated classes from this .proto. There is no default.\n *\n * @generated from field: optional string objc_class_prefix = 36;\n */\n objcClassPrefix?: string;\n\n /**\n * Namespace for generated classes; defaults to the package.\n *\n * @generated from field: optional string csharp_namespace = 37;\n */\n csharpNamespace?: string;\n\n /**\n * By default Swift generators will take the proto package and CamelCase it\n * replacing '.' with underscore and use that to prefix the types/symbols\n * defined. When this options is provided, they will use this value instead\n * to prefix the types/symbols defined.\n *\n * @generated from field: optional string swift_prefix = 39;\n */\n swiftPrefix?: string;\n\n /**\n * Sets the php class prefix which is prepended to all php generated classes\n * from this .proto. Default is empty.\n *\n * @generated from field: optional string php_class_prefix = 40;\n */\n phpClassPrefix?: string;\n\n /**\n * Use this option to change the namespace of php generated classes. Default\n * is empty. When this option is empty, the package name will be used for\n * determining the namespace.\n *\n * @generated from field: optional string php_namespace = 41;\n */\n phpNamespace?: string;\n\n /**\n * Use this option to change the namespace of php generated metadata classes.\n * Default is empty. When this option is empty, the proto file name will be\n * used for determining the namespace.\n *\n * @generated from field: optional string php_metadata_namespace = 44;\n */\n phpMetadataNamespace?: string;\n\n /**\n * Use this option to change the package of ruby generated classes. Default\n * is empty. When this option is not set, the package name will be used for\n * determining the ruby package.\n *\n * @generated from field: optional string ruby_package = 45;\n */\n rubyPackage?: string;\n\n /**\n * The parser stores options it doesn't recognize here.\n * See the documentation for the \"Options\" section above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<FileOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.FileOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"java_package\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 8, name: \"java_outer_classname\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 10, name: \"java_multiple_files\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 20, name: \"java_generate_equals_and_hash\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 27, name: \"java_string_check_utf8\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 9, name: \"optimize_for\", kind: \"enum\", T: proto2.getEnumType(FileOptions_OptimizeMode), opt: true, default: FileOptions_OptimizeMode.SPEED },\n { no: 11, name: \"go_package\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 16, name: \"cc_generic_services\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 17, name: \"java_generic_services\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 18, name: \"py_generic_services\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 42, name: \"php_generic_services\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 23, name: \"deprecated\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 31, name: \"cc_enable_arenas\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: true },\n { no: 36, name: \"objc_class_prefix\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 37, name: \"csharp_namespace\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 39, name: \"swift_prefix\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 40, name: \"php_class_prefix\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 41, name: \"php_namespace\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 44, name: \"php_metadata_namespace\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 45, name: \"ruby_package\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FileOptions {\n return new FileOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FileOptions {\n return new FileOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FileOptions {\n return new FileOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: FileOptions | PlainMessage<FileOptions> | undefined, b: FileOptions | PlainMessage<FileOptions> | undefined): boolean {\n return proto2.util.equals(FileOptions, a, b);\n }\n}\n\n/**\n * Generated classes can be optimized for speed or code size.\n *\n * @generated from enum google.protobuf.FileOptions.OptimizeMode\n */\nexport enum FileOptions_OptimizeMode {\n /**\n * Generate complete code for parsing, serialization,\n *\n * @generated from enum value: SPEED = 1;\n */\n SPEED = 1,\n\n /**\n * etc.\n *\n * Use ReflectionOps to implement these methods.\n *\n * @generated from enum value: CODE_SIZE = 2;\n */\n CODE_SIZE = 2,\n\n /**\n * Generate code using MessageLite and the lite runtime.\n *\n * @generated from enum value: LITE_RUNTIME = 3;\n */\n LITE_RUNTIME = 3,\n}\n// Retrieve enum metadata with: proto2.getEnumType(FileOptions_OptimizeMode)\nproto2.util.setEnumType(FileOptions_OptimizeMode, \"google.protobuf.FileOptions.OptimizeMode\", [\n { no: 1, name: \"SPEED\" },\n { no: 2, name: \"CODE_SIZE\" },\n { no: 3, name: \"LITE_RUNTIME\" },\n]);\n\n/**\n * @generated from message google.protobuf.MessageOptions\n */\nexport class MessageOptions extends Message<MessageOptions> {\n /**\n * Set true to use the old proto1 MessageSet wire format for extensions.\n * This is provided for backwards-compatibility with the MessageSet wire\n * format. You should not use this for any other reason: It's less\n * efficient, has fewer features, and is more complicated.\n *\n * The message must be defined exactly as follows:\n * message Foo {\n * option message_set_wire_format = true;\n * extensions 4 to max;\n * }\n * Note that the message cannot have any defined fields; MessageSets only\n * have extensions.\n *\n * All extensions of your type must be singular messages; e.g. they cannot\n * be int32s, enums, or repeated messages.\n *\n * Because this is an option, the above two restrictions are not enforced by\n * the protocol compiler.\n *\n * @generated from field: optional bool message_set_wire_format = 1 [default = false];\n */\n messageSetWireFormat?: boolean;\n\n /**\n * Disables the generation of the standard \"descriptor()\" accessor, which can\n * conflict with a field of the same name. This is meant to make migration\n * from proto1 easier; new code should avoid fields named \"descriptor\".\n *\n * @generated from field: optional bool no_standard_descriptor_accessor = 2 [default = false];\n */\n noStandardDescriptorAccessor?: boolean;\n\n /**\n * Is this message deprecated?\n * Depending on the target platform, this can emit Deprecated annotations\n * for the message, or it will be completely ignored; in the very least,\n * this is a formalization for deprecating messages.\n *\n * @generated from field: optional bool deprecated = 3 [default = false];\n */\n deprecated?: boolean;\n\n /**\n * Whether the message is an automatically generated map entry type for the\n * maps field.\n *\n * For maps fields:\n * map<KeyType, ValueType> map_field = 1;\n * The parsed descriptor looks like:\n * message MapFieldEntry {\n * option map_entry = true;\n * optional KeyType key = 1;\n * optional ValueType value = 2;\n * }\n * repeated MapFieldEntry map_field = 1;\n *\n * Implementations may choose not to generate the map_entry=true message, but\n * use a native map in the target language to hold the keys and values.\n * The reflection APIs in such implementations still need to work as\n * if the field is a repeated message field.\n *\n * NOTE: Do not set the option in .proto files. Always use the maps syntax\n * instead. The option should only be implicitly set by the proto compiler\n * parser.\n *\n * @generated from field: optional bool map_entry = 7;\n */\n mapEntry?: boolean;\n\n /**\n * The parser stores options it doesn't recognize here. See above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<MessageOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.MessageOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"message_set_wire_format\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 2, name: \"no_standard_descriptor_accessor\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 3, name: \"deprecated\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 7, name: \"map_entry\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): MessageOptions {\n return new MessageOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): MessageOptions {\n return new MessageOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): MessageOptions {\n return new MessageOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: MessageOptions | PlainMessage<MessageOptions> | undefined, b: MessageOptions | PlainMessage<MessageOptions> | undefined): boolean {\n return proto2.util.equals(MessageOptions, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.FieldOptions\n */\nexport class FieldOptions extends Message<FieldOptions> {\n /**\n * The ctype option instructs the C++ code generator to use a different\n * representation of the field than it normally would. See the specific\n * options below. This option is not yet implemented in the open source\n * release -- sorry, we'll try to include it in a future version!\n *\n * @generated from field: optional google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];\n */\n ctype?: FieldOptions_CType;\n\n /**\n * The packed option can be enabled for repeated primitive fields to enable\n * a more efficient representation on the wire. Rather than repeatedly\n * writing the tag and type for each element, the entire array is encoded as\n * a single length-delimited blob. In proto3, only explicit setting it to\n * false will avoid using packed encoding.\n *\n * @generated from field: optional bool packed = 2;\n */\n packed?: boolean;\n\n /**\n * The jstype option determines the JavaScript type used for values of the\n * field. The option is permitted only for 64 bit integral and fixed types\n * (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING\n * is represented as JavaScript string, which avoids loss of precision that\n * can happen when a large value is converted to a floating point JavaScript.\n * Specifying JS_NUMBER for the jstype causes the generated JavaScript code to\n * use the JavaScript \"number\" type. The behavior of the default option\n * JS_NORMAL is implementation dependent.\n *\n * This option is an enum to permit additional types to be added, e.g.\n * goog.math.Integer.\n *\n * @generated from field: optional google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];\n */\n jstype?: FieldOptions_JSType;\n\n /**\n * Should this field be parsed lazily? Lazy applies only to message-type\n * fields. It means that when the outer message is initially parsed, the\n * inner message's contents will not be parsed but instead stored in encoded\n * form. The inner message will actually be parsed when it is first accessed.\n *\n * This is only a hint. Implementations are free to choose whether to use\n * eager or lazy parsing regardless of the value of this option. However,\n * setting this option true suggests that the protocol author believes that\n * using lazy parsing on this field is worth the additional bookkeeping\n * overhead typically needed to implement it.\n *\n * This option does not affect the public interface of any generated code;\n * all method signatures remain the same. Furthermore, thread-safety of the\n * interface is not affected by this option; const methods remain safe to\n * call from multiple threads concurrently, while non-const methods continue\n * to require exclusive access.\n *\n *\n * Note that implementations may choose not to check required fields within\n * a lazy sub-message. That is, calling IsInitialized() on the outer message\n * may return true even if the inner message has missing required fields.\n * This is necessary because otherwise the inner message would have to be\n * parsed in order to perform the check, defeating the purpose of lazy\n * parsing. An implementation which chooses not to check required fields\n * must be consistent about it. That is, for any particular sub-message, the\n * implementation must either *always* check its required fields, or *never*\n * check its required fields, regardless of whether or not the message has\n * been parsed.\n *\n * As of 2021, lazy does no correctness checks on the byte stream during\n * parsing. This may lead to crashes if and when an invalid byte stream is\n * finally parsed upon access.\n *\n * TODO(b/211906113): Enable validation on lazy fields.\n *\n * @generated from field: optional bool lazy = 5 [default = false];\n */\n lazy?: boolean;\n\n /**\n * unverified_lazy does no correctness checks on the byte stream. This should\n * only be used where lazy with verification is prohibitive for performance\n * reasons.\n *\n * @generated from field: optional bool unverified_lazy = 15 [default = false];\n */\n unverifiedLazy?: boolean;\n\n /**\n * Is this field deprecated?\n * Depending on the target platform, this can emit Deprecated annotations\n * for accessors, or it will be completely ignored; in the very least, this\n * is a formalization for deprecating fields.\n *\n * @generated from field: optional bool deprecated = 3 [default = false];\n */\n deprecated?: boolean;\n\n /**\n * For Google-internal migration only. Do not use.\n *\n * @generated from field: optional bool weak = 10 [default = false];\n */\n weak?: boolean;\n\n /**\n * The parser stores options it doesn't recognize here. See above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<FieldOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.FieldOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"ctype\", kind: \"enum\", T: proto2.getEnumType(FieldOptions_CType), opt: true, default: FieldOptions_CType.STRING },\n { no: 2, name: \"packed\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 6, name: \"jstype\", kind: \"enum\", T: proto2.getEnumType(FieldOptions_JSType), opt: true, default: FieldOptions_JSType.JS_NORMAL },\n { no: 5, name: \"lazy\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 15, name: \"unverified_lazy\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 3, name: \"deprecated\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 10, name: \"weak\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FieldOptions {\n return new FieldOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FieldOptions {\n return new FieldOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FieldOptions {\n return new FieldOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: FieldOptions | PlainMessage<FieldOptions> | undefined, b: FieldOptions | PlainMessage<FieldOptions> | undefined): boolean {\n return proto2.util.equals(FieldOptions, a, b);\n }\n}\n\n/**\n * @generated from enum google.protobuf.FieldOptions.CType\n */\nexport enum FieldOptions_CType {\n /**\n * Default mode.\n *\n * @generated from enum value: STRING = 0;\n */\n STRING = 0,\n\n /**\n * @generated from enum value: CORD = 1;\n */\n CORD = 1,\n\n /**\n * @generated from enum value: STRING_PIECE = 2;\n */\n STRING_PIECE = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(FieldOptions_CType)\nproto2.util.setEnumType(FieldOptions_CType, \"google.protobuf.FieldOptions.CType\", [\n { no: 0, name: \"STRING\" },\n { no: 1, name: \"CORD\" },\n { no: 2, name: \"STRING_PIECE\" },\n]);\n\n/**\n * @generated from enum google.protobuf.FieldOptions.JSType\n */\nexport enum FieldOptions_JSType {\n /**\n * Use the default type.\n *\n * @generated from enum value: JS_NORMAL = 0;\n */\n JS_NORMAL = 0,\n\n /**\n * Use JavaScript strings.\n *\n * @generated from enum value: JS_STRING = 1;\n */\n JS_STRING = 1,\n\n /**\n * Use JavaScript numbers.\n *\n * @generated from enum value: JS_NUMBER = 2;\n */\n JS_NUMBER = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(FieldOptions_JSType)\nproto2.util.setEnumType(FieldOptions_JSType, \"google.protobuf.FieldOptions.JSType\", [\n { no: 0, name: \"JS_NORMAL\" },\n { no: 1, name: \"JS_STRING\" },\n { no: 2, name: \"JS_NUMBER\" },\n]);\n\n/**\n * @generated from message google.protobuf.OneofOptions\n */\nexport class OneofOptions extends Message<OneofOptions> {\n /**\n * The parser stores options it doesn't recognize here. See above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<OneofOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.OneofOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OneofOptions {\n return new OneofOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OneofOptions {\n return new OneofOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OneofOptions {\n return new OneofOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: OneofOptions | PlainMessage<OneofOptions> | undefined, b: OneofOptions | PlainMessage<OneofOptions> | undefined): boolean {\n return proto2.util.equals(OneofOptions, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.EnumOptions\n */\nexport class EnumOptions extends Message<EnumOptions> {\n /**\n * Set this option to true to allow mapping different tag names to the same\n * value.\n *\n * @generated from field: optional bool allow_alias = 2;\n */\n allowAlias?: boolean;\n\n /**\n * Is this enum deprecated?\n * Depending on the target platform, this can emit Deprecated annotations\n * for the enum, or it will be completely ignored; in the very least, this\n * is a formalization for deprecating enums.\n *\n * @generated from field: optional bool deprecated = 3 [default = false];\n */\n deprecated?: boolean;\n\n /**\n * The parser stores options it doesn't recognize here. See above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<EnumOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.EnumOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 2, name: \"allow_alias\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true },\n { no: 3, name: \"deprecated\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnumOptions {\n return new EnumOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnumOptions {\n return new EnumOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnumOptions {\n return new EnumOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnumOptions | PlainMessage<EnumOptions> | undefined, b: EnumOptions | PlainMessage<EnumOptions> | undefined): boolean {\n return proto2.util.equals(EnumOptions, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.EnumValueOptions\n */\nexport class EnumValueOptions extends Message<EnumValueOptions> {\n /**\n * Is this enum value deprecated?\n * Depending on the target platform, this can emit Deprecated annotations\n * for the enum value, or it will be completely ignored; in the very least,\n * this is a formalization for deprecating enum values.\n *\n * @generated from field: optional bool deprecated = 1 [default = false];\n */\n deprecated?: boolean;\n\n /**\n * The parser stores options it doesn't recognize here. See above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<EnumValueOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.EnumValueOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"deprecated\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnumValueOptions {\n return new EnumValueOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnumValueOptions {\n return new EnumValueOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnumValueOptions {\n return new EnumValueOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnumValueOptions | PlainMessage<EnumValueOptions> | undefined, b: EnumValueOptions | PlainMessage<EnumValueOptions> | undefined): boolean {\n return proto2.util.equals(EnumValueOptions, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.ServiceOptions\n */\nexport class ServiceOptions extends Message<ServiceOptions> {\n /**\n * Is this service deprecated?\n * Depending on the target platform, this can emit Deprecated annotations\n * for the service, or it will be completely ignored; in the very least,\n * this is a formalization for deprecating services.\n *\n * @generated from field: optional bool deprecated = 33 [default = false];\n */\n deprecated?: boolean;\n\n /**\n * The parser stores options it doesn't recognize here. See above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<ServiceOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.ServiceOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 33, name: \"deprecated\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ServiceOptions {\n return new ServiceOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ServiceOptions {\n return new ServiceOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ServiceOptions {\n return new ServiceOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: ServiceOptions | PlainMessage<ServiceOptions> | undefined, b: ServiceOptions | PlainMessage<ServiceOptions> | undefined): boolean {\n return proto2.util.equals(ServiceOptions, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.MethodOptions\n */\nexport class MethodOptions extends Message<MethodOptions> {\n /**\n * Is this method deprecated?\n * Depending on the target platform, this can emit Deprecated annotations\n * for the method, or it will be completely ignored; in the very least,\n * this is a formalization for deprecating methods.\n *\n * @generated from field: optional bool deprecated = 33 [default = false];\n */\n deprecated?: boolean;\n\n /**\n * @generated from field: optional google.protobuf.MethodOptions.IdempotencyLevel idempotency_level = 34 [default = IDEMPOTENCY_UNKNOWN];\n */\n idempotencyLevel?: MethodOptions_IdempotencyLevel;\n\n /**\n * The parser stores options it doesn't recognize here. See above.\n *\n * @generated from field: repeated google.protobuf.UninterpretedOption uninterpreted_option = 999;\n */\n uninterpretedOption: UninterpretedOption[] = [];\n\n constructor(data?: PartialMessage<MethodOptions>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.MethodOptions\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 33, name: \"deprecated\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, opt: true, default: false },\n { no: 34, name: \"idempotency_level\", kind: \"enum\", T: proto2.getEnumType(MethodOptions_IdempotencyLevel), opt: true, default: MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN },\n { no: 999, name: \"uninterpreted_option\", kind: \"message\", T: UninterpretedOption, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): MethodOptions {\n return new MethodOptions().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): MethodOptions {\n return new MethodOptions().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): MethodOptions {\n return new MethodOptions().fromJsonString(jsonString, options);\n }\n\n static equals(a: MethodOptions | PlainMessage<MethodOptions> | undefined, b: MethodOptions | PlainMessage<MethodOptions> | undefined): boolean {\n return proto2.util.equals(MethodOptions, a, b);\n }\n}\n\n/**\n * Is this method side-effect-free (or safe in HTTP parlance), or idempotent,\n * or neither? HTTP based RPC implementation may choose GET verb for safe\n * methods, and PUT verb for idempotent methods instead of the default POST.\n *\n * @generated from enum google.protobuf.MethodOptions.IdempotencyLevel\n */\nexport enum MethodOptions_IdempotencyLevel {\n /**\n * @generated from enum value: IDEMPOTENCY_UNKNOWN = 0;\n */\n IDEMPOTENCY_UNKNOWN = 0,\n\n /**\n * implies idempotent\n *\n * @generated from enum value: NO_SIDE_EFFECTS = 1;\n */\n NO_SIDE_EFFECTS = 1,\n\n /**\n * idempotent, but may have side effects\n *\n * @generated from enum value: IDEMPOTENT = 2;\n */\n IDEMPOTENT = 2,\n}\n// Retrieve enum metadata with: proto2.getEnumType(MethodOptions_IdempotencyLevel)\nproto2.util.setEnumType(MethodOptions_IdempotencyLevel, \"google.protobuf.MethodOptions.IdempotencyLevel\", [\n { no: 0, name: \"IDEMPOTENCY_UNKNOWN\" },\n { no: 1, name: \"NO_SIDE_EFFECTS\" },\n { no: 2, name: \"IDEMPOTENT\" },\n]);\n\n/**\n * A message representing a option the parser does not recognize. This only\n * appears in options protos created by the compiler::Parser class.\n * DescriptorPool resolves these when building Descriptor objects. Therefore,\n * options protos in descriptor objects (e.g. returned by Descriptor::options(),\n * or produced by Descriptor::CopyTo()) will never have UninterpretedOptions\n * in them.\n *\n * @generated from message google.protobuf.UninterpretedOption\n */\nexport class UninterpretedOption extends Message<UninterpretedOption> {\n /**\n * @generated from field: repeated google.protobuf.UninterpretedOption.NamePart name = 2;\n */\n name: UninterpretedOption_NamePart[] = [];\n\n /**\n * The value of the uninterpreted option, in whatever type the tokenizer\n * identified it as during parsing. Exactly one of these should be set.\n *\n * @generated from field: optional string identifier_value = 3;\n */\n identifierValue?: string;\n\n /**\n * @generated from field: optional uint64 positive_int_value = 4;\n */\n positiveIntValue?: bigint;\n\n /**\n * @generated from field: optional int64 negative_int_value = 5;\n */\n negativeIntValue?: bigint;\n\n /**\n * @generated from field: optional double double_value = 6;\n */\n doubleValue?: number;\n\n /**\n * @generated from field: optional bytes string_value = 7;\n */\n stringValue?: Uint8Array;\n\n /**\n * @generated from field: optional string aggregate_value = 8;\n */\n aggregateValue?: string;\n\n constructor(data?: PartialMessage<UninterpretedOption>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.UninterpretedOption\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 2, name: \"name\", kind: \"message\", T: UninterpretedOption_NamePart, repeated: true },\n { no: 3, name: \"identifier_value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"positive_int_value\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, opt: true },\n { no: 5, name: \"negative_int_value\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */, opt: true },\n { no: 6, name: \"double_value\", kind: \"scalar\", T: 1 /* ScalarType.DOUBLE */, opt: true },\n { no: 7, name: \"string_value\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */, opt: true },\n { no: 8, name: \"aggregate_value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UninterpretedOption {\n return new UninterpretedOption().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UninterpretedOption {\n return new UninterpretedOption().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UninterpretedOption {\n return new UninterpretedOption().fromJsonString(jsonString, options);\n }\n\n static equals(a: UninterpretedOption | PlainMessage<UninterpretedOption> | undefined, b: UninterpretedOption | PlainMessage<UninterpretedOption> | undefined): boolean {\n return proto2.util.equals(UninterpretedOption, a, b);\n }\n}\n\n/**\n * The name of the uninterpreted option. Each string represents a segment in\n * a dot-separated name. is_extension is true iff a segment represents an\n * extension (denoted with parentheses in options specs in .proto files).\n * E.g.,{ [\"foo\", false], [\"bar.baz\", true], [\"qux\", false] } represents\n * \"foo.(bar.baz).qux\".\n *\n * @generated from message google.protobuf.UninterpretedOption.NamePart\n */\nexport class UninterpretedOption_NamePart extends Message<UninterpretedOption_NamePart> {\n /**\n * @generated from field: required string name_part = 1;\n */\n namePart?: string;\n\n /**\n * @generated from field: required bool is_extension = 2;\n */\n isExtension?: boolean;\n\n constructor(data?: PartialMessage<UninterpretedOption_NamePart>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.UninterpretedOption.NamePart\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name_part\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"is_extension\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UninterpretedOption_NamePart {\n return new UninterpretedOption_NamePart().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UninterpretedOption_NamePart {\n return new UninterpretedOption_NamePart().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UninterpretedOption_NamePart {\n return new UninterpretedOption_NamePart().fromJsonString(jsonString, options);\n }\n\n static equals(a: UninterpretedOption_NamePart | PlainMessage<UninterpretedOption_NamePart> | undefined, b: UninterpretedOption_NamePart | PlainMessage<UninterpretedOption_NamePart> | undefined): boolean {\n return proto2.util.equals(UninterpretedOption_NamePart, a, b);\n }\n}\n\n/**\n * Encapsulates information about the original source file from which a\n * FileDescriptorProto was generated.\n *\n * @generated from message google.protobuf.SourceCodeInfo\n */\nexport class SourceCodeInfo extends Message<SourceCodeInfo> {\n /**\n * A Location identifies a piece of source code in a .proto file which\n * corresponds to a particular definition. This information is intended\n * to be useful to IDEs, code indexers, documentation generators, and similar\n * tools.\n *\n * For example, say we have a file like:\n * message Foo {\n * optional string foo = 1;\n * }\n * Let's look at just the field definition:\n * optional string foo = 1;\n * ^ ^^ ^^ ^ ^^^\n * a bc de f ghi\n * We have the following locations:\n * span path represents\n * [a,i) [ 4, 0, 2, 0 ] The whole field definition.\n * [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).\n * [c,d) [ 4, 0, 2, 0, 5 ] The type (string).\n * [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).\n * [g,h) [ 4, 0, 2, 0, 3 ] The number (1).\n *\n * Notes:\n * - A location may refer to a repeated field itself (i.e. not to any\n * particular index within it). This is used whenever a set of elements are\n * logically enclosed in a single code segment. For example, an entire\n * extend block (possibly containing multiple extension definitions) will\n * have an outer location whose path refers to the \"extensions\" repeated\n * field without an index.\n * - Multiple locations may have the same path. This happens when a single\n * logical declaration is spread out across multiple places. The most\n * obvious example is the \"extend\" block again -- there may be multiple\n * extend blocks in the same scope, each of which will have the same path.\n * - A location's span is not always a subset of its parent's span. For\n * example, the \"extendee\" of an extension declaration appears at the\n * beginning of the \"extend\" block and is shared by all extensions within\n * the block.\n * - Just because a location's span is a subset of some other location's span\n * does not mean that it is a descendant. For example, a \"group\" defines\n * both a type and a field in a single declaration. Thus, the locations\n * corresponding to the type and field and their components will overlap.\n * - Code which tries to interpret locations should probably be designed to\n * ignore those that it doesn't understand, as more types of locations could\n * be recorded in the future.\n *\n * @generated from field: repeated google.protobuf.SourceCodeInfo.Location location = 1;\n */\n location: SourceCodeInfo_Location[] = [];\n\n constructor(data?: PartialMessage<SourceCodeInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.SourceCodeInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"location\", kind: \"message\", T: SourceCodeInfo_Location, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SourceCodeInfo {\n return new SourceCodeInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SourceCodeInfo {\n return new SourceCodeInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SourceCodeInfo {\n return new SourceCodeInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: SourceCodeInfo | PlainMessage<SourceCodeInfo> | undefined, b: SourceCodeInfo | PlainMessage<SourceCodeInfo> | undefined): boolean {\n return proto2.util.equals(SourceCodeInfo, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.SourceCodeInfo.Location\n */\nexport class SourceCodeInfo_Location extends Message<SourceCodeInfo_Location> {\n /**\n * Identifies which part of the FileDescriptorProto was defined at this\n * location.\n *\n * Each element is a field number or an index. They form a path from\n * the root FileDescriptorProto to the place where the definition occurs.\n * For example, this path:\n * [ 4, 3, 2, 7, 1 ]\n * refers to:\n * file.message_type(3) // 4, 3\n * .field(7) // 2, 7\n * .name() // 1\n * This is because FileDescriptorProto.message_type has field number 4:\n * repeated DescriptorProto message_type = 4;\n * and DescriptorProto.field has field number 2:\n * repeated FieldDescriptorProto field = 2;\n * and FieldDescriptorProto.name has field number 1:\n * optional string name = 1;\n *\n * Thus, the above path gives the location of a field name. If we removed\n * the last element:\n * [ 4, 3, 2, 7 ]\n * this path refers to the whole field declaration (from the beginning\n * of the label to the terminating semicolon).\n *\n * @generated from field: repeated int32 path = 1 [packed = true];\n */\n path: number[] = [];\n\n /**\n * Always has exactly three or four elements: start line, start column,\n * end line (optional, otherwise assumed same as start line), end column.\n * These are packed into a single field for efficiency. Note that line\n * and column numbers are zero-based -- typically you will want to add\n * 1 to each before displaying to a user.\n *\n * @generated from field: repeated int32 span = 2 [packed = true];\n */\n span: number[] = [];\n\n /**\n * If this SourceCodeInfo represents a complete declaration, these are any\n * comments appearing before and after the declaration which appear to be\n * attached to the declaration.\n *\n * A series of line comments appearing on consecutive lines, with no other\n * tokens appearing on those lines, will be treated as a single comment.\n *\n * leading_detached_comments will keep paragraphs of comments that appear\n * before (but not connected to) the current element. Each paragraph,\n * separated by empty lines, will be one comment element in the repeated\n * field.\n *\n * Only the comment content is provided; comment markers (e.g. //) are\n * stripped out. For block comments, leading whitespace and an asterisk\n * will be stripped from the beginning of each line other than the first.\n * Newlines are included in the output.\n *\n * Examples:\n *\n * optional int32 foo = 1; // Comment attached to foo.\n * // Comment attached to bar.\n * optional int32 bar = 2;\n *\n * optional string baz = 3;\n * // Comment attached to baz.\n * // Another line attached to baz.\n *\n * // Comment attached to qux.\n * //\n * // Another line attached to qux.\n * optional double qux = 4;\n *\n * // Detached comment for corge. This is not leading or trailing comments\n * // to qux or corge because there are blank lines separating it from\n * // both.\n *\n * // Detached comment for corge paragraph 2.\n *\n * optional string corge = 5;\n * /* Block comment attached\n * * to corge. Leading asterisks\n * * will be removed. *\\/\n * /* Block comment attached to\n * * grault. *\\/\n * optional int32 grault = 6;\n *\n * // ignored detached comments.\n *\n * @generated from field: optional string leading_comments = 3;\n */\n leadingComments?: string;\n\n /**\n * @generated from field: optional string trailing_comments = 4;\n */\n trailingComments?: string;\n\n /**\n * @generated from field: repeated string leading_detached_comments = 6;\n */\n leadingDetachedComments: string[] = [];\n\n constructor(data?: PartialMessage<SourceCodeInfo_Location>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.SourceCodeInfo.Location\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"path\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, repeated: true, packed: true },\n { no: 2, name: \"span\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, repeated: true, packed: true },\n { no: 3, name: \"leading_comments\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 4, name: \"trailing_comments\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 6, name: \"leading_detached_comments\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SourceCodeInfo_Location {\n return new SourceCodeInfo_Location().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SourceCodeInfo_Location {\n return new SourceCodeInfo_Location().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SourceCodeInfo_Location {\n return new SourceCodeInfo_Location().fromJsonString(jsonString, options);\n }\n\n static equals(a: SourceCodeInfo_Location | PlainMessage<SourceCodeInfo_Location> | undefined, b: SourceCodeInfo_Location | PlainMessage<SourceCodeInfo_Location> | undefined): boolean {\n return proto2.util.equals(SourceCodeInfo_Location, a, b);\n }\n}\n\n/**\n * Describes the relationship between generated code and its original source\n * file. A GeneratedCodeInfo message is associated with only one generated\n * source file, but may contain references to different source .proto files.\n *\n * @generated from message google.protobuf.GeneratedCodeInfo\n */\nexport class GeneratedCodeInfo extends Message<GeneratedCodeInfo> {\n /**\n * An Annotation connects some span of text in generated code to an element\n * of its generating .proto file.\n *\n * @generated from field: repeated google.protobuf.GeneratedCodeInfo.Annotation annotation = 1;\n */\n annotation: GeneratedCodeInfo_Annotation[] = [];\n\n constructor(data?: PartialMessage<GeneratedCodeInfo>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.GeneratedCodeInfo\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"annotation\", kind: \"message\", T: GeneratedCodeInfo_Annotation, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GeneratedCodeInfo {\n return new GeneratedCodeInfo().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GeneratedCodeInfo {\n return new GeneratedCodeInfo().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GeneratedCodeInfo {\n return new GeneratedCodeInfo().fromJsonString(jsonString, options);\n }\n\n static equals(a: GeneratedCodeInfo | PlainMessage<GeneratedCodeInfo> | undefined, b: GeneratedCodeInfo | PlainMessage<GeneratedCodeInfo> | undefined): boolean {\n return proto2.util.equals(GeneratedCodeInfo, a, b);\n }\n}\n\n/**\n * @generated from message google.protobuf.GeneratedCodeInfo.Annotation\n */\nexport class GeneratedCodeInfo_Annotation extends Message<GeneratedCodeInfo_Annotation> {\n /**\n * Identifies the element in the original source .proto file. This field\n * is formatted the same as SourceCodeInfo.Location.path.\n *\n * @generated from field: repeated int32 path = 1 [packed = true];\n */\n path: number[] = [];\n\n /**\n * Identifies the filesystem path to the original source .proto.\n *\n * @generated from field: optional string source_file = 2;\n */\n sourceFile?: string;\n\n /**\n * Identifies the starting offset in bytes in the generated code\n * that relates to the identified object.\n *\n * @generated from field: optional int32 begin = 3;\n */\n begin?: number;\n\n /**\n * Identifies the ending offset in bytes in the generated code that\n * relates to the identified offset. The end offset should be one past\n * the last relevant byte (so the length of the text = end - begin).\n *\n * @generated from field: optional int32 end = 4;\n */\n end?: number;\n\n constructor(data?: PartialMessage<GeneratedCodeInfo_Annotation>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.GeneratedCodeInfo.Annotation\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"path\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, repeated: true, packed: true },\n { no: 2, name: \"source_file\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 3, name: \"begin\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 4, name: \"end\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GeneratedCodeInfo_Annotation {\n return new GeneratedCodeInfo_Annotation().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GeneratedCodeInfo_Annotation {\n return new GeneratedCodeInfo_Annotation().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GeneratedCodeInfo_Annotation {\n return new GeneratedCodeInfo_Annotation().fromJsonString(jsonString, options);\n }\n\n static equals(a: GeneratedCodeInfo_Annotation | PlainMessage<GeneratedCodeInfo_Annotation> | undefined, b: GeneratedCodeInfo_Annotation | PlainMessage<GeneratedCodeInfo_Annotation> | undefined): boolean {\n return proto2.util.equals(GeneratedCodeInfo_Annotation, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { MessageType } from \"./message-type.js\";\nimport type { EnumType } from \"./enum.js\";\nimport type { ServiceType } from \"./service-type.js\";\n\n/**\n * IMessageTypeRegistry provides look-up for message types.\n */\nexport interface IMessageTypeRegistry {\n findMessage(typeName: string): MessageType | undefined;\n}\n\n/**\n * IEnumTypeRegistry provides look-up for enum types.\n */\nexport interface IEnumTypeRegistry {\n findEnum(typeName: string): EnumType | undefined;\n}\n\n/**\n * IServiceTypeRegistry provides look-up for service types.\n */\nexport interface IServiceTypeRegistry {\n findService(typeName: string): ServiceType | undefined;\n}\n\n/**\n * TypeRegistry is a basic type registry\n */\nexport class TypeRegistry\n implements IMessageTypeRegistry, IEnumTypeRegistry, IServiceTypeRegistry\n{\n private readonly messages: Record<string, MessageType> = {};\n private readonly enums: Record<string, EnumType> = {};\n private readonly services: Record<string, ServiceType> = {};\n\n findMessage(typeName: string): MessageType | undefined {\n return this.messages[typeName];\n }\n\n findEnum(typeName: string): EnumType | undefined {\n return this.enums[typeName];\n }\n\n findService(typeName: string): ServiceType | undefined {\n return this.services[typeName];\n }\n\n private add(type: MessageType | EnumType | ServiceType): void {\n if (\"fields\" in type) {\n this.messages[type.typeName] = type;\n } else if (\"methods\" in type) {\n this.services[type.typeName] = type;\n } else {\n this.enums[type.typeName] = type;\n }\n }\n\n static fromIterable(types: Iterable<MessageType>): TypeRegistry {\n const r = new TypeRegistry();\n for (const t of types) {\n r.add(t);\n }\n return r;\n }\n\n static fromTypes(...types: MessageType[]): TypeRegistry {\n return TypeRegistry.fromIterable(types);\n }\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {\n DescriptorProto,\n EnumDescriptorProto,\n EnumValueDescriptorProto,\n FieldDescriptorProto,\n OneofDescriptorProto,\n} from \"./google/protobuf/descriptor_pb.js\";\nimport {\n FieldDescriptorProto_Label,\n FieldDescriptorProto_Type,\n FileDescriptorProto,\n MethodDescriptorProto,\n MethodOptions_IdempotencyLevel,\n ServiceDescriptorProto,\n} from \"./google/protobuf/descriptor_pb.js\";\nimport { assert } from \"./private/assert.js\";\nimport { ScalarType } from \"./field.js\";\nimport { MethodIdempotency, MethodKind } from \"./service-type.js\";\n\n/**\n * DescriptorSet wraps a set of google.protobuf.FileDescriptorProto,\n * asserting basic expectations and providing hierarchical information.\n *\n * Note that all types are kept by their fully qualified type name\n * with a leading dot.\n */\nexport class DescriptorSet implements UnresolvedSet {\n readonly enums: Record<string, UnresolvedEnum | undefined> = {};\n readonly messages: Record<string, UnresolvedMessage | undefined> = {};\n readonly services: Record<string, UnresolvedService | undefined> = {};\n\n /**\n * May raise an error on invalid descriptors.\n */\n add(...files: FileDescriptorProto[]): void {\n for (const file of files) {\n newFile(file, this);\n }\n }\n\n listEnums(): UnresolvedEnum[] {\n return Object.values(this.enums).filter(isDefined);\n }\n\n listMessages(): UnresolvedMessage[] {\n return Object.values(this.messages).filter(isDefined);\n }\n\n listServices(): UnresolvedService[] {\n return Object.values(this.services).filter(isDefined);\n }\n}\n\nfunction isDefined<T>(v: T | undefined): v is T {\n return v !== undefined;\n}\n\ninterface UnresolvedSet {\n readonly enums: Record<string, UnresolvedEnum | undefined>;\n readonly messages: Record<string, UnresolvedMessage | undefined>;\n readonly services: Record<string, UnresolvedService | undefined>;\n}\n\nconst fieldTypeToScalarType: Record<\n FieldDescriptorProto_Type,\n ScalarType | undefined\n> = {\n [FieldDescriptorProto_Type.DOUBLE]: ScalarType.DOUBLE,\n [FieldDescriptorProto_Type.FLOAT]: ScalarType.FLOAT,\n [FieldDescriptorProto_Type.INT64]: ScalarType.INT64,\n [FieldDescriptorProto_Type.UINT64]: ScalarType.UINT64,\n [FieldDescriptorProto_Type.INT32]: ScalarType.INT32,\n [FieldDescriptorProto_Type.FIXED64]: ScalarType.FIXED64,\n [FieldDescriptorProto_Type.FIXED32]: ScalarType.FIXED32,\n [FieldDescriptorProto_Type.BOOL]: ScalarType.BOOL,\n [FieldDescriptorProto_Type.STRING]: ScalarType.STRING,\n [FieldDescriptorProto_Type.GROUP]: undefined,\n [FieldDescriptorProto_Type.MESSAGE]: undefined,\n [FieldDescriptorProto_Type.BYTES]: ScalarType.BYTES,\n [FieldDescriptorProto_Type.UINT32]: ScalarType.UINT32,\n [FieldDescriptorProto_Type.ENUM]: undefined,\n [FieldDescriptorProto_Type.SFIXED32]: ScalarType.SFIXED32,\n [FieldDescriptorProto_Type.SFIXED64]: ScalarType.SFIXED64,\n [FieldDescriptorProto_Type.SINT32]: ScalarType.SINT32,\n [FieldDescriptorProto_Type.SINT64]: ScalarType.SINT64,\n};\n\ninterface File {\n readonly proto: FileDescriptorProto;\n readonly syntax: \"proto3\" | \"proto2\";\n readonly name: string; // name of the file, excluding the .proto suffix\n toString(): string;\n}\n\nfunction newFile(proto: FileDescriptorProto, ds: UnresolvedSet): File {\n assert(proto.name, `missing file descriptor name`);\n if (proto.syntax !== undefined && proto.syntax !== \"proto3\") {\n throw new Error(`invalid descriptor: unsupported syntax: ${proto.syntax}`);\n }\n const file: File = {\n proto,\n syntax: proto.syntax === \"proto3\" ? \"proto3\" : \"proto2\",\n name: proto.name.endsWith(\".proto\")\n ? proto.name.substring(-\".proto\".length)\n : proto.name,\n toString(): string {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- we asserted above\n return `file ${this.proto.name}`;\n },\n };\n for (const messageType of proto.messageType) {\n newMessage(messageType, undefined, file, ds);\n }\n for (const enumType of proto.enumType) {\n newEnum(enumType, undefined, file, ds);\n }\n for (const extension of proto.extension) {\n newExtension(extension, undefined, file, ds);\n }\n for (const service of proto.service) {\n newService(service, file, ds);\n }\n return file;\n}\n\ninterface UnresolvedEnum {\n readonly proto: EnumDescriptorProto;\n readonly file: File;\n readonly parent: UnresolvedMessage | undefined;\n readonly name: string;\n readonly typeName: string; // fully qualified type name\n readonly protoTypeName: string; // fully qualified name with a leading dot\n readonly values: UnresolvedEnumValue[];\n\n toString(): string;\n}\n\nfunction newEnum(\n proto: EnumDescriptorProto,\n parent: UnresolvedMessage | undefined,\n file: File,\n us: UnresolvedSet\n): UnresolvedEnum {\n assert(proto.name, `invalid descriptor: missing enum descriptor name`);\n let protoTypeName: string;\n if (parent) {\n protoTypeName = `${parent.protoTypeName}.${proto.name}`;\n } else if (file.proto.package !== undefined) {\n protoTypeName = `.${file.proto.package}.${proto.name}`;\n } else {\n protoTypeName = `.${proto.name}`;\n }\n const values: UnresolvedEnumValue[] = [];\n const enumT = {\n proto,\n file,\n parent,\n name: proto.name,\n protoTypeName,\n typeName: protoTypeName.startsWith(\".\")\n ? protoTypeName.substring(1)\n : protoTypeName,\n values,\n toString(): string {\n return `enum ${this.typeName}`;\n },\n };\n us.enums[enumT.protoTypeName] = enumT;\n for (const value of proto.value) {\n values.push(newEnumValue(value, enumT));\n }\n return enumT;\n}\n\ninterface UnresolvedEnumValue {\n readonly proto: EnumValueDescriptorProto;\n readonly parent: UnresolvedEnum;\n readonly name: string;\n readonly number: number;\n\n toString(): string;\n}\n\nfunction newEnumValue(\n proto: EnumValueDescriptorProto,\n parent: UnresolvedEnum\n): UnresolvedEnumValue {\n assert(proto.name, `invalid descriptor: missing enum value descriptor name`);\n assert(\n proto.number !== undefined,\n `invalid descriptor: missing enum value descriptor number`\n );\n return {\n proto,\n name: proto.name,\n number: proto.number,\n parent,\n toString(): string {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- we asserted above\n return `enum value ${this.parent.typeName}.${this.proto.name}`;\n },\n };\n}\n\ninterface UnresolvedMessage {\n readonly proto: DescriptorProto;\n readonly file: File;\n readonly parent: UnresolvedMessage | undefined;\n readonly name: string;\n readonly typeName: string; // fully qualified type name\n readonly protoTypeName: string; // fully qualified name with a leading dot\n readonly fields: UnresolvedField[];\n readonly oneofs: UnresolvedOneof[]; // excluding synthetic oneofs for proto3 optional\n readonly nestedEnums: UnresolvedEnum[];\n readonly nestedMessages: UnresolvedMessage[]; // excluding synthetic messages like map entries\n readonly nestedExtensions: UnresolvedExtension[];\n\n toString(): string;\n}\n\nfunction newMessage(\n proto: DescriptorProto,\n parent: UnresolvedMessage | undefined,\n file: File,\n us: UnresolvedSet\n): UnresolvedMessage {\n assert(proto.name, `invalid descriptor: missing name`);\n const nestedMessages: UnresolvedMessage[] = [];\n const fields: UnresolvedField[] = [];\n const oneofs: UnresolvedOneof[] = [];\n const nestedEnums: UnresolvedEnum[] = [];\n const nestedExtensions: UnresolvedExtension[] = [];\n let protoTypeName: string;\n if (parent) {\n protoTypeName = `${parent.protoTypeName}.${proto.name}`;\n } else if (file.proto.package !== undefined) {\n protoTypeName = `.${file.proto.package}.${proto.name}`;\n } else {\n protoTypeName = `.${proto.name}`;\n }\n const message = {\n proto,\n file,\n parent,\n name: proto.name,\n typeName: protoTypeName.startsWith(\".\")\n ? protoTypeName.substring(1)\n : protoTypeName,\n protoTypeName,\n fields,\n oneofs,\n nestedEnums,\n nestedMessages,\n nestedExtensions,\n toString(): string {\n return `message ${this.typeName}`;\n },\n };\n us.messages[message.protoTypeName] = message;\n for (const nestedType of proto.nestedType) {\n nestedMessages.push(newMessage(nestedType, message, file, us));\n }\n for (const oneofDecl of proto.oneofDecl) {\n oneofs.push(newOneof(oneofDecl, message, file));\n }\n for (const field of proto.field) {\n let oneof: UnresolvedOneof | undefined = undefined;\n if (field.oneofIndex !== undefined) {\n oneof = oneofs[field.oneofIndex];\n assert(\n oneof,\n `invalid descriptor: oneof declaration index ${\n field.oneofIndex\n } specified by field #${field.number ?? -1} not found`\n );\n }\n fields.push(newField(field, message, oneof));\n }\n for (const enumType of proto.enumType) {\n nestedEnums.push(newEnum(enumType, message, file, us));\n }\n for (const extension of proto.extension) {\n nestedExtensions.push(newExtension(extension, message, file, us));\n }\n return message;\n}\n\ninterface UnresolvedField {\n readonly proto: FieldDescriptorProto;\n readonly number: number;\n readonly name: string;\n readonly type: FieldDescriptorProto_Type;\n readonly parent: UnresolvedMessage;\n readonly oneof: UnresolvedOneof | undefined;\n readonly optional: boolean; // whether the field is optional, regardless of syntax\n readonly packed: boolean; // pack this repeated field? true in case of `[packed = true]` and if packed by default because of proto3 semantics\n toString(): string;\n\n resolve(us: UnresolvedSet): ResolvedField;\n}\n\nfunction newField(\n proto: FieldDescriptorProto,\n parent: UnresolvedMessage,\n oneof: UnresolvedOneof | undefined\n): UnresolvedField {\n assert(proto.name, `invalid descriptor: missing name`);\n assert(proto.number, `invalid descriptor: missing number`);\n assert(proto.type, `invalid descriptor: missing type`);\n let optional = false;\n let packed = proto.options?.packed === true;\n switch (parent.file.syntax) {\n case \"proto2\":\n optional =\n oneof === undefined &&\n proto.label === FieldDescriptorProto_Label.OPTIONAL;\n break;\n case \"proto3\":\n optional = proto.proto3Optional === true;\n switch (proto.type) {\n case FieldDescriptorProto_Type.DOUBLE:\n case FieldDescriptorProto_Type.FLOAT:\n case FieldDescriptorProto_Type.INT64:\n case FieldDescriptorProto_Type.UINT64:\n case FieldDescriptorProto_Type.INT32:\n case FieldDescriptorProto_Type.FIXED64:\n case FieldDescriptorProto_Type.FIXED32:\n case FieldDescriptorProto_Type.UINT32:\n case FieldDescriptorProto_Type.SFIXED32:\n case FieldDescriptorProto_Type.SFIXED64:\n case FieldDescriptorProto_Type.SINT32:\n case FieldDescriptorProto_Type.SINT64:\n case FieldDescriptorProto_Type.BOOL:\n case FieldDescriptorProto_Type.ENUM:\n // From the proto3 language guide:\n // > In proto3, repeated fields of scalar numeric types are packed by default.\n // This information is incomplete - according to the conformance tests, BOOL\n // and ENUM are packed by default as well. This means only STRING and BYTES\n // are not packed by default, which makes sense because they are length-delimited.\n packed = true;\n break;\n case FieldDescriptorProto_Type.STRING:\n case FieldDescriptorProto_Type.GROUP:\n case FieldDescriptorProto_Type.MESSAGE:\n case FieldDescriptorProto_Type.BYTES:\n assert(\n !packed,\n `invalid descriptor: ${\n FieldDescriptorProto_Type[proto.type]\n } cannot be packed`\n );\n break;\n }\n break;\n }\n const field: UnresolvedField = {\n proto,\n name: proto.name,\n number: proto.number,\n type: proto.type,\n parent,\n oneof: proto.proto3Optional === true ? undefined : oneof,\n optional,\n packed,\n toString(): string {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- we asserted above\n return `field ${parent.typeName}.${proto.name}`;\n },\n resolve(us: UnresolvedSet): ResolvedField {\n return resolveField(this, us);\n },\n };\n if (oneof) {\n oneof.fields.push(field);\n }\n return field;\n}\n\ntype ResolvedField =\n | (UnresolvedField & {\n repeated: boolean;\n readonly scalarType: ScalarType;\n readonly message: undefined;\n readonly enum: undefined;\n readonly map: undefined;\n })\n | (UnresolvedField & {\n repeated: boolean;\n readonly scalarType: undefined;\n readonly message: UnresolvedMessage;\n readonly enum: undefined;\n readonly map: undefined;\n })\n | (UnresolvedField & {\n repeated: boolean;\n readonly scalarType: undefined;\n readonly message: undefined;\n readonly enum: UnresolvedEnum;\n readonly map: undefined;\n })\n | (UnresolvedField & {\n repeated: false;\n readonly scalarType: undefined;\n readonly message: undefined;\n readonly enum: undefined;\n readonly map: Map;\n });\n\ntype Map = {\n key: Exclude<\n ScalarType,\n ScalarType.FLOAT | ScalarType.DOUBLE | ScalarType.BYTES\n >;\n value:\n | { enum: UnresolvedEnum; message: undefined; scalar: undefined }\n | { enum: undefined; message: UnresolvedMessage; scalar: undefined }\n | { enum: undefined; message: undefined; scalarType: ScalarType };\n};\n\nfunction resolveField(u: UnresolvedField, us: UnresolvedSet): ResolvedField {\n const repeated = u.proto.label === FieldDescriptorProto_Label.REPEATED;\n switch (u.type) {\n case FieldDescriptorProto_Type.MESSAGE:\n case FieldDescriptorProto_Type.GROUP: {\n assert(\n u.proto.typeName,\n `invalid descriptor: ${u.toString()} has type ${\n FieldDescriptorProto_Type[u.type]\n }, but type_name is unset`\n );\n const refMessage = us.messages[u.proto.typeName];\n assert(\n refMessage,\n `invalid descriptor: cannot find type_name \"${\n u.proto.typeName\n }\" specified by ${u.toString()}`\n );\n if (refMessage.proto.options?.mapEntry !== undefined) {\n return {\n ...u,\n repeated: false,\n scalarType: undefined,\n message: undefined,\n enum: undefined,\n map: resolveMap(refMessage, us),\n };\n }\n return {\n ...u,\n repeated,\n scalarType: undefined,\n message: refMessage,\n enum: undefined,\n map: undefined,\n };\n }\n case FieldDescriptorProto_Type.ENUM: {\n assert(\n u.proto.typeName,\n `invalid descriptor: ${u.toString()} has type ${\n FieldDescriptorProto_Type[u.type]\n }, but type_name is unset`\n );\n const refEnum = us.enums[u.proto.typeName];\n assert(\n refEnum,\n `invalid descriptor: cannot find type_name \"${\n u.proto.typeName\n }\" specified by ${u.toString()}`\n );\n return {\n ...u,\n repeated,\n scalarType: undefined,\n message: undefined,\n enum: refEnum,\n map: undefined,\n };\n }\n default: {\n const scalarType = fieldTypeToScalarType[u.type];\n assert(\n scalarType,\n `invalid descriptor: unable to convert google.protobuf.FieldDescriptorProto.Type ${\n FieldDescriptorProto_Type[u.type]\n } to ScalarType`\n );\n return {\n ...u,\n repeated,\n scalarType,\n message: undefined,\n enum: undefined,\n map: undefined,\n };\n }\n }\n}\n\nfunction resolveMap(mapEntry: UnresolvedMessage, us: UnresolvedSet): Map {\n assert(\n mapEntry.proto.options?.mapEntry,\n `invalid descriptor: expected ${mapEntry.toString()} to be a map entry`\n );\n assert(\n mapEntry.fields.length === 2,\n `invalid descriptor: map entry ${mapEntry.toString()} has ${\n mapEntry.fields.length\n } fields`\n );\n const uKeyField = mapEntry.fields.find((f) => f.proto.number === 1);\n assert(\n uKeyField,\n `invalid descriptor: map entry ${mapEntry.toString()} is missing key field`\n );\n const keyField = resolveField(uKeyField, us);\n assert(\n keyField.scalarType !== undefined &&\n keyField.scalarType !== ScalarType.BYTES &&\n keyField.scalarType !== ScalarType.FLOAT &&\n keyField.scalarType !== ScalarType.DOUBLE,\n `invalid descriptor: map entry ${mapEntry.toString()} has unexpected key type ${\n FieldDescriptorProto_Type[keyField.type]\n }`\n );\n const uValueField = mapEntry.fields.find((f) => f.proto.number === 2);\n assert(\n uValueField,\n `invalid descriptor: map entry ${mapEntry.toString()} is missing value field`\n );\n const valueField = resolveField(uValueField, us);\n if (valueField.scalarType !== undefined) {\n return {\n key: keyField.scalarType,\n value: {\n scalarType: valueField.scalarType,\n enum: undefined,\n message: undefined,\n },\n };\n }\n if (valueField.enum !== undefined) {\n return {\n key: keyField.scalarType,\n value: { scalar: undefined, enum: valueField.enum, message: undefined },\n };\n }\n if (valueField.message !== undefined) {\n return {\n key: keyField.scalarType,\n value: {\n scalar: undefined,\n enum: undefined,\n message: valueField.message,\n },\n };\n }\n throw new Error(\n `invalid descriptor: map entry ${mapEntry.toString()} has unexpected value type ${\n FieldDescriptorProto_Type[keyField.type]\n }`\n );\n}\n\ninterface UnresolvedOneof {\n readonly proto: OneofDescriptorProto;\n readonly name: string;\n readonly parent: UnresolvedMessage;\n readonly file: File;\n readonly fields: UnresolvedField[];\n\n toString(): string;\n}\n\nfunction newOneof(\n proto: OneofDescriptorProto,\n parent: UnresolvedMessage,\n file: File\n): UnresolvedOneof {\n assert(proto.name, `invalid descriptor: missing oneof descriptor name`);\n return {\n proto,\n parent,\n file,\n fields: [],\n name: proto.name,\n toString(): string {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- we asserted above\n return `oneof ${parent.typeName}.${proto.name}`;\n },\n };\n}\n\ninterface UnresolvedExtension {\n readonly proto: FieldDescriptorProto;\n readonly parent: UnresolvedMessage | undefined;\n readonly file: File;\n}\n\nfunction newExtension(\n proto: FieldDescriptorProto,\n parent: UnresolvedMessage | undefined,\n file: File,\n us: UnresolvedSet // eslint-disable-line @typescript-eslint/no-unused-vars\n): UnresolvedExtension {\n assert(proto.name, `invalid descriptor: missing field descriptor name`);\n return {\n proto,\n file,\n parent,\n };\n}\n\ninterface UnresolvedService {\n readonly proto: ServiceDescriptorProto;\n readonly file: File;\n readonly methods: UnresolvedMethod[];\n readonly typeName: string;\n readonly protoTypeName: string;\n toString(): string;\n}\n\nfunction newService(\n proto: ServiceDescriptorProto,\n file: File,\n us: UnresolvedSet\n): UnresolvedService {\n assert(proto.name, `invalid descriptor: missing service descriptor name`);\n let protoTypeName: string;\n if (file.proto.package !== undefined) {\n protoTypeName = `.${file.proto.package}.${proto.name}`;\n } else {\n protoTypeName = `.${proto.name}`;\n }\n const methods: UnresolvedMethod[] = [];\n const service: UnresolvedService = {\n proto,\n file,\n typeName: protoTypeName.startsWith(\".\")\n ? protoTypeName.substring(1)\n : protoTypeName,\n protoTypeName,\n methods,\n toString(): string {\n return `service ${this.typeName}`;\n },\n };\n for (const method of proto.method) {\n methods.push(newMethod(method, service));\n }\n us.services[service.protoTypeName] = service;\n return service;\n}\n\ninterface UnresolvedMethod {\n readonly proto: MethodDescriptorProto;\n readonly parent: UnresolvedService;\n readonly name: string;\n readonly kind: MethodKind;\n readonly inputTypeName: string;\n readonly outputTypeName: string;\n readonly idempotency?: MethodIdempotency;\n toString(): string;\n}\n\nfunction newMethod(\n proto: MethodDescriptorProto,\n parent: UnresolvedService\n): UnresolvedMethod {\n assert(proto.name, `invalid descriptor: missing method descriptor name`);\n assert(proto.inputType, `invalid descriptor: missing method input type`);\n assert(proto.outputType, `invalid descriptor: missing method output type`);\n let kind: MethodKind;\n if (proto.clientStreaming === true && proto.serverStreaming === true) {\n kind = MethodKind.BiDiStreaming;\n } else if (proto.clientStreaming === true) {\n kind = MethodKind.ClientStreaming;\n } else if (proto.serverStreaming === true) {\n kind = MethodKind.ServerStreaming;\n } else {\n kind = MethodKind.Unary;\n }\n let idempotency: MethodIdempotency | undefined;\n switch (proto.options?.idempotencyLevel) {\n case MethodOptions_IdempotencyLevel.IDEMPOTENT:\n idempotency = MethodIdempotency.Idempotent;\n break;\n case MethodOptions_IdempotencyLevel.NO_SIDE_EFFECTS:\n idempotency = MethodIdempotency.NoSideEffects;\n break;\n case MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN:\n case undefined:\n idempotency = undefined;\n break;\n }\n const inputTypeName = proto.inputType.startsWith(\".\")\n ? proto.inputType.substring(1)\n : proto.inputType;\n const outputTypeName = proto.outputType.startsWith(\".\")\n ? proto.outputType.substring(1)\n : proto.outputType;\n return {\n proto,\n parent,\n name: proto.name,\n kind,\n idempotency,\n inputTypeName,\n outputTypeName,\n toString(): string {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- we asserted above\n return `rpc ${this.parent.typeName}.${proto.name}`;\n },\n };\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/timestamp.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, JsonWriteOptions, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\nimport {protoInt64} from \"../../proto-int64.js\";\n\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(time(NULL));\n * timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n * struct timeval tv;\n * gettimeofday(&tv, NULL);\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(tv.tv_sec);\n * timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n * FILETIME ft;\n * GetSystemTimeAsFileTime(&ft);\n * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n * Timestamp timestamp;\n * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n * long millis = System.currentTimeMillis();\n *\n * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n * .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n * Instant now = Instant.now();\n *\n * Timestamp timestamp =\n * Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n * .setNanos(now.getNano()).build();\n *\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n * timestamp = Timestamp()\n * timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D\n * ) to obtain a formatter capable of generating timestamps in this format.\n *\n *\n *\n * @generated from message google.protobuf.Timestamp\n */\nexport class Timestamp extends Message<Timestamp> {\n /**\n * Represents seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n *\n * @generated from field: int64 seconds = 1;\n */\n seconds = protoInt64.zero;\n\n /**\n * Non-negative fractions of a second at nanosecond resolution. Negative\n * second values with fractions must still have non-negative nanos values\n * that count forward in time. Must be from 0 to 999,999,999\n * inclusive.\n *\n * @generated from field: int32 nanos = 2;\n */\n nanos = 0;\n\n constructor(data?: PartialMessage<Timestamp>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode google.protobuf.Timestamp from JSON: ${proto3.json.debug(json)}`);\n }\n const matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);\n if (!matches) {\n throw new Error(`cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string`);\n }\n const ms = Date.parse(matches[1] + \"-\" + matches[2] + \"-\" + matches[3] + \"T\" + matches[4] + \":\" + matches[5] + \":\" + matches[6] + (matches[8] ? matches[8] : \"Z\"));\n if (Number.isNaN(ms)) {\n throw new Error(`cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string`);\n }\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\")) {\n throw new Error(`cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);\n }\n this.seconds = protoInt64.parse(ms / 1000);\n this.nanos = 0;\n if (matches[7]) {\n this.nanos = (parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) - 1000000000);\n }\n return this;\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n const ms = Number(this.seconds) * 1000;\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") || ms > Date.parse(\"9999-12-31T23:59:59Z\")) {\n throw new Error(`cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);\n }\n if (this.nanos < 0) {\n throw new Error(`cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative`);\n }\n let z = \"Z\";\n if (this.nanos > 0) {\n const nanosStr = (this.nanos + 1000000000).toString().substring(1);\n if (nanosStr.substring(3) === \"000000\") {\n z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n } else if (nanosStr.substring(6) === \"000\") {\n z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n } else {\n z = \".\" + nanosStr + \"Z\";\n }\n }\n return new Date(ms).toISOString().replace(\".000Z\", z);\n }\n\n toDate(): Date {\n return new Date(Number(this.seconds) * 1000 + Math.ceil(this.nanos / 1000000));\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Timestamp\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static now(): Timestamp {\n return Timestamp.fromDate(new Date())\n }\n\n static fromDate(date: Date): Timestamp {\n const ms = date.getTime();\n return new Timestamp({\n seconds: protoInt64.parse(Math.floor(ms / 1000)),\n nanos: (ms % 1000) * 1000000,\n });\n }\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Timestamp {\n return new Timestamp().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Timestamp {\n return new Timestamp().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Timestamp {\n return new Timestamp().fromJsonString(jsonString, options);\n }\n\n static equals(a: Timestamp | PlainMessage<Timestamp> | undefined, b: Timestamp | PlainMessage<Timestamp> | undefined): boolean {\n return proto3.util.equals(Timestamp, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/duration.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, JsonWriteOptions, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\nimport {protoInt64} from \"../../proto-int64.js\";\n\n/**\n * A Duration represents a signed, fixed-length span of time represented\n * as a count of seconds and fractions of seconds at nanosecond\n * resolution. It is independent of any calendar and concepts like \"day\"\n * or \"month\". It is related to Timestamp in that the difference between\n * two Timestamp values is a Duration and it can be added or subtracted\n * from a Timestamp. Range is approximately +-10,000 years.\n *\n * # Examples\n *\n * Example 1: Compute Duration from two Timestamps in pseudo code.\n *\n * Timestamp start = ...;\n * Timestamp end = ...;\n * Duration duration = ...;\n *\n * duration.seconds = end.seconds - start.seconds;\n * duration.nanos = end.nanos - start.nanos;\n *\n * if (duration.seconds < 0 && duration.nanos > 0) {\n * duration.seconds += 1;\n * duration.nanos -= 1000000000;\n * } else if (duration.seconds > 0 && duration.nanos < 0) {\n * duration.seconds -= 1;\n * duration.nanos += 1000000000;\n * }\n *\n * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.\n *\n * Timestamp start = ...;\n * Duration duration = ...;\n * Timestamp end = ...;\n *\n * end.seconds = start.seconds + duration.seconds;\n * end.nanos = start.nanos + duration.nanos;\n *\n * if (end.nanos < 0) {\n * end.seconds -= 1;\n * end.nanos += 1000000000;\n * } else if (end.nanos >= 1000000000) {\n * end.seconds += 1;\n * end.nanos -= 1000000000;\n * }\n *\n * Example 3: Compute Duration from datetime.timedelta in Python.\n *\n * td = datetime.timedelta(days=3, minutes=10)\n * duration = Duration()\n * duration.FromTimedelta(td)\n *\n * # JSON Mapping\n *\n * In JSON format, the Duration type is encoded as a string rather than an\n * object, where the string ends in the suffix \"s\" (indicating seconds) and\n * is preceded by the number of seconds, with nanoseconds expressed as\n * fractional seconds. For example, 3 seconds with 0 nanoseconds should be\n * encoded in JSON format as \"3s\", while 3 seconds and 1 nanosecond should\n * be expressed in JSON format as \"3.000000001s\", and 3 seconds and 1\n * microsecond should be expressed in JSON format as \"3.000001s\".\n *\n *\n *\n * @generated from message google.protobuf.Duration\n */\nexport class Duration extends Message<Duration> {\n /**\n * Signed seconds of the span of time. Must be from -315,576,000,000\n * to +315,576,000,000 inclusive. Note: these bounds are computed from:\n * 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years\n *\n * @generated from field: int64 seconds = 1;\n */\n seconds = protoInt64.zero;\n\n /**\n * Signed fractions of a second at nanosecond resolution of the span\n * of time. Durations less than one second are represented with a 0\n * `seconds` field and a positive or negative `nanos` field. For durations\n * of one second or more, a non-zero value for the `nanos` field must be\n * of the same sign as the `seconds` field. Must be from -999,999,999\n * to +999,999,999 inclusive.\n *\n * @generated from field: int32 nanos = 2;\n */\n nanos = 0;\n\n constructor(data?: PartialMessage<Duration>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode google.protobuf.Duration from JSON: ${proto3.json.debug(json)}`);\n }\n const match = json.match(/^(-?[0-9]+)(?:\\.([0-9]+))?s/);\n if (match === null) {\n throw new Error(`cannot decode google.protobuf.Duration from JSON: ${proto3.json.debug(json)}`);\n }\n const longSeconds = Number(match[1]);\n if (longSeconds > 315576000000 || longSeconds < -315576000000) {\n throw new Error(`cannot decode google.protobuf.Duration from JSON: ${proto3.json.debug(json)}`);\n }\n this.seconds = protoInt64.parse(longSeconds);\n if (typeof match[2] == \"string\") {\n const nanosStr = match[2] + \"0\".repeat(9 - match[2].length);\n this.nanos = parseInt(nanosStr);\n if (longSeconds < 0n) {\n this.nanos = -this.nanos;\n }\n }\n return this;\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n if (Number(this.seconds) > 315576000000 || Number(this.seconds) < -315576000000) {\n throw new Error(`cannot encode google.protobuf.Duration to JSON: value out of range`);\n }\n let text = this.seconds.toString();\n if (this.nanos !== 0) {\n let nanosStr = Math.abs(this.nanos).toString();\n nanosStr = \"0\".repeat(9 - nanosStr.length) + nanosStr;\n if (nanosStr.substring(3) === \"000000\") {\n nanosStr = nanosStr.substring(0, 3);\n } else if (nanosStr.substring(6) === \"000\") {\n nanosStr = nanosStr.substring(0, 6);\n }\n text += \".\" + nanosStr;\n }\n return text + \"s\";\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Duration\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"seconds\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n { no: 2, name: \"nanos\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Duration {\n return new Duration().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Duration {\n return new Duration().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Duration {\n return new Duration().fromJsonString(jsonString, options);\n }\n\n static equals(a: Duration | PlainMessage<Duration> | undefined, b: Duration | PlainMessage<Duration> | undefined): boolean {\n return proto3.util.equals(Duration, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/any.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, JsonWriteOptions, MessageType, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\n\n/**\n * `Any` contains an arbitrary serialized protocol buffer message along with a\n * URL that describes the type of the serialized message.\n *\n * Protobuf library provides support to pack/unpack Any values in the form\n * of utility functions or additional generated methods of the Any type.\n *\n * Example 1: Pack and unpack a message in C++.\n *\n * Foo foo = ...;\n * Any any;\n * any.PackFrom(foo);\n * ...\n * if (any.UnpackTo(&foo)) {\n * ...\n * }\n *\n * Example 2: Pack and unpack a message in Java.\n *\n * Foo foo = ...;\n * Any any = Any.pack(foo);\n * ...\n * if (any.is(Foo.class)) {\n * foo = any.unpack(Foo.class);\n * }\n *\n * Example 3: Pack and unpack a message in Python.\n *\n * foo = Foo(...)\n * any = Any()\n * any.Pack(foo)\n * ...\n * if any.Is(Foo.DESCRIPTOR):\n * any.Unpack(foo)\n * ...\n *\n * Example 4: Pack and unpack a message in Go\n *\n * foo := &pb.Foo{...}\n * any, err := anypb.New(foo)\n * if err != nil {\n * ...\n * }\n * ...\n * foo := &pb.Foo{}\n * if err := any.UnmarshalTo(foo); err != nil {\n * ...\n * }\n *\n * The pack methods provided by protobuf library will by default use\n * 'type.googleapis.com/full.type.name' as the type URL and the unpack\n * methods only use the fully qualified type name after the last '/'\n * in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n * name \"y.z\".\n *\n *\n * JSON\n *\n * The JSON representation of an `Any` value uses the regular\n * representation of the deserialized, embedded message, with an\n * additional field `@type` which contains the type URL. Example:\n *\n * package google.profile;\n * message Person {\n * string first_name = 1;\n * string last_name = 2;\n * }\n *\n * {\n * \"@type\": \"type.googleapis.com/google.profile.Person\",\n * \"firstName\": <string>,\n * \"lastName\": <string>\n * }\n *\n * If the embedded message type is well-known and has a custom JSON\n * representation, that representation will be embedded adding a field\n * `value` which holds the custom JSON in addition to the `@type`\n * field. Example (for message [google.protobuf.Duration][]):\n *\n * {\n * \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n * \"value\": \"1.212s\"\n * }\n *\n *\n * @generated from message google.protobuf.Any\n */\nexport class Any extends Message<Any> {\n /**\n * A URL/resource name that uniquely identifies the type of the serialized\n * protocol buffer message. This string must contain at least\n * one \"/\" character. The last segment of the URL's path must represent\n * the fully qualified name of the type (as in\n * `path/google.protobuf.Duration`). The name should be in a canonical form\n * (e.g., leading \".\" is not accepted).\n *\n * In practice, teams usually precompile into the binary all types that they\n * expect it to use in the context of Any. However, for URLs which use the\n * scheme `http`, `https`, or no scheme, one can optionally set up a type\n * server that maps type URLs to message definitions as follows:\n *\n * * If no scheme is provided, `https` is assumed.\n * * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n * value in binary format, or produce an error.\n * * Applications are allowed to cache lookup results based on the\n * URL, or have them precompiled into a binary to avoid any\n * lookup. Therefore, binary compatibility needs to be preserved\n * on changes to types. (Use versioned type names to manage\n * breaking changes.)\n *\n * Note: this functionality is not currently available in the official\n * protobuf release, and it is not used for type URLs beginning with\n * type.googleapis.com.\n *\n * Schemes other than `http`, `https` (or the empty scheme) might be\n * used with implementation specific semantics.\n *\n *\n * @generated from field: string type_url = 1;\n */\n typeUrl = \"\";\n\n /**\n * Must be a valid serialized protocol buffer of the above specified type.\n *\n * @generated from field: bytes value = 2;\n */\n value = new Uint8Array(0);\n\n constructor(data?: PartialMessage<Any>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n if (this.typeUrl === \"\") {\n return {};\n }\n const typeName = this.typeUrlToName(this.typeUrl);\n const messageType = options?.typeRegistry?.findMessage(typeName);\n if (!messageType) {\n throw new Error(`cannot encode message google.protobuf.Any to JSON: \"${this.typeUrl}\" is not in the type registry`);\n }\n const message = messageType.fromBinary(this.value);\n let json = message.toJson(options);\n if (typeName.startsWith(\"google.protobuf.\") || (json === null || Array.isArray(json) || typeof json !== \"object\")) {\n json = {value: json};\n }\n json[\"@type\"] = this.typeUrl;\n return json;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n if (json === null || Array.isArray(json) || typeof json != \"object\") {\n throw new Error(`cannot decode message google.protobuf.Any from JSON: expected object but got ${json === null ? \"null\" : Array.isArray(json) ? \"array\" : typeof json}`);\n }\n const typeUrl = json[\"@type\"];\n if (typeof typeUrl != \"string\" || typeUrl == \"\") {\n throw new Error(`cannot decode message google.protobuf.Any from JSON: \"@type\" is empty`);\n }\n const typeName = this.typeUrlToName(typeUrl), messageType = options?.typeRegistry?.findMessage(typeName);\n if (!messageType) {\n throw new Error(`cannot decode message google.protobuf.Any from JSON: ${typeUrl} is not in the type registry`);\n }\n let message;\n if (typeName.startsWith(\"google.protobuf.\") && Object.prototype.hasOwnProperty.call(json, \"value\")) {\n message = messageType.fromJson(json[\"value\"], options);\n } else {\n const copy = Object.assign({}, json);\n delete copy[\"@type\"];\n message = messageType.fromJson(copy, options);\n }\n this.packFrom(message);\n return this;\n }\n\n packFrom(message: Message): void {\n this.value = message.toBinary();\n this.typeUrl = this.typeNameToUrl(message.getType().typeName);\n }\n\n unpackTo(target: Message): boolean {\n if (!this.is(target.getType())) {\n return false;\n }\n target.fromBinary(this.value);\n return true;\n }\n\n is(type: MessageType): boolean {\n return this.typeUrl === this.typeNameToUrl(type.typeName);\n }\n\n private typeNameToUrl(name: string): string {\n return `type.googleapis.com/${name}`;\n }\n\n private typeUrlToName(url: string): string {\n if (!url.length) {\n throw new Error(`invalid type url: ${url}`);\n }\n const slash = url.lastIndexOf(\"/\");\n const name = slash > 0 ? url.substring(slash + 1) : url;\n if (!name.length) {\n throw new Error(`invalid type url: ${url}`);\n }\n return name;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Any\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"type_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n ]);\n\n static pack(message: Message): Any {\n const any = new Any();\n any.packFrom(message);\n return any;\n }\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Any {\n return new Any().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Any {\n return new Any().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Any {\n return new Any().fromJsonString(jsonString, options);\n }\n\n static equals(a: Any | PlainMessage<Any> | undefined, b: Any | PlainMessage<Any> | undefined): boolean {\n return proto3.util.equals(Any, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/empty.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\n\n/**\n * A generic empty message that you can re-use to avoid defining duplicated\n * empty messages in your APIs. A typical example is to use it as the request\n * or the response type of an API method. For instance:\n *\n * service Foo {\n * rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n * }\n *\n * The JSON representation for `Empty` is empty JSON object `{}`.\n *\n * @generated from message google.protobuf.Empty\n */\nexport class Empty extends Message<Empty> {\n constructor(data?: PartialMessage<Empty>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Empty\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Empty {\n return new Empty().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Empty {\n return new Empty().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Empty {\n return new Empty().fromJsonString(jsonString, options);\n }\n\n static equals(a: Empty | PlainMessage<Empty> | undefined, b: Empty | PlainMessage<Empty> | undefined): boolean {\n return proto3.util.equals(Empty, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/field_mask.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, JsonWriteOptions, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\n\n/**\n * `FieldMask` represents a set of symbolic field paths, for example:\n *\n * paths: \"f.a\"\n * paths: \"f.b.d\"\n *\n * Here `f` represents a field in some root message, `a` and `b`\n * fields in the message found in `f`, and `d` a field found in the\n * message in `f.b`.\n *\n * Field masks are used to specify a subset of fields that should be\n * returned by a get operation or modified by an update operation.\n * Field masks also have a custom JSON encoding (see below).\n *\n * # Field Masks in Projections\n *\n * When used in the context of a projection, a response message or\n * sub-message is filtered by the API to only contain those fields as\n * specified in the mask. For example, if the mask in the previous\n * example is applied to a response message as follows:\n *\n * f {\n * a : 22\n * b {\n * d : 1\n * x : 2\n * }\n * y : 13\n * }\n * z: 8\n *\n * The result will not contain specific values for fields x,y and z\n * (their value will be set to the default, and omitted in proto text\n * output):\n *\n *\n * f {\n * a : 22\n * b {\n * d : 1\n * }\n * }\n *\n * A repeated field is not allowed except at the last position of a\n * paths string.\n *\n * If a FieldMask object is not present in a get operation, the\n * operation applies to all fields (as if a FieldMask of all fields\n * had been specified).\n *\n * Note that a field mask does not necessarily apply to the\n * top-level response message. In case of a REST get operation, the\n * field mask applies directly to the response, but in case of a REST\n * list operation, the mask instead applies to each individual message\n * in the returned resource list. In case of a REST custom method,\n * other definitions may be used. Where the mask applies will be\n * clearly documented together with its declaration in the API. In\n * any case, the effect on the returned resource/resources is required\n * behavior for APIs.\n *\n * # Field Masks in Update Operations\n *\n * A field mask in update operations specifies which fields of the\n * targeted resource are going to be updated. The API is required\n * to only change the values of the fields as specified in the mask\n * and leave the others untouched. If a resource is passed in to\n * describe the updated values, the API ignores the values of all\n * fields not covered by the mask.\n *\n * If a repeated field is specified for an update operation, new values will\n * be appended to the existing repeated field in the target resource. Note that\n * a repeated field is only allowed in the last position of a `paths` string.\n *\n * If a sub-message is specified in the last position of the field mask for an\n * update operation, then new value will be merged into the existing sub-message\n * in the target resource.\n *\n * For example, given the target message:\n *\n * f {\n * b {\n * d: 1\n * x: 2\n * }\n * c: [1]\n * }\n *\n * And an update message:\n *\n * f {\n * b {\n * d: 10\n * }\n * c: [2]\n * }\n *\n * then if the field mask is:\n *\n * paths: [\"f.b\", \"f.c\"]\n *\n * then the result will be:\n *\n * f {\n * b {\n * d: 10\n * x: 2\n * }\n * c: [1, 2]\n * }\n *\n * An implementation may provide options to override this default behavior for\n * repeated and message fields.\n *\n * In order to reset a field's value to the default, the field must\n * be in the mask and set to the default value in the provided resource.\n * Hence, in order to reset all fields of a resource, provide a default\n * instance of the resource and set all fields in the mask, or do\n * not provide a mask as described below.\n *\n * If a field mask is not present on update, the operation applies to\n * all fields (as if a field mask of all fields has been specified).\n * Note that in the presence of schema evolution, this may mean that\n * fields the client does not know and has therefore not filled into\n * the request will be reset to their default. If this is unwanted\n * behavior, a specific service may require a client to always specify\n * a field mask, producing an error if not.\n *\n * As with get operations, the location of the resource which\n * describes the updated values in the request message depends on the\n * operation kind. In any case, the effect of the field mask is\n * required to be honored by the API.\n *\n * ## Considerations for HTTP REST\n *\n * The HTTP kind of an update operation which uses a field mask must\n * be set to PATCH instead of PUT in order to satisfy HTTP semantics\n * (PUT must only be used for full updates).\n *\n * # JSON Encoding of Field Masks\n *\n * In JSON, a field mask is encoded as a single string where paths are\n * separated by a comma. Fields name in each path are converted\n * to/from lower-camel naming conventions.\n *\n * As an example, consider the following message declarations:\n *\n * message Profile {\n * User user = 1;\n * Photo photo = 2;\n * }\n * message User {\n * string display_name = 1;\n * string address = 2;\n * }\n *\n * In proto a field mask for `Profile` may look as such:\n *\n * mask {\n * paths: \"user.display_name\"\n * paths: \"photo\"\n * }\n *\n * In JSON, the same mask is represented as below:\n *\n * {\n * mask: \"user.displayName,photo\"\n * }\n *\n * # Field Masks and Oneof Fields\n *\n * Field masks treat fields in oneofs just as regular fields. Consider the\n * following message:\n *\n * message SampleMessage {\n * oneof test_oneof {\n * string name = 4;\n * SubMessage sub_message = 9;\n * }\n * }\n *\n * The field mask can be:\n *\n * mask {\n * paths: \"name\"\n * }\n *\n * Or:\n *\n * mask {\n * paths: \"sub_message\"\n * }\n *\n * Note that oneof type names (\"test_oneof\" in this case) cannot be used in\n * paths.\n *\n * ## Field Mask Verification\n *\n * The implementation of any API method which has a FieldMask type field in the\n * request should verify the included field paths, and return an\n * `INVALID_ARGUMENT` error if any path is unmappable.\n *\n * @generated from message google.protobuf.FieldMask\n */\nexport class FieldMask extends Message<FieldMask> {\n /**\n * The set of field mask paths.\n *\n * @generated from field: repeated string paths = 1;\n */\n paths: string[] = [];\n\n constructor(data?: PartialMessage<FieldMask>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n // Converts snake_case to protoCamelCase according to the convention\n // used by protoc to convert a field name to a JSON name.\n function protoCamelCase(snakeCase: string): string {\n let capNext = false;\n const b = [];\n for (let i = 0; i < snakeCase.length; i++) {\n let c = snakeCase.charAt(i);\n switch (c) {\n case '_':\n capNext = true;\n break;\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n b.push(c);\n capNext = false;\n break;\n default:\n if (capNext) {\n capNext = false;\n c = c.toUpperCase();\n }\n b.push(c);\n break;\n }\n }\n return b.join('');\n }\n return this.paths.map(p => {\n if (p.match(/_[0-9]?_/g) || p.match(/[A-Z]/g)) {\n throw new Error(\"cannot decode google.protobuf.FieldMask from JSON: lowerCamelCase of path name \\\"\" + p + \"\\\" is irreversible\");\n }\n return protoCamelCase(p);\n }).join(\",\");\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n if (typeof json !== \"string\") {\n throw new Error(\"cannot decode google.protobuf.FieldMask from JSON: \" + proto3.json.debug(json));\n }\n if (json === \"\") {\n return this;\n }\n function camelToSnake (str: string) {\n if (str.includes(\"_\")) {\n throw new Error(\"cannot decode google.protobuf.FieldMask from JSON: path names must be lowerCamelCase\");\n }\n const sc = str.replace(/[A-Z]/g, letter => \"_\" + letter.toLowerCase());\n return (sc[0] === \"_\") ? sc.substring(1) : sc;\n }\n this.paths = json.split(\",\").map(camelToSnake);\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.FieldMask\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"paths\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FieldMask {\n return new FieldMask().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FieldMask {\n return new FieldMask().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FieldMask {\n return new FieldMask().fromJsonString(jsonString, options);\n }\n\n static equals(a: FieldMask | PlainMessage<FieldMask> | undefined, b: FieldMask | PlainMessage<FieldMask> | undefined): boolean {\n return proto3.util.equals(FieldMask, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/struct.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonObject, JsonReadOptions, JsonValue, JsonWriteOptions, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\n\n/**\n * `NullValue` is a singleton enumeration to represent the null value for the\n * `Value` type union.\n *\n * The JSON representation for `NullValue` is JSON `null`.\n *\n * @generated from enum google.protobuf.NullValue\n */\nexport enum NullValue {\n /**\n * Null value.\n *\n * @generated from enum value: NULL_VALUE = 0;\n */\n NULL_VALUE = 0,\n}\n// Retrieve enum metadata with: proto3.getEnumType(NullValue)\nproto3.util.setEnumType(NullValue, \"google.protobuf.NullValue\", [\n { no: 0, name: \"NULL_VALUE\" },\n]);\n\n/**\n * `Struct` represents a structured data value, consisting of fields\n * which map to dynamically typed values. In some languages, `Struct`\n * might be supported by a native representation. For example, in\n * scripting languages like JS a struct is represented as an\n * object. The details of that representation are described together\n * with the proto support for the language.\n *\n * The JSON representation for `Struct` is JSON object.\n *\n * @generated from message google.protobuf.Struct\n */\nexport class Struct extends Message<Struct> {\n /**\n * Unordered map of dynamically typed values.\n *\n * @generated from field: map<string, google.protobuf.Value> fields = 1;\n */\n fields: { [key: string]: Value } = {};\n\n constructor(data?: PartialMessage<Struct>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n const json: JsonObject = {}\n for (const [k, v] of Object.entries(this.fields)) {\n json[k] = v.toJson(options);\n }\n return json;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n if (typeof json != \"object\" || json == null || Array.isArray(json)) {\n throw new Error(\"cannot decode google.protobuf.Struct from JSON \" + proto3.json.debug(json));\n }\n for (const [k, v] of Object.entries(json)) {\n this.fields[k] = Value.fromJson(v);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Struct\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"fields\", kind: \"map\", K: 9 /* ScalarType.STRING */, V: {kind: \"message\", T: Value} },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Struct {\n return new Struct().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Struct {\n return new Struct().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Struct {\n return new Struct().fromJsonString(jsonString, options);\n }\n\n static equals(a: Struct | PlainMessage<Struct> | undefined, b: Struct | PlainMessage<Struct> | undefined): boolean {\n return proto3.util.equals(Struct, a, b);\n }\n}\n\n/**\n * `Value` represents a dynamically typed value which can be either\n * null, a number, a string, a boolean, a recursive struct value, or a\n * list of values. A producer of value is expected to set one of these\n * variants. Absence of any variant indicates an error.\n *\n * The JSON representation for `Value` is JSON value.\n *\n * @generated from message google.protobuf.Value\n */\nexport class Value extends Message<Value> {\n /**\n * The kind of value.\n *\n * @generated from oneof google.protobuf.Value.kind\n */\n kind: {\n /**\n * Represents a null value.\n *\n * @generated from field: google.protobuf.NullValue null_value = 1;\n */\n value: NullValue;\n case: \"nullValue\";\n } | {\n /**\n * Represents a double value.\n *\n * @generated from field: double number_value = 2;\n */\n value: number;\n case: \"numberValue\";\n } | {\n /**\n * Represents a string value.\n *\n * @generated from field: string string_value = 3;\n */\n value: string;\n case: \"stringValue\";\n } | {\n /**\n * Represents a boolean value.\n *\n * @generated from field: bool bool_value = 4;\n */\n value: boolean;\n case: \"boolValue\";\n } | {\n /**\n * Represents a structured value.\n *\n * @generated from field: google.protobuf.Struct struct_value = 5;\n */\n value: Struct;\n case: \"structValue\";\n } | {\n /**\n * Represents a repeated `Value`.\n *\n * @generated from field: google.protobuf.ListValue list_value = 6;\n */\n value: ListValue;\n case: \"listValue\";\n } | { case: undefined; value?: undefined } = { case: undefined };\n\n constructor(data?: PartialMessage<Value>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n switch (this.kind.case) {\n case \"nullValue\":\n return null;\n case \"boolValue\":\n case \"numberValue\":\n case \"stringValue\":\n return this.kind.value;\n case \"structValue\":\n case \"listValue\":\n return this.kind.value.toJson({...options, emitDefaultValues: true});\n }\n throw new Error(\"google.protobuf.Value must have a value\");\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n switch (typeof json) {\n case \"number\":\n this.kind = { case: \"numberValue\", value: json };\n break;\n case \"string\":\n this.kind = { case: \"stringValue\", value: json };\n break;\n case \"boolean\":\n this.kind = { case: \"boolValue\", value: json };\n break;\n case \"object\":\n if (json === null) {\n this.kind = { case: \"nullValue\", value: NullValue.NULL_VALUE };\n } else if (Array.isArray(json)) {\n this.kind = { case: \"listValue\", value: ListValue.fromJson(json) };\n } else {\n this.kind = { case: \"structValue\", value: Struct.fromJson(json) };\n }\n break;\n default:\n throw new Error(\"cannot decode google.protobuf.Value from JSON \" + proto3.json.debug(json));\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Value\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"null_value\", kind: \"enum\", T: proto3.getEnumType(NullValue), oneof: \"kind\" },\n { no: 2, name: \"number_value\", kind: \"scalar\", T: 1 /* ScalarType.DOUBLE */, oneof: \"kind\" },\n { no: 3, name: \"string_value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, oneof: \"kind\" },\n { no: 4, name: \"bool_value\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */, oneof: \"kind\" },\n { no: 5, name: \"struct_value\", kind: \"message\", T: Struct, oneof: \"kind\" },\n { no: 6, name: \"list_value\", kind: \"message\", T: ListValue, oneof: \"kind\" },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Value {\n return new Value().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Value {\n return new Value().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Value {\n return new Value().fromJsonString(jsonString, options);\n }\n\n static equals(a: Value | PlainMessage<Value> | undefined, b: Value | PlainMessage<Value> | undefined): boolean {\n return proto3.util.equals(Value, a, b);\n }\n}\n\n/**\n * `ListValue` is a wrapper around a repeated field of values.\n *\n * The JSON representation for `ListValue` is JSON array.\n *\n * @generated from message google.protobuf.ListValue\n */\nexport class ListValue extends Message<ListValue> {\n /**\n * Repeated field of dynamically typed values.\n *\n * @generated from field: repeated google.protobuf.Value values = 1;\n */\n values: Value[] = [];\n\n constructor(data?: PartialMessage<ListValue>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return this.values.map(v => v.toJson());\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n if (!Array.isArray(json)) {\n throw new Error(\"cannot decode google.protobuf.ListValue from JSON \" + proto3.json.debug(json));\n }\n for (let e of json) {\n this.values.push(Value.fromJson(e));\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.ListValue\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"values\", kind: \"message\", T: Value, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListValue {\n return new ListValue().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListValue {\n return new ListValue().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListValue {\n return new ListValue().fromJsonString(jsonString, options);\n }\n\n static equals(a: ListValue | PlainMessage<ListValue> | undefined, b: ListValue | PlainMessage<ListValue> | undefined): boolean {\n return proto3.util.equals(ListValue, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Wrappers for primitive (non-message) types. These types are useful\n// for embedding primitives in the `google.protobuf.Any` type and for places\n// where we need to distinguish between the absence of a primitive\n// typed field and its default value.\n//\n// These wrappers have no meaningful use within repeated fields as they lack\n// the ability to detect presence on individual elements.\n// These wrappers have no meaningful use within a map or a oneof since\n// individual entries of a map or fields of a oneof can already detect presence.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/wrappers.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, JsonWriteOptions, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\nimport {ScalarType} from \"../../field.js\";\nimport {protoInt64} from \"../../proto-int64.js\";\n\n/**\n * Wrapper message for `double`.\n *\n * The JSON representation for `DoubleValue` is JSON number.\n *\n * @generated from message google.protobuf.DoubleValue\n */\nexport class DoubleValue extends Message<DoubleValue> {\n /**\n * The double value.\n *\n * @generated from field: double value = 1;\n */\n value = 0;\n\n constructor(data?: PartialMessage<DoubleValue>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.DOUBLE, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.DOUBLE, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.DoubleValue from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.DoubleValue\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 1 /* ScalarType.DOUBLE */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: number | DoubleValue): DoubleValue {\n return value instanceof DoubleValue ? value : new DoubleValue({value});\n },\n unwrapField(value: DoubleValue): number {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DoubleValue {\n return new DoubleValue().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DoubleValue {\n return new DoubleValue().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DoubleValue {\n return new DoubleValue().fromJsonString(jsonString, options);\n }\n\n static equals(a: DoubleValue | PlainMessage<DoubleValue> | undefined, b: DoubleValue | PlainMessage<DoubleValue> | undefined): boolean {\n return proto3.util.equals(DoubleValue, a, b);\n }\n}\n\n/**\n * Wrapper message for `float`.\n *\n * The JSON representation for `FloatValue` is JSON number.\n *\n * @generated from message google.protobuf.FloatValue\n */\nexport class FloatValue extends Message<FloatValue> {\n /**\n * The float value.\n *\n * @generated from field: float value = 1;\n */\n value = 0;\n\n constructor(data?: PartialMessage<FloatValue>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.FLOAT, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.FLOAT, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.FloatValue from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.FloatValue\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 2 /* ScalarType.FLOAT */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: number | FloatValue): FloatValue {\n return value instanceof FloatValue ? value : new FloatValue({value});\n },\n unwrapField(value: FloatValue): number {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FloatValue {\n return new FloatValue().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): FloatValue {\n return new FloatValue().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): FloatValue {\n return new FloatValue().fromJsonString(jsonString, options);\n }\n\n static equals(a: FloatValue | PlainMessage<FloatValue> | undefined, b: FloatValue | PlainMessage<FloatValue> | undefined): boolean {\n return proto3.util.equals(FloatValue, a, b);\n }\n}\n\n/**\n * Wrapper message for `int64`.\n *\n * The JSON representation for `Int64Value` is JSON string.\n *\n * @generated from message google.protobuf.Int64Value\n */\nexport class Int64Value extends Message<Int64Value> {\n /**\n * The int64 value.\n *\n * @generated from field: int64 value = 1;\n */\n value = protoInt64.zero;\n\n constructor(data?: PartialMessage<Int64Value>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.INT64, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.INT64, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.Int64Value from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Int64Value\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 3 /* ScalarType.INT64 */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: bigint | Int64Value): Int64Value {\n return value instanceof Int64Value ? value : new Int64Value({value});\n },\n unwrapField(value: Int64Value): bigint {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Int64Value {\n return new Int64Value().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Int64Value {\n return new Int64Value().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Int64Value {\n return new Int64Value().fromJsonString(jsonString, options);\n }\n\n static equals(a: Int64Value | PlainMessage<Int64Value> | undefined, b: Int64Value | PlainMessage<Int64Value> | undefined): boolean {\n return proto3.util.equals(Int64Value, a, b);\n }\n}\n\n/**\n * Wrapper message for `uint64`.\n *\n * The JSON representation for `UInt64Value` is JSON string.\n *\n * @generated from message google.protobuf.UInt64Value\n */\nexport class UInt64Value extends Message<UInt64Value> {\n /**\n * The uint64 value.\n *\n * @generated from field: uint64 value = 1;\n */\n value = protoInt64.zero;\n\n constructor(data?: PartialMessage<UInt64Value>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.UINT64, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.UINT64, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.UInt64Value from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.UInt64Value\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: bigint | UInt64Value): UInt64Value {\n return value instanceof UInt64Value ? value : new UInt64Value({value});\n },\n unwrapField(value: UInt64Value): bigint {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UInt64Value {\n return new UInt64Value().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UInt64Value {\n return new UInt64Value().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UInt64Value {\n return new UInt64Value().fromJsonString(jsonString, options);\n }\n\n static equals(a: UInt64Value | PlainMessage<UInt64Value> | undefined, b: UInt64Value | PlainMessage<UInt64Value> | undefined): boolean {\n return proto3.util.equals(UInt64Value, a, b);\n }\n}\n\n/**\n * Wrapper message for `int32`.\n *\n * The JSON representation for `Int32Value` is JSON number.\n *\n * @generated from message google.protobuf.Int32Value\n */\nexport class Int32Value extends Message<Int32Value> {\n /**\n * The int32 value.\n *\n * @generated from field: int32 value = 1;\n */\n value = 0;\n\n constructor(data?: PartialMessage<Int32Value>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.INT32, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.INT32, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.Int32Value from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Int32Value\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: number | Int32Value): Int32Value {\n return value instanceof Int32Value ? value : new Int32Value({value});\n },\n unwrapField(value: Int32Value): number {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Int32Value {\n return new Int32Value().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Int32Value {\n return new Int32Value().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Int32Value {\n return new Int32Value().fromJsonString(jsonString, options);\n }\n\n static equals(a: Int32Value | PlainMessage<Int32Value> | undefined, b: Int32Value | PlainMessage<Int32Value> | undefined): boolean {\n return proto3.util.equals(Int32Value, a, b);\n }\n}\n\n/**\n * Wrapper message for `uint32`.\n *\n * The JSON representation for `UInt32Value` is JSON number.\n *\n * @generated from message google.protobuf.UInt32Value\n */\nexport class UInt32Value extends Message<UInt32Value> {\n /**\n * The uint32 value.\n *\n * @generated from field: uint32 value = 1;\n */\n value = 0;\n\n constructor(data?: PartialMessage<UInt32Value>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.UINT32, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.UINT32, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.UInt32Value from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.UInt32Value\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 13 /* ScalarType.UINT32 */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: number | UInt32Value): UInt32Value {\n return value instanceof UInt32Value ? value : new UInt32Value({value});\n },\n unwrapField(value: UInt32Value): number {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UInt32Value {\n return new UInt32Value().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UInt32Value {\n return new UInt32Value().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UInt32Value {\n return new UInt32Value().fromJsonString(jsonString, options);\n }\n\n static equals(a: UInt32Value | PlainMessage<UInt32Value> | undefined, b: UInt32Value | PlainMessage<UInt32Value> | undefined): boolean {\n return proto3.util.equals(UInt32Value, a, b);\n }\n}\n\n/**\n * Wrapper message for `bool`.\n *\n * The JSON representation for `BoolValue` is JSON `true` and `false`.\n *\n * @generated from message google.protobuf.BoolValue\n */\nexport class BoolValue extends Message<BoolValue> {\n /**\n * The bool value.\n *\n * @generated from field: bool value = 1;\n */\n value = false;\n\n constructor(data?: PartialMessage<BoolValue>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.BOOL, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.BOOL, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.BoolValue from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.BoolValue\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: boolean | BoolValue): BoolValue {\n return value instanceof BoolValue ? value : new BoolValue({value});\n },\n unwrapField(value: BoolValue): boolean {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): BoolValue {\n return new BoolValue().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): BoolValue {\n return new BoolValue().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): BoolValue {\n return new BoolValue().fromJsonString(jsonString, options);\n }\n\n static equals(a: BoolValue | PlainMessage<BoolValue> | undefined, b: BoolValue | PlainMessage<BoolValue> | undefined): boolean {\n return proto3.util.equals(BoolValue, a, b);\n }\n}\n\n/**\n * Wrapper message for `string`.\n *\n * The JSON representation for `StringValue` is JSON string.\n *\n * @generated from message google.protobuf.StringValue\n */\nexport class StringValue extends Message<StringValue> {\n /**\n * The string value.\n *\n * @generated from field: string value = 1;\n */\n value = \"\";\n\n constructor(data?: PartialMessage<StringValue>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.STRING, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.STRING, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.StringValue from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.StringValue\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: string | StringValue): StringValue {\n return value instanceof StringValue ? value : new StringValue({value});\n },\n unwrapField(value: StringValue): string {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): StringValue {\n return new StringValue().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): StringValue {\n return new StringValue().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): StringValue {\n return new StringValue().fromJsonString(jsonString, options);\n }\n\n static equals(a: StringValue | PlainMessage<StringValue> | undefined, b: StringValue | PlainMessage<StringValue> | undefined): boolean {\n return proto3.util.equals(StringValue, a, b);\n }\n}\n\n/**\n * Wrapper message for `bytes`.\n *\n * The JSON representation for `BytesValue` is JSON string.\n *\n * @generated from message google.protobuf.BytesValue\n */\nexport class BytesValue extends Message<BytesValue> {\n /**\n * The bytes value.\n *\n * @generated from field: bytes value = 1;\n */\n value = new Uint8Array(0);\n\n constructor(data?: PartialMessage<BytesValue>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n override toJson(options?: Partial<JsonWriteOptions>): JsonValue {\n return proto3.json.writeScalar(ScalarType.BYTES, this.value, true)!;\n }\n\n override fromJson(json: JsonValue, options?: Partial<JsonReadOptions>): this {\n try {\n this.value = proto3.json.readScalar(ScalarType.BYTES, json);\n } catch (e) {\n let m = `cannot decode message google.protobuf.BytesValue from JSON\"`;\n if (e instanceof Error && e.message.length > 0) {\n m += `: ${e.message}`\n }\n throw new Error(m);\n }\n return this;\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.BytesValue\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"value\", kind: \"scalar\", T: 12 /* ScalarType.BYTES */ },\n ]);\n\n static readonly fieldWrapper = {\n wrapField(value: Uint8Array | BytesValue): BytesValue {\n return value instanceof BytesValue ? value : new BytesValue({value});\n },\n unwrapField(value: BytesValue): Uint8Array {\n return value.value;\n }\n };\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): BytesValue {\n return new BytesValue().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): BytesValue {\n return new BytesValue().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): BytesValue {\n return new BytesValue().fromJsonString(jsonString, options);\n }\n\n static equals(a: BytesValue | PlainMessage<BytesValue> | undefined, b: BytesValue | PlainMessage<BytesValue> | undefined): boolean {\n return proto3.util.equals(BytesValue, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type { FileDescriptorProto } from \"./google/protobuf/descriptor_pb.js\";\nimport { assert } from \"./private/assert.js\";\nimport type { MessageType } from \"./message-type.js\";\nimport { proto3 } from \"./proto3.js\";\nimport { proto2 } from \"./proto2.js\";\nimport type { PartialFieldInfo } from \"./field.js\";\nimport { ScalarType } from \"./field.js\";\nimport type { EnumType, EnumValueInfo } from \"./enum.js\";\nimport { DescriptorSet } from \"./descriptor-set.js\";\nimport { protoInt64 } from \"./proto-int64.js\";\nimport type {\n IEnumTypeRegistry,\n IMessageTypeRegistry,\n IServiceTypeRegistry,\n} from \"./type-registry.js\";\nimport type { MethodInfo, ServiceType } from \"./service-type.js\";\nimport { makeMethodName } from \"./private/names.js\";\nimport { Timestamp } from \"./google/protobuf/timestamp_pb.js\";\nimport { Duration } from \"./google/protobuf/duration_pb.js\";\nimport { Any } from \"./google/protobuf/any_pb.js\";\nimport { Empty } from \"./google/protobuf/empty_pb.js\";\nimport { FieldMask } from \"./google/protobuf/field_mask_pb.js\";\nimport {\n ListValue,\n NullValue,\n Struct,\n Value,\n} from \"./google/protobuf/struct_pb.js\";\nimport { getEnumType } from \"./private/enum.js\";\nimport {\n BoolValue,\n BytesValue,\n DoubleValue,\n FloatValue,\n Int32Value,\n Int64Value,\n StringValue,\n UInt32Value,\n UInt64Value,\n} from \"./google/protobuf/wrappers_pb.js\";\nimport { FileDescriptorSet } from \"./google/protobuf/descriptor_pb.js\";\nimport type { PartialMessage } from \"./message.js\";\n\n// well-known message types with specialized JSON representation\nconst wkMessages = [\n Any,\n Duration,\n Empty,\n FieldMask,\n Struct,\n Value,\n ListValue,\n Timestamp,\n Duration,\n DoubleValue,\n FloatValue,\n Int64Value,\n Int32Value,\n UInt32Value,\n UInt64Value,\n BoolValue,\n StringValue,\n BytesValue,\n];\n\n// well-known enum types with specialized JSON representation\nconst wkEnums = [getEnumType(NullValue)];\n\n/**\n * DescriptorRegistry is a type registry that dynamically creates types\n * from a set of google.protobuf.FileDescriptorProto.\n *\n * By default, all well-known types with a specialized JSON representation\n * are replaced with their generated counterpart in this package.\n */\nexport class DescriptorRegistry\n implements IMessageTypeRegistry, IEnumTypeRegistry, IServiceTypeRegistry\n{\n private readonly ds: DescriptorSet;\n\n private readonly enums: Record<string, EnumType | undefined> = {};\n private readonly messages: Record<string, MessageType | undefined> = {};\n private readonly services: Record<string, ServiceType | undefined> = {};\n\n constructor(descriptorSet?: DescriptorSet, replaceWkt = true) {\n this.ds = descriptorSet ?? new DescriptorSet();\n if (replaceWkt) {\n for (const mt of wkMessages) {\n this.messages[\".\" + mt.typeName] = mt;\n }\n for (const et of wkEnums) {\n this.enums[\".\" + et.typeName] = et;\n }\n }\n }\n\n /**\n * Conveniently create a DescriptorRegistry from a FileDescriptorSet\n * instance or a FileDescriptorSet in binary format.\n */\n static fromFileDescriptorSet(\n bytesOrSet:\n | Uint8Array\n | FileDescriptorSet\n | PartialMessage<FileDescriptorSet>\n ): DescriptorRegistry {\n const set =\n bytesOrSet instanceof Uint8Array\n ? FileDescriptorSet.fromBinary(bytesOrSet)\n : new FileDescriptorSet(bytesOrSet);\n const dr = new DescriptorRegistry();\n dr.add(...set.file);\n return dr;\n }\n\n /**\n * May raise an error on invalid descriptors.\n */\n add(...files: FileDescriptorProto[]): void {\n this.ds.add(...files);\n }\n\n /**\n * May raise an error on invalid descriptors.\n */\n findEnum(typeName: string): EnumType | undefined {\n const protoTypeName = \".\" + typeName;\n const existing = this.enums[protoTypeName];\n if (existing) {\n return existing;\n }\n const raw = this.ds.enums[protoTypeName];\n if (!raw) {\n return undefined;\n }\n const runtime = raw.file.syntax == \"proto3\" ? proto3 : proto2;\n const type = runtime.makeEnumType(\n typeName,\n raw.values.map(\n (u): EnumValueInfo => ({\n no: u.number,\n name: u.name,\n })\n ),\n {}\n );\n this.enums[protoTypeName] = type;\n return type;\n }\n\n /**\n * May raise an error on invalid descriptors.\n */\n findMessage(typeName: string): MessageType | undefined {\n const protoTypeName = \".\" + typeName;\n const existing = this.messages[protoTypeName];\n if (existing) {\n return existing;\n }\n const raw = this.ds.messages[protoTypeName];\n if (!raw) {\n return undefined;\n }\n const runtime = raw.file.syntax == \"proto3\" ? proto3 : proto2;\n const fields: PartialFieldInfo[] = [];\n const type = runtime.makeMessageType(typeName, () => fields, {\n localName: makeTypeLocalName(raw),\n });\n this.messages[protoTypeName] = type;\n for (const field of raw.fields.map((f) => f.resolve(this.ds))) {\n const fieldInfo = makeFieldInfo(field, this);\n fields.push(fieldInfo);\n }\n return type;\n }\n\n /**\n * May raise an error on invalid descriptors.\n */\n findService(typeName: string): ServiceType | undefined {\n const protoTypeName = \".\" + typeName;\n const existing = this.services[protoTypeName];\n if (existing) {\n return existing;\n }\n const raw = this.ds.services[protoTypeName];\n if (!raw) {\n return undefined;\n }\n const methods: Record<string, MethodInfo> = {};\n for (const u of raw.methods) {\n const it = this.findMessage(u.inputTypeName);\n const ot = this.findMessage(u.outputTypeName);\n assert(it, `message \"${u.inputTypeName}\" for ${u.toString()} not found`);\n assert(\n ot,\n `output message \"${u.outputTypeName}\" for ${u.toString()} not found`\n );\n const m = {\n name: u.name,\n localName: makeMethodName(u.name),\n I: it,\n O: ot,\n kind: u.kind,\n idempotency: u.idempotency,\n options: {},\n };\n methods[m.localName] = m;\n }\n return (this.services[protoTypeName] = {\n typeName: raw.typeName,\n methods,\n });\n }\n}\n\nfunction makeTypeLocalName(type: UnresolvedEnum | UnresolvedMessage): string {\n const typeName = type.typeName;\n const packagePrefix = (type.file.proto.package ?? \"\") + \".\";\n if (!typeName.startsWith(packagePrefix)) {\n return type.name;\n }\n return typeName.substring(packagePrefix.length).split(\".\").join(\"_\");\n}\n\ninterface Resolver {\n findEnum(typeName: string): EnumType | undefined;\n\n findMessage(typeName: string): MessageType | undefined;\n}\n\ntype ResolvedField = ReturnType<\n Exclude<\n DescriptorSet[\"messages\"][string],\n undefined\n >[\"fields\"][number][\"resolve\"]\n>;\ntype Map = Exclude<ResolvedField[\"map\"], undefined>;\ntype UnresolvedMessage = Exclude<ResolvedField[\"message\"], undefined>;\ntype UnresolvedEnum = Exclude<ResolvedField[\"enum\"], undefined>;\n\nfunction makeFieldInfo(\n field: ResolvedField,\n resolver: Resolver\n): PartialFieldInfo {\n if (field.map !== undefined) {\n return makeMapFieldInfo(field, resolver);\n }\n if (field.message) {\n return makeMessageFieldInfo(field, resolver);\n }\n const fi: PartialFieldInfo = field.enum\n ? makeEnumFieldInfo(field, resolver)\n : makeScalarFieldInfo(field);\n fi.default = parseDefaultValue(field);\n return fi;\n}\n\nfunction makeMapFieldInfo(\n field: ResolvedField & { map: Map },\n resolver: Resolver\n): PartialFieldInfo {\n const base = {\n kind: \"map\",\n name: field.name,\n no: field.number,\n K: field.map.key,\n } as const;\n if (field.map.value.message) {\n const messageType = resolver.findMessage(field.map.value.message.typeName);\n assert(\n messageType,\n `message \"${\n field.map.value.message.typeName\n }\" for ${field.toString()} not found`\n );\n return {\n ...base,\n V: {\n kind: \"message\",\n T: messageType,\n },\n };\n }\n if (field.map.value.enum) {\n const enumType = resolver.findEnum(field.map.value.enum.typeName);\n assert(\n enumType,\n `enum \"${\n field.map.value.enum.typeName\n }\" for ${field.toString()} not found`\n );\n return {\n ...base,\n V: {\n kind: \"enum\",\n T: enumType,\n },\n };\n }\n return {\n ...base,\n V: {\n kind: \"scalar\",\n T: field.map.value.scalarType,\n },\n };\n}\n\nfunction makeScalarFieldInfo(\n field: ResolvedField & { scalarType: ScalarType }\n): PartialFieldInfo {\n const base = {\n no: field.number,\n name: field.name,\n kind: \"scalar\",\n T: field.scalarType,\n } as const;\n if (field.repeated) {\n return {\n ...base,\n repeated: true,\n packed: field.packed,\n oneof: undefined,\n T: field.scalarType,\n };\n }\n if (field.oneof) {\n return {\n ...base,\n oneof: field.oneof.name,\n };\n }\n if (field.optional) {\n return {\n ...base,\n opt: true,\n };\n }\n return base;\n}\n\nfunction makeMessageFieldInfo(\n field: ResolvedField & { message: UnresolvedMessage },\n resolver: Resolver\n): PartialFieldInfo {\n const messageType = resolver.findMessage(field.message.typeName);\n assert(\n messageType,\n `message \"${field.message.typeName}\" for ${field.toString()} not found`\n );\n const base = {\n no: field.number,\n name: field.name,\n kind: \"message\",\n T: messageType,\n } as const;\n if (field.repeated) {\n return {\n ...base,\n repeated: true,\n packed: field.packed,\n oneof: undefined,\n };\n }\n if (field.oneof) {\n return {\n ...base,\n oneof: field.oneof.name,\n };\n }\n if (field.optional) {\n return {\n ...base,\n opt: true,\n };\n }\n return base;\n}\n\nfunction makeEnumFieldInfo(\n field: ResolvedField & { enum: UnresolvedEnum },\n resolver: Resolver\n): PartialFieldInfo {\n const enumType = resolver.findEnum(field.enum.typeName);\n assert(\n enumType,\n `message \"${field.enum.typeName}\" for ${field.toString()} not found`\n );\n const base = {\n no: field.number,\n name: field.name,\n kind: \"enum\",\n T: enumType,\n } as const;\n if (field.repeated) {\n return {\n ...base,\n repeated: true,\n packed: field.packed,\n oneof: undefined,\n };\n }\n if (field.oneof) {\n return {\n ...base,\n oneof: field.oneof.name,\n };\n }\n if (field.optional) {\n return {\n ...base,\n opt: true,\n };\n }\n return base;\n}\n\nfunction parseDefaultValue(\n field: ResolvedField\n): number | boolean | string | bigint | Uint8Array | undefined {\n const d = field.proto.defaultValue;\n if (d === undefined) {\n return undefined;\n }\n if (field.enum) {\n const enumValue = field.enum.values.find((v) => v.name === d);\n assert(enumValue, `cannot parse ${field.toString()} default value: ${d}`);\n return enumValue.number;\n }\n if (field.scalarType) {\n switch (field.scalarType) {\n case ScalarType.STRING:\n return d;\n case ScalarType.BYTES: {\n const u = unescapeBytesDefaultValue(d);\n if (u === false) {\n throw new Error(\n `cannot parse ${field.toString()} default value: ${d}`\n );\n }\n return u;\n }\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n return protoInt64.parse(d);\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n return protoInt64.uParse(d);\n case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n switch (d) {\n case \"inf\":\n return Number.POSITIVE_INFINITY;\n case \"-inf\":\n return Number.NEGATIVE_INFINITY;\n case \"nan\":\n return Number.NaN;\n default:\n return parseFloat(d);\n }\n case ScalarType.BOOL:\n return Boolean(d);\n case ScalarType.INT32:\n case ScalarType.UINT32:\n case ScalarType.SINT32:\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n return parseInt(d, 10);\n }\n }\n return undefined;\n}\n\n// unescapeBytesDefaultValue parses a text-encoded default value (proto2) of a\n// BYTES field.\nfunction unescapeBytesDefaultValue(str: string): Uint8Array | false {\n const b: number[] = [];\n const input = {\n tail: str,\n c: \"\",\n next(): boolean {\n if (this.tail.length == 0) {\n return false;\n }\n this.c = this.tail[0];\n this.tail = this.tail.substring(1);\n return true;\n },\n take(n: number): string | false {\n if (this.tail.length >= n) {\n const r = this.tail.substring(0, n);\n this.tail = this.tail.substring(n);\n return r;\n }\n return false;\n },\n };\n while (input.next()) {\n switch (input.c) {\n case \"\\\\\":\n if (input.next()) {\n switch (input.c as string) {\n case \"\\\\\":\n b.push(input.c.charCodeAt(0));\n break;\n case \"b\":\n b.push(0x08);\n break;\n case \"f\":\n b.push(0x0c);\n break;\n case \"n\":\n b.push(0x0a);\n break;\n case \"r\":\n b.push(0x0d);\n break;\n case \"t\":\n b.push(0x09);\n break;\n case \"v\":\n b.push(0x0b);\n break;\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\": {\n const s = input.c;\n const t = input.take(2);\n if (t === false) {\n return false;\n }\n const n = parseInt(s + t, 8);\n if (isNaN(n)) {\n return false;\n }\n b.push(n);\n break;\n }\n case \"x\": {\n const s = input.c;\n const t = input.take(2);\n if (t === false) {\n return false;\n }\n const n = parseInt(s + t, 16);\n if (isNaN(n)) {\n return false;\n }\n b.push(n);\n break;\n }\n case \"u\": {\n const s = input.c;\n const t = input.take(4);\n if (t === false) {\n return false;\n }\n const n = parseInt(s + t, 16);\n if (isNaN(n)) {\n return false;\n }\n const chunk = new Uint8Array(4);\n const view = new DataView(chunk.buffer);\n view.setInt32(0, n, true);\n b.push(chunk[0], chunk[1], chunk[2], chunk[3]);\n break;\n }\n case \"U\": {\n const s = input.c;\n const t = input.take(8);\n if (t === false) {\n return false;\n }\n const tc = protoInt64.uEnc(s + t);\n const chunk = new Uint8Array(8);\n const view = new DataView(chunk.buffer);\n view.setInt32(0, tc.lo, true);\n view.setInt32(4, tc.hi, true);\n b.push(\n chunk[0],\n chunk[1],\n chunk[2],\n chunk[3],\n chunk[4],\n chunk[5],\n chunk[6],\n chunk[7]\n );\n break;\n }\n }\n }\n break;\n default:\n b.push(input.c.charCodeAt(0));\n }\n }\n return new Uint8Array(b);\n}\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// Author: kenton@google.com (Kenton Varda)\n//\n// WARNING: The plugin interface is currently EXPERIMENTAL and is subject to\n// change.\n//\n// protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is\n// just a program that reads a CodeGeneratorRequest from stdin and writes a\n// CodeGeneratorResponse to stdout.\n//\n// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead\n// of dealing with the raw protocol defined here.\n//\n// A plugin executable needs only to be placed somewhere in the path. The\n// plugin should be named \"protoc-gen-$NAME\", and will then be used when the\n// flag \"--${NAME}_out\" is passed to protoc.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/compiler/plugin.proto (package google.protobuf.compiler, syntax proto2)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage} from \"../../../index-runtime.js\";\nimport {Message} from \"../../../message.js\";\nimport {proto2} from \"../../../proto2.js\";\nimport {FileDescriptorProto, GeneratedCodeInfo} from \"../descriptor_pb.js\";\n\n/**\n * The version number of protocol compiler.\n *\n * @generated from message google.protobuf.compiler.Version\n */\nexport class Version extends Message<Version> {\n /**\n * @generated from field: optional int32 major = 1;\n */\n major?: number;\n\n /**\n * @generated from field: optional int32 minor = 2;\n */\n minor?: number;\n\n /**\n * @generated from field: optional int32 patch = 3;\n */\n patch?: number;\n\n /**\n * A suffix for alpha, beta or rc release, e.g., \"alpha-1\", \"rc2\". It should\n * be empty for mainline stable releases.\n *\n * @generated from field: optional string suffix = 4;\n */\n suffix?: string;\n\n constructor(data?: PartialMessage<Version>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.compiler.Version\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"major\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 2, name: \"minor\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 3, name: \"patch\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */, opt: true },\n { no: 4, name: \"suffix\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Version {\n return new Version().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Version {\n return new Version().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Version {\n return new Version().fromJsonString(jsonString, options);\n }\n\n static equals(a: Version | PlainMessage<Version> | undefined, b: Version | PlainMessage<Version> | undefined): boolean {\n return proto2.util.equals(Version, a, b);\n }\n}\n\n/**\n * An encoded CodeGeneratorRequest is written to the plugin's stdin.\n *\n * @generated from message google.protobuf.compiler.CodeGeneratorRequest\n */\nexport class CodeGeneratorRequest extends Message<CodeGeneratorRequest> {\n /**\n * The .proto files that were explicitly listed on the command-line. The\n * code generator should generate code only for these files. Each file's\n * descriptor will be included in proto_file, below.\n *\n * @generated from field: repeated string file_to_generate = 1;\n */\n fileToGenerate: string[] = [];\n\n /**\n * The generator parameter passed on the command-line.\n *\n * @generated from field: optional string parameter = 2;\n */\n parameter?: string;\n\n /**\n * FileDescriptorProtos for all files in files_to_generate and everything\n * they import. The files will appear in topological order, so each file\n * appears before any file that imports it.\n *\n * protoc guarantees that all proto_files will be written after\n * the fields above, even though this is not technically guaranteed by the\n * protobuf wire format. This theoretically could allow a plugin to stream\n * in the FileDescriptorProtos and handle them one by one rather than read\n * the entire set into memory at once. However, as of this writing, this\n * is not similarly optimized on protoc's end -- it will store all fields in\n * memory at once before sending them to the plugin.\n *\n * Type names of fields and extensions in the FileDescriptorProto are always\n * fully qualified.\n *\n * @generated from field: repeated google.protobuf.FileDescriptorProto proto_file = 15;\n */\n protoFile: FileDescriptorProto[] = [];\n\n /**\n * The version number of protocol compiler.\n *\n * @generated from field: optional google.protobuf.compiler.Version compiler_version = 3;\n */\n compilerVersion?: Version;\n\n constructor(data?: PartialMessage<CodeGeneratorRequest>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.compiler.CodeGeneratorRequest\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"file_to_generate\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 2, name: \"parameter\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 15, name: \"proto_file\", kind: \"message\", T: FileDescriptorProto, repeated: true },\n { no: 3, name: \"compiler_version\", kind: \"message\", T: Version, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CodeGeneratorRequest {\n return new CodeGeneratorRequest().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CodeGeneratorRequest {\n return new CodeGeneratorRequest().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CodeGeneratorRequest {\n return new CodeGeneratorRequest().fromJsonString(jsonString, options);\n }\n\n static equals(a: CodeGeneratorRequest | PlainMessage<CodeGeneratorRequest> | undefined, b: CodeGeneratorRequest | PlainMessage<CodeGeneratorRequest> | undefined): boolean {\n return proto2.util.equals(CodeGeneratorRequest, a, b);\n }\n}\n\n/**\n * The plugin writes an encoded CodeGeneratorResponse to stdout.\n *\n * @generated from message google.protobuf.compiler.CodeGeneratorResponse\n */\nexport class CodeGeneratorResponse extends Message<CodeGeneratorResponse> {\n /**\n * Error message. If non-empty, code generation failed. The plugin process\n * should exit with status code zero even if it reports an error in this way.\n *\n * This should be used to indicate errors in .proto files which prevent the\n * code generator from generating correct code. Errors which indicate a\n * problem in protoc itself -- such as the input CodeGeneratorRequest being\n * unparseable -- should be reported by writing a message to stderr and\n * exiting with a non-zero status code.\n *\n * @generated from field: optional string error = 1;\n */\n error?: string;\n\n /**\n * A bitmask of supported features that the code generator supports.\n * This is a bitwise \"or\" of values from the Feature enum.\n *\n * @generated from field: optional uint64 supported_features = 2;\n */\n supportedFeatures?: bigint;\n\n /**\n * @generated from field: repeated google.protobuf.compiler.CodeGeneratorResponse.File file = 15;\n */\n file: CodeGeneratorResponse_File[] = [];\n\n constructor(data?: PartialMessage<CodeGeneratorResponse>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.compiler.CodeGeneratorResponse\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"error\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"supported_features\", kind: \"scalar\", T: 4 /* ScalarType.UINT64 */, opt: true },\n { no: 15, name: \"file\", kind: \"message\", T: CodeGeneratorResponse_File, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CodeGeneratorResponse {\n return new CodeGeneratorResponse().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CodeGeneratorResponse {\n return new CodeGeneratorResponse().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CodeGeneratorResponse {\n return new CodeGeneratorResponse().fromJsonString(jsonString, options);\n }\n\n static equals(a: CodeGeneratorResponse | PlainMessage<CodeGeneratorResponse> | undefined, b: CodeGeneratorResponse | PlainMessage<CodeGeneratorResponse> | undefined): boolean {\n return proto2.util.equals(CodeGeneratorResponse, a, b);\n }\n}\n\n/**\n * Sync with code_generator.h.\n *\n * @generated from enum google.protobuf.compiler.CodeGeneratorResponse.Feature\n */\nexport enum CodeGeneratorResponse_Feature {\n /**\n * @generated from enum value: FEATURE_NONE = 0;\n */\n NONE = 0,\n\n /**\n * @generated from enum value: FEATURE_PROTO3_OPTIONAL = 1;\n */\n PROTO3_OPTIONAL = 1,\n}\n// Retrieve enum metadata with: proto2.getEnumType(CodeGeneratorResponse_Feature)\nproto2.util.setEnumType(CodeGeneratorResponse_Feature, \"google.protobuf.compiler.CodeGeneratorResponse.Feature\", [\n { no: 0, name: \"FEATURE_NONE\" },\n { no: 1, name: \"FEATURE_PROTO3_OPTIONAL\" },\n]);\n\n/**\n * Represents a single generated file.\n *\n * @generated from message google.protobuf.compiler.CodeGeneratorResponse.File\n */\nexport class CodeGeneratorResponse_File extends Message<CodeGeneratorResponse_File> {\n /**\n * The file name, relative to the output directory. The name must not\n * contain \".\" or \"..\" components and must be relative, not be absolute (so,\n * the file cannot lie outside the output directory). \"/\" must be used as\n * the path separator, not \"\\\".\n *\n * If the name is omitted, the content will be appended to the previous\n * file. This allows the generator to break large files into small chunks,\n * and allows the generated text to be streamed back to protoc so that large\n * files need not reside completely in memory at one time. Note that as of\n * this writing protoc does not optimize for this -- it will read the entire\n * CodeGeneratorResponse before writing files to disk.\n *\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * If non-empty, indicates that the named file should already exist, and the\n * content here is to be inserted into that file at a defined insertion\n * point. This feature allows a code generator to extend the output\n * produced by another code generator. The original generator may provide\n * insertion points by placing special annotations in the file that look\n * like:\n * @@protoc_insertion_point(NAME)\n * The annotation can have arbitrary text before and after it on the line,\n * which allows it to be placed in a comment. NAME should be replaced with\n * an identifier naming the point -- this is what other generators will use\n * as the insertion_point. Code inserted at this point will be placed\n * immediately above the line containing the insertion point (thus multiple\n * insertions to the same point will come out in the order they were added).\n * The double-@ is intended to make it unlikely that the generated code\n * could contain things that look like insertion points by accident.\n *\n * For example, the C++ code generator places the following line in the\n * .pb.h files that it generates:\n * // @@protoc_insertion_point(namespace_scope)\n * This line appears within the scope of the file's package namespace, but\n * outside of any particular class. Another plugin can then specify the\n * insertion_point \"namespace_scope\" to generate additional classes or\n * other declarations that should be placed in this scope.\n *\n * Note that if the line containing the insertion point begins with\n * whitespace, the same whitespace will be added to every line of the\n * inserted text. This is useful for languages like Python, where\n * indentation matters. In these languages, the insertion point comment\n * should be indented the same amount as any inserted code will need to be\n * in order to work correctly in that context.\n *\n * The code generator that generates the initial file and the one which\n * inserts into it must both run as part of a single invocation of protoc.\n * Code generators are executed in the order in which they appear on the\n * command line.\n *\n * If |insertion_point| is present, |name| must also be present.\n *\n * @generated from field: optional string insertion_point = 2;\n */\n insertionPoint?: string;\n\n /**\n * The file contents.\n *\n * @generated from field: optional string content = 15;\n */\n content?: string;\n\n /**\n * Information describing the file content being inserted. If an insertion\n * point is used, this information will be appropriately offset and inserted\n * into the code generation metadata for the generated files.\n *\n * @generated from field: optional google.protobuf.GeneratedCodeInfo generated_code_info = 16;\n */\n generatedCodeInfo?: GeneratedCodeInfo;\n\n constructor(data?: PartialMessage<CodeGeneratorResponse_File>) {\n super();\n proto2.util.initPartial(data, this);\n }\n\n static readonly runtime = proto2;\n static readonly typeName = \"google.protobuf.compiler.CodeGeneratorResponse.File\";\n static readonly fields: FieldList = proto2.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 2, name: \"insertion_point\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 15, name: \"content\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, opt: true },\n { no: 16, name: \"generated_code_info\", kind: \"message\", T: GeneratedCodeInfo, opt: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CodeGeneratorResponse_File {\n return new CodeGeneratorResponse_File().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CodeGeneratorResponse_File {\n return new CodeGeneratorResponse_File().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CodeGeneratorResponse_File {\n return new CodeGeneratorResponse_File().fromJsonString(jsonString, options);\n }\n\n static equals(a: CodeGeneratorResponse_File | PlainMessage<CodeGeneratorResponse_File> | undefined, b: CodeGeneratorResponse_File | PlainMessage<CodeGeneratorResponse_File> | undefined): boolean {\n return proto2.util.equals(CodeGeneratorResponse_File, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/type.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\nimport {SourceContext} from \"./source_context_pb.js\";\nimport {Any} from \"./any_pb.js\";\n\n/**\n * The syntax in which a protocol buffer element is defined.\n *\n * @generated from enum google.protobuf.Syntax\n */\nexport enum Syntax {\n /**\n * Syntax `proto2`.\n *\n * @generated from enum value: SYNTAX_PROTO2 = 0;\n */\n PROTO2 = 0,\n\n /**\n * Syntax `proto3`.\n *\n * @generated from enum value: SYNTAX_PROTO3 = 1;\n */\n PROTO3 = 1,\n}\n// Retrieve enum metadata with: proto3.getEnumType(Syntax)\nproto3.util.setEnumType(Syntax, \"google.protobuf.Syntax\", [\n { no: 0, name: \"SYNTAX_PROTO2\" },\n { no: 1, name: \"SYNTAX_PROTO3\" },\n]);\n\n/**\n * A protocol buffer message type.\n *\n * @generated from message google.protobuf.Type\n */\nexport class Type extends Message<Type> {\n /**\n * The fully qualified message name.\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * The list of fields.\n *\n * @generated from field: repeated google.protobuf.Field fields = 2;\n */\n fields: Field[] = [];\n\n /**\n * The list of types appearing in `oneof` definitions in this type.\n *\n * @generated from field: repeated string oneofs = 3;\n */\n oneofs: string[] = [];\n\n /**\n * The protocol buffer options.\n *\n * @generated from field: repeated google.protobuf.Option options = 4;\n */\n options: Option[] = [];\n\n /**\n * The source context.\n *\n * @generated from field: google.protobuf.SourceContext source_context = 5;\n */\n sourceContext?: SourceContext;\n\n /**\n * The source syntax.\n *\n * @generated from field: google.protobuf.Syntax syntax = 6;\n */\n syntax = Syntax.PROTO2;\n\n constructor(data?: PartialMessage<Type>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Type\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"fields\", kind: \"message\", T: Field, repeated: true },\n { no: 3, name: \"oneofs\", kind: \"scalar\", T: 9 /* ScalarType.STRING */, repeated: true },\n { no: 4, name: \"options\", kind: \"message\", T: Option, repeated: true },\n { no: 5, name: \"source_context\", kind: \"message\", T: SourceContext },\n { no: 6, name: \"syntax\", kind: \"enum\", T: proto3.getEnumType(Syntax) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Type {\n return new Type().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Type {\n return new Type().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Type {\n return new Type().fromJsonString(jsonString, options);\n }\n\n static equals(a: Type | PlainMessage<Type> | undefined, b: Type | PlainMessage<Type> | undefined): boolean {\n return proto3.util.equals(Type, a, b);\n }\n}\n\n/**\n * A single field of a message type.\n *\n * @generated from message google.protobuf.Field\n */\nexport class Field extends Message<Field> {\n /**\n * The field type.\n *\n * @generated from field: google.protobuf.Field.Kind kind = 1;\n */\n kind = Field_Kind.TYPE_UNKNOWN;\n\n /**\n * The field cardinality.\n *\n * @generated from field: google.protobuf.Field.Cardinality cardinality = 2;\n */\n cardinality = Field_Cardinality.UNKNOWN;\n\n /**\n * The field number.\n *\n * @generated from field: int32 number = 3;\n */\n number = 0;\n\n /**\n * The field name.\n *\n * @generated from field: string name = 4;\n */\n name = \"\";\n\n /**\n * The field type URL, without the scheme, for message or enumeration\n * types. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`.\n *\n * @generated from field: string type_url = 6;\n */\n typeUrl = \"\";\n\n /**\n * The index of the field type in `Type.oneofs`, for message or enumeration\n * types. The first type has index 1; zero means the type is not in the list.\n *\n * @generated from field: int32 oneof_index = 7;\n */\n oneofIndex = 0;\n\n /**\n * Whether to use alternative packed wire representation.\n *\n * @generated from field: bool packed = 8;\n */\n packed = false;\n\n /**\n * The protocol buffer options.\n *\n * @generated from field: repeated google.protobuf.Option options = 9;\n */\n options: Option[] = [];\n\n /**\n * The field JSON name.\n *\n * @generated from field: string json_name = 10;\n */\n jsonName = \"\";\n\n /**\n * The string value of the default value of this field. Proto2 syntax only.\n *\n * @generated from field: string default_value = 11;\n */\n defaultValue = \"\";\n\n constructor(data?: PartialMessage<Field>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Field\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"kind\", kind: \"enum\", T: proto3.getEnumType(Field_Kind) },\n { no: 2, name: \"cardinality\", kind: \"enum\", T: proto3.getEnumType(Field_Cardinality) },\n { no: 3, name: \"number\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 4, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 6, name: \"type_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 7, name: \"oneof_index\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 8, name: \"packed\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 9, name: \"options\", kind: \"message\", T: Option, repeated: true },\n { no: 10, name: \"json_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 11, name: \"default_value\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Field {\n return new Field().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Field {\n return new Field().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Field {\n return new Field().fromJsonString(jsonString, options);\n }\n\n static equals(a: Field | PlainMessage<Field> | undefined, b: Field | PlainMessage<Field> | undefined): boolean {\n return proto3.util.equals(Field, a, b);\n }\n}\n\n/**\n * Basic field types.\n *\n * @generated from enum google.protobuf.Field.Kind\n */\nexport enum Field_Kind {\n /**\n * Field type unknown.\n *\n * @generated from enum value: TYPE_UNKNOWN = 0;\n */\n TYPE_UNKNOWN = 0,\n\n /**\n * Field type double.\n *\n * @generated from enum value: TYPE_DOUBLE = 1;\n */\n TYPE_DOUBLE = 1,\n\n /**\n * Field type float.\n *\n * @generated from enum value: TYPE_FLOAT = 2;\n */\n TYPE_FLOAT = 2,\n\n /**\n * Field type int64.\n *\n * @generated from enum value: TYPE_INT64 = 3;\n */\n TYPE_INT64 = 3,\n\n /**\n * Field type uint64.\n *\n * @generated from enum value: TYPE_UINT64 = 4;\n */\n TYPE_UINT64 = 4,\n\n /**\n * Field type int32.\n *\n * @generated from enum value: TYPE_INT32 = 5;\n */\n TYPE_INT32 = 5,\n\n /**\n * Field type fixed64.\n *\n * @generated from enum value: TYPE_FIXED64 = 6;\n */\n TYPE_FIXED64 = 6,\n\n /**\n * Field type fixed32.\n *\n * @generated from enum value: TYPE_FIXED32 = 7;\n */\n TYPE_FIXED32 = 7,\n\n /**\n * Field type bool.\n *\n * @generated from enum value: TYPE_BOOL = 8;\n */\n TYPE_BOOL = 8,\n\n /**\n * Field type string.\n *\n * @generated from enum value: TYPE_STRING = 9;\n */\n TYPE_STRING = 9,\n\n /**\n * Field type group. Proto2 syntax only, and deprecated.\n *\n * @generated from enum value: TYPE_GROUP = 10;\n */\n TYPE_GROUP = 10,\n\n /**\n * Field type message.\n *\n * @generated from enum value: TYPE_MESSAGE = 11;\n */\n TYPE_MESSAGE = 11,\n\n /**\n * Field type bytes.\n *\n * @generated from enum value: TYPE_BYTES = 12;\n */\n TYPE_BYTES = 12,\n\n /**\n * Field type uint32.\n *\n * @generated from enum value: TYPE_UINT32 = 13;\n */\n TYPE_UINT32 = 13,\n\n /**\n * Field type enum.\n *\n * @generated from enum value: TYPE_ENUM = 14;\n */\n TYPE_ENUM = 14,\n\n /**\n * Field type sfixed32.\n *\n * @generated from enum value: TYPE_SFIXED32 = 15;\n */\n TYPE_SFIXED32 = 15,\n\n /**\n * Field type sfixed64.\n *\n * @generated from enum value: TYPE_SFIXED64 = 16;\n */\n TYPE_SFIXED64 = 16,\n\n /**\n * Field type sint32.\n *\n * @generated from enum value: TYPE_SINT32 = 17;\n */\n TYPE_SINT32 = 17,\n\n /**\n * Field type sint64.\n *\n * @generated from enum value: TYPE_SINT64 = 18;\n */\n TYPE_SINT64 = 18,\n}\n// Retrieve enum metadata with: proto3.getEnumType(Field_Kind)\nproto3.util.setEnumType(Field_Kind, \"google.protobuf.Field.Kind\", [\n { no: 0, name: \"TYPE_UNKNOWN\" },\n { no: 1, name: \"TYPE_DOUBLE\" },\n { no: 2, name: \"TYPE_FLOAT\" },\n { no: 3, name: \"TYPE_INT64\" },\n { no: 4, name: \"TYPE_UINT64\" },\n { no: 5, name: \"TYPE_INT32\" },\n { no: 6, name: \"TYPE_FIXED64\" },\n { no: 7, name: \"TYPE_FIXED32\" },\n { no: 8, name: \"TYPE_BOOL\" },\n { no: 9, name: \"TYPE_STRING\" },\n { no: 10, name: \"TYPE_GROUP\" },\n { no: 11, name: \"TYPE_MESSAGE\" },\n { no: 12, name: \"TYPE_BYTES\" },\n { no: 13, name: \"TYPE_UINT32\" },\n { no: 14, name: \"TYPE_ENUM\" },\n { no: 15, name: \"TYPE_SFIXED32\" },\n { no: 16, name: \"TYPE_SFIXED64\" },\n { no: 17, name: \"TYPE_SINT32\" },\n { no: 18, name: \"TYPE_SINT64\" },\n]);\n\n/**\n * Whether a field is optional, required, or repeated.\n *\n * @generated from enum google.protobuf.Field.Cardinality\n */\nexport enum Field_Cardinality {\n /**\n * For fields with unknown cardinality.\n *\n * @generated from enum value: CARDINALITY_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * For optional fields.\n *\n * @generated from enum value: CARDINALITY_OPTIONAL = 1;\n */\n OPTIONAL = 1,\n\n /**\n * For required fields. Proto2 syntax only.\n *\n * @generated from enum value: CARDINALITY_REQUIRED = 2;\n */\n REQUIRED = 2,\n\n /**\n * For repeated fields.\n *\n * @generated from enum value: CARDINALITY_REPEATED = 3;\n */\n REPEATED = 3,\n}\n// Retrieve enum metadata with: proto3.getEnumType(Field_Cardinality)\nproto3.util.setEnumType(Field_Cardinality, \"google.protobuf.Field.Cardinality\", [\n { no: 0, name: \"CARDINALITY_UNKNOWN\" },\n { no: 1, name: \"CARDINALITY_OPTIONAL\" },\n { no: 2, name: \"CARDINALITY_REQUIRED\" },\n { no: 3, name: \"CARDINALITY_REPEATED\" },\n]);\n\n/**\n * Enum type definition.\n *\n * @generated from message google.protobuf.Enum\n */\nexport class Enum extends Message<Enum> {\n /**\n * Enum type name.\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * Enum value definitions.\n *\n * @generated from field: repeated google.protobuf.EnumValue enumvalue = 2;\n */\n enumvalue: EnumValue[] = [];\n\n /**\n * Protocol buffer options.\n *\n * @generated from field: repeated google.protobuf.Option options = 3;\n */\n options: Option[] = [];\n\n /**\n * The source context.\n *\n * @generated from field: google.protobuf.SourceContext source_context = 4;\n */\n sourceContext?: SourceContext;\n\n /**\n * The source syntax.\n *\n * @generated from field: google.protobuf.Syntax syntax = 5;\n */\n syntax = Syntax.PROTO2;\n\n constructor(data?: PartialMessage<Enum>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Enum\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"enumvalue\", kind: \"message\", T: EnumValue, repeated: true },\n { no: 3, name: \"options\", kind: \"message\", T: Option, repeated: true },\n { no: 4, name: \"source_context\", kind: \"message\", T: SourceContext },\n { no: 5, name: \"syntax\", kind: \"enum\", T: proto3.getEnumType(Syntax) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Enum {\n return new Enum().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Enum {\n return new Enum().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Enum {\n return new Enum().fromJsonString(jsonString, options);\n }\n\n static equals(a: Enum | PlainMessage<Enum> | undefined, b: Enum | PlainMessage<Enum> | undefined): boolean {\n return proto3.util.equals(Enum, a, b);\n }\n}\n\n/**\n * Enum value definition.\n *\n * @generated from message google.protobuf.EnumValue\n */\nexport class EnumValue extends Message<EnumValue> {\n /**\n * Enum value name.\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * Enum value number.\n *\n * @generated from field: int32 number = 2;\n */\n number = 0;\n\n /**\n * Protocol buffer options.\n *\n * @generated from field: repeated google.protobuf.Option options = 3;\n */\n options: Option[] = [];\n\n constructor(data?: PartialMessage<EnumValue>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.EnumValue\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"number\", kind: \"scalar\", T: 5 /* ScalarType.INT32 */ },\n { no: 3, name: \"options\", kind: \"message\", T: Option, repeated: true },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): EnumValue {\n return new EnumValue().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): EnumValue {\n return new EnumValue().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): EnumValue {\n return new EnumValue().fromJsonString(jsonString, options);\n }\n\n static equals(a: EnumValue | PlainMessage<EnumValue> | undefined, b: EnumValue | PlainMessage<EnumValue> | undefined): boolean {\n return proto3.util.equals(EnumValue, a, b);\n }\n}\n\n/**\n * A protocol buffer option, which can be attached to a message, field,\n * enumeration, etc.\n *\n * @generated from message google.protobuf.Option\n */\nexport class Option extends Message<Option> {\n /**\n * The option's name. For protobuf built-in options (options defined in\n * descriptor.proto), this is the short name. For example, `\"map_entry\"`.\n * For custom options, it should be the fully-qualified name. For example,\n * `\"google.api.http\"`.\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * The option's value packed in an Any message. If the value is a primitive,\n * the corresponding wrapper type defined in google/protobuf/wrappers.proto\n * should be used. If the value is an enum, it should be stored as an int32\n * value using the google.protobuf.Int32Value type.\n *\n * @generated from field: google.protobuf.Any value = 2;\n */\n value?: Any;\n\n constructor(data?: PartialMessage<Option>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Option\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"value\", kind: \"message\", T: Any },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Option {\n return new Option().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Option {\n return new Option().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Option {\n return new Option().fromJsonString(jsonString, options);\n }\n\n static equals(a: Option | PlainMessage<Option> | undefined, b: Option | PlainMessage<Option> | undefined): boolean {\n return proto3.util.equals(Option, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/source_context.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\n\n/**\n * `SourceContext` represents information about the source of a\n * protobuf element, like the file in which it is defined.\n *\n * @generated from message google.protobuf.SourceContext\n */\nexport class SourceContext extends Message<SourceContext> {\n /**\n * The path-qualified name of the .proto file that contained the associated\n * protobuf element. For example: `\"google/protobuf/source_context.proto\"`.\n *\n * @generated from field: string file_name = 1;\n */\n fileName = \"\";\n\n constructor(data?: PartialMessage<SourceContext>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.SourceContext\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"file_name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SourceContext {\n return new SourceContext().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SourceContext {\n return new SourceContext().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SourceContext {\n return new SourceContext().fromJsonString(jsonString, options);\n }\n\n static equals(a: SourceContext | PlainMessage<SourceContext> | undefined, b: SourceContext | PlainMessage<SourceContext> | undefined): boolean {\n return proto3.util.equals(SourceContext, a, b);\n }\n}\n\n","// Copyright 2021-2022 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v0.0.4 with parameter \"bootstrap_wkt=true,ts_nocheck=false,target=ts\"\n// @generated from file google/protobuf/api.proto (package google.protobuf, syntax proto3)\n/* eslint-disable */\n\nimport type {BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage} from \"../../index-runtime.js\";\nimport {Message} from \"../../message.js\";\nimport {proto3} from \"../../proto3.js\";\nimport {Option, Syntax} from \"./type_pb.js\";\nimport {SourceContext} from \"./source_context_pb.js\";\n\n/**\n * Api is a light-weight descriptor for an API Interface.\n *\n * Interfaces are also described as \"protocol buffer services\" in some contexts,\n * such as by the \"service\" keyword in a .proto file, but they are different\n * from API Services, which represent a concrete implementation of an interface\n * as opposed to simply a description of methods and bindings. They are also\n * sometimes simply referred to as \"APIs\" in other contexts, such as the name of\n * this message itself. See https://cloud.google.com/apis/design/glossary for\n * detailed terminology.\n *\n * @generated from message google.protobuf.Api\n */\nexport class Api extends Message<Api> {\n /**\n * The fully qualified name of this interface, including package name\n * followed by the interface's simple name.\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * The methods of this interface, in unspecified order.\n *\n * @generated from field: repeated google.protobuf.Method methods = 2;\n */\n methods: Method[] = [];\n\n /**\n * Any metadata attached to the interface.\n *\n * @generated from field: repeated google.protobuf.Option options = 3;\n */\n options: Option[] = [];\n\n /**\n * A version string for this interface. If specified, must have the form\n * `major-version.minor-version`, as in `1.10`. If the minor version is\n * omitted, it defaults to zero. If the entire version field is empty, the\n * major version is derived from the package name, as outlined below. If the\n * field is not empty, the version in the package name will be verified to be\n * consistent with what is provided here.\n *\n * The versioning schema uses [semantic\n * versioning](http://semver.org) where the major version number\n * indicates a breaking change and the minor version an additive,\n * non-breaking change. Both version numbers are signals to users\n * what to expect from different versions, and should be carefully\n * chosen based on the product plan.\n *\n * The major version is also reflected in the package name of the\n * interface, which must end in `v<major-version>`, as in\n * `google.feature.v1`. For major versions 0 and 1, the suffix can\n * be omitted. Zero major versions must only be used for\n * experimental, non-GA interfaces.\n *\n *\n *\n * @generated from field: string version = 4;\n */\n version = \"\";\n\n /**\n * Source context for the protocol buffer service represented by this\n * message.\n *\n * @generated from field: google.protobuf.SourceContext source_context = 5;\n */\n sourceContext?: SourceContext;\n\n /**\n * Included interfaces. See [Mixin][].\n *\n * @generated from field: repeated google.protobuf.Mixin mixins = 6;\n */\n mixins: Mixin[] = [];\n\n /**\n * The source syntax of the service.\n *\n * @generated from field: google.protobuf.Syntax syntax = 7;\n */\n syntax = Syntax.PROTO2;\n\n constructor(data?: PartialMessage<Api>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Api\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"methods\", kind: \"message\", T: Method, repeated: true },\n { no: 3, name: \"options\", kind: \"message\", T: Option, repeated: true },\n { no: 4, name: \"version\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"source_context\", kind: \"message\", T: SourceContext },\n { no: 6, name: \"mixins\", kind: \"message\", T: Mixin, repeated: true },\n { no: 7, name: \"syntax\", kind: \"enum\", T: proto3.getEnumType(Syntax) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Api {\n return new Api().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Api {\n return new Api().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Api {\n return new Api().fromJsonString(jsonString, options);\n }\n\n static equals(a: Api | PlainMessage<Api> | undefined, b: Api | PlainMessage<Api> | undefined): boolean {\n return proto3.util.equals(Api, a, b);\n }\n}\n\n/**\n * Method represents a method of an API interface.\n *\n * @generated from message google.protobuf.Method\n */\nexport class Method extends Message<Method> {\n /**\n * The simple name of this method.\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * A URL of the input message type.\n *\n * @generated from field: string request_type_url = 2;\n */\n requestTypeUrl = \"\";\n\n /**\n * If true, the request is streamed.\n *\n * @generated from field: bool request_streaming = 3;\n */\n requestStreaming = false;\n\n /**\n * The URL of the output message type.\n *\n * @generated from field: string response_type_url = 4;\n */\n responseTypeUrl = \"\";\n\n /**\n * If true, the response is streamed.\n *\n * @generated from field: bool response_streaming = 5;\n */\n responseStreaming = false;\n\n /**\n * Any metadata attached to the method.\n *\n * @generated from field: repeated google.protobuf.Option options = 6;\n */\n options: Option[] = [];\n\n /**\n * The source syntax of this method.\n *\n * @generated from field: google.protobuf.Syntax syntax = 7;\n */\n syntax = Syntax.PROTO2;\n\n constructor(data?: PartialMessage<Method>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Method\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"request_type_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 3, name: \"request_streaming\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 4, name: \"response_type_url\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 5, name: \"response_streaming\", kind: \"scalar\", T: 8 /* ScalarType.BOOL */ },\n { no: 6, name: \"options\", kind: \"message\", T: Option, repeated: true },\n { no: 7, name: \"syntax\", kind: \"enum\", T: proto3.getEnumType(Syntax) },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Method {\n return new Method().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Method {\n return new Method().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Method {\n return new Method().fromJsonString(jsonString, options);\n }\n\n static equals(a: Method | PlainMessage<Method> | undefined, b: Method | PlainMessage<Method> | undefined): boolean {\n return proto3.util.equals(Method, a, b);\n }\n}\n\n/**\n * Declares an API Interface to be included in this interface. The including\n * interface must redeclare all the methods from the included interface, but\n * documentation and options are inherited as follows:\n *\n * - If after comment and whitespace stripping, the documentation\n * string of the redeclared method is empty, it will be inherited\n * from the original method.\n *\n * - Each annotation belonging to the service config (http,\n * visibility) which is not set in the redeclared method will be\n * inherited.\n *\n * - If an http annotation is inherited, the path pattern will be\n * modified as follows. Any version prefix will be replaced by the\n * version of the including interface plus the [root][] path if\n * specified.\n *\n * Example of a simple mixin:\n *\n * package google.acl.v1;\n * service AccessControl {\n * // Get the underlying ACL object.\n * rpc GetAcl(GetAclRequest) returns (Acl) {\n * option (google.api.http).get = \"/v1/{resource=**}:getAcl\";\n * }\n * }\n *\n * package google.storage.v2;\n * service Storage {\n * rpc GetAcl(GetAclRequest) returns (Acl);\n *\n * // Get a data record.\n * rpc GetData(GetDataRequest) returns (Data) {\n * option (google.api.http).get = \"/v2/{resource=**}\";\n * }\n * }\n *\n * Example of a mixin configuration:\n *\n * apis:\n * - name: google.storage.v2.Storage\n * mixins:\n * - name: google.acl.v1.AccessControl\n *\n * The mixin construct implies that all methods in `AccessControl` are\n * also declared with same name and request/response types in\n * `Storage`. A documentation generator or annotation processor will\n * see the effective `Storage.GetAcl` method after inheriting\n * documentation and annotations as follows:\n *\n * service Storage {\n * // Get the underlying ACL object.\n * rpc GetAcl(GetAclRequest) returns (Acl) {\n * option (google.api.http).get = \"/v2/{resource=**}:getAcl\";\n * }\n * ...\n * }\n *\n * Note how the version in the path pattern changed from `v1` to `v2`.\n *\n * If the `root` field in the mixin is specified, it should be a\n * relative path under which inherited HTTP paths are placed. Example:\n *\n * apis:\n * - name: google.storage.v2.Storage\n * mixins:\n * - name: google.acl.v1.AccessControl\n * root: acls\n *\n * This implies the following inherited HTTP annotation:\n *\n * service Storage {\n * // Get the underlying ACL object.\n * rpc GetAcl(GetAclRequest) returns (Acl) {\n * option (google.api.http).get = \"/v2/acls/{resource=**}:getAcl\";\n * }\n * ...\n * }\n *\n * @generated from message google.protobuf.Mixin\n */\nexport class Mixin extends Message<Mixin> {\n /**\n * The fully qualified name of the interface which is included.\n *\n * @generated from field: string name = 1;\n */\n name = \"\";\n\n /**\n * If non-empty specifies a path under which inherited HTTP paths\n * are rooted.\n *\n * @generated from field: string root = 2;\n */\n root = \"\";\n\n constructor(data?: PartialMessage<Mixin>) {\n super();\n proto3.util.initPartial(data, this);\n }\n\n static readonly runtime = proto3;\n static readonly typeName = \"google.protobuf.Mixin\";\n static readonly fields: FieldList = proto3.util.newFieldList(() => [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n { no: 2, name: \"root\", kind: \"scalar\", T: 9 /* ScalarType.STRING */ },\n ]);\n\n static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Mixin {\n return new Mixin().fromBinary(bytes, options);\n }\n\n static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Mixin {\n return new Mixin().fromJson(jsonValue, options);\n }\n\n static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Mixin {\n return new Mixin().fromJsonString(jsonString, options);\n }\n\n static equals(a: Mixin | PlainMessage<Mixin> | undefined, b: Mixin | PlainMessage<Mixin> | undefined): boolean {\n return proto3.util.equals(Mixin, a, b);\n }\n}\n\n"],"names":["assert","condition","msg","assertInt32","arg","Number","isInteger","Error","assertUInt32","assertFloat32","isFinite","enumTypeSymbol","Symbol","getEnumType","enumObject","t","setEnumType","typeName","values","makeEnumType","names","Object","create","normalValues","value","push","name","numbers","no","findName","findNumber","opt","makeEnumValueName","sharedPrefix","undefined","startsWith","substring","length","Message","equals","other","getType","runtime","util","this","clone","fromBinary","bytes","options","format","bin","makeReadOptions","readMessage","readerFactory","byteLength","fromJson","jsonValue","type","json","fromJsonString","jsonString","JSON","parse","toBinary","makeWriteOptions","writer","writerFactory","writeMessage","finish","toJson","toJsonString","stringify","_options$prettySpaces","prettySpaces","getPrototypeOf","constructor","makeProtoRuntime","syntax","makeMessageType","fields","_opt$localName","localName","lastIndexOf","data","initFields","initPartial","setPrototypeOf","prototype","assign","newFieldList","a","b","makeEnum","ScalarType","varint64read","lowBits","highBits","shift","buf","pos","assertBounds","middleByte","varint64write","lo","hi","i","hasNext","splitBits","hasMoreBits","int64fromString","dec","minus","slice","base","add1e6digit","begin","end","digit1e6","int64toString","bitsLow","bitsHigh","mid","high","digitA","digitB","digitC","decimalFrom1e7","digit1e7","needLeadingZeros","partial","String","Math","floor","varint32write","varint32read","result","readBytes","protoInt64","dv","DataView","ArrayBuffer","globalThis","BigInt","getBigInt64","getBigUint64","setBigInt64","setBigUint64","MAX","UMIN","UMAX","zero","supported","bi","MIN","uParse","enc","getInt32","uEnc","setInt32","uDec","test","toString","makeInt64Support","WireType","BinaryWriter","textEncoder","chunks","stack","TextEncoder","Uint8Array","len","offset","set","fork","join","prev","pop","uint32","chunk","raw","tag","fieldNo","int32","bool","string","encode","float","buffer","setFloat32","double","setFloat64","fixed32","setUint32","sfixed32","sint32","sfixed64","view","tc","fixed64","int64","sint64","sign","uint64","BinaryReader","textDecoder","varint64","byteOffset","TextDecoder","wireType","skip","start","Varint","Bit64","Bit32","LengthDelimited","StartGroup","EndGroup","subarray","RangeError","zze","s","getUint32","getFloat32","getFloat64","decode","wrapField","fieldWrapper","unwrapField","scalarEquals","BYTES","UINT64","FIXED64","INT64","SFIXED64","SINT64","BOOL","DOUBLE","FLOAT","STRING","scalarTypeInfo","isUndefined","isIntrinsicDefault","FIXED32","SFIXED32","toLowerCase","unknownFieldsSymbol","readDefaults","readUnknownFields","writeDefaults","writeUnknownFields","makeBinaryFormatCommon","listUnknownFields","message","_message$unknownField","discardUnknownFields","c","f","onUnknownField","m","Array","isArray","reader","field","find","repeated","oneof","target","case","kind","scalarType","INT32","T","arr","e","readScalar","messageType","mapKey","mapVal","readMapEntry","key","val","K","V","keyRaw","scalarDefaultValue","method","writeMapEntry","keyValue","UINT32","SINT32","parseInt","writeScalar","writeMessageField","emitIntrinsicDefault","encTable","split","decTable","charCodeAt","indexOf","protoBase64","base64Str","es","bytePos","groupPos","p","base64","jsonReadDefaults","ignoreUnknownFields","jsonWriteDefaults","emitDefaultValues","enumAsInteger","useProtoFieldName","_extends","makeJsonFormatCommon","makeWriteField","writeField","writeEnum","debug","_message","oneofSeen","jsonKey","entries","findJsonName","seen","targetArray","jsonItem","readEnum","targetMap","jsonMapKey","jsonMapValue","targetMessage","enumValue","byMember","member","findField","jsonName","r","debugJsonValue","NaN","POSITIVE_INFINITY","NEGATIVE_INFINITY","trim","isNaN","encodeURIComponent","_val$name","source","sk","sourceField","k","keys","mt","map","every","vb","va","some","any","copy","cloneSingularField","v","InternalFieldList","normalizer","_fields","_normalizer","all","numbersAsc","jsonNames","members","list","byNumber","concat","sort","o","makeJsonName","protoName","protoCamelCase","makeFieldName","inOneof","n","rProp","escapeChar","snakeCase","charAt","capNext","toUpperCase","toJSON","valueOf","toObject","InternalOneofInfo","packed","default","_lookup","addField","proto3","jsonObj","entryKey","entryValue","enumType","jsonArr","writePacked","item","makeUtilCommon","normalizeFieldInfosProto3","fieldInfos","_field$jsonName","_field$repeated","_field$packed","ooname","proto2","_field","normalizeFieldInfosProto2","MethodKind","MethodIdempotency","FieldDescriptorProto_Type","FieldDescriptorProto_Label","FieldOptions_CType","FieldOptions_JSType","MethodOptions_IdempotencyLevel","TypeRegistry","messages","enums","services","findMessage","findEnum","findService","add","static","types","fromIterable","FileDescriptorSet","super","file","FileDescriptorProto","package","dependency","publicDependency","weakDependency","service","extension","sourceCodeInfo","DescriptorProto","EnumDescriptorProto","ServiceDescriptorProto","FieldDescriptorProto","FileOptions","SourceCodeInfo","nestedType","extensionRange","oneofDecl","reservedRange","reservedName","DescriptorProto_ExtensionRange","OneofDescriptorProto","MessageOptions","DescriptorProto_ReservedRange","ExtensionRangeOptions","uninterpretedOption","UninterpretedOption","number","label","extendee","defaultValue","oneofIndex","proto3Optional","FieldOptions","OneofOptions","EnumValueDescriptorProto","EnumOptions","EnumDescriptorProto_EnumReservedRange","EnumValueOptions","MethodDescriptorProto","ServiceOptions","inputType","outputType","clientStreaming","serverStreaming","MethodOptions","javaPackage","javaOuterClassname","javaMultipleFiles","javaGenerateEqualsAndHash","javaStringCheckUtf8","optimizeFor","goPackage","ccGenericServices","javaGenericServices","pyGenericServices","phpGenericServices","deprecated","ccEnableArenas","objcClassPrefix","csharpNamespace","swiftPrefix","phpClassPrefix","phpNamespace","phpMetadataNamespace","rubyPackage","FileOptions_OptimizeMode","SPEED","messageSetWireFormat","noStandardDescriptorAccessor","mapEntry","ctype","jstype","lazy","unverifiedLazy","weak","JS_NORMAL","allowAlias","idempotencyLevel","IDEMPOTENCY_UNKNOWN","identifierValue","positiveIntValue","negativeIntValue","doubleValue","stringValue","aggregateValue","UninterpretedOption_NamePart","namePart","isExtension","location","SourceCodeInfo_Location","path","span","leadingComments","trailingComments","leadingDetachedComments","GeneratedCodeInfo","annotation","GeneratedCodeInfo_Annotation","sourceFile","DescriptorSet","files","newFile","listEnums","filter","isDefined","listMessages","listServices","GROUP","MESSAGE","ENUM","proto","ds","endsWith","newMessage","newEnum","newExtension","newService","parent","us","protoTypeName","enumT","newEnumValue","nestedMessages","oneofs","nestedEnums","nestedExtensions","newOneof","_field$number","newField","_proto$options","optional","OPTIONAL","resolve","resolveField","u","REPEATED","_refMessage$proto$opt","refMessage","enum","resolveMap","refEnum","fieldTypeToScalarType","_mapEntry$proto$optio","uKeyField","keyField","uValueField","valueField","scalar","methods","newMethod","_proto$options2","BiDiStreaming","ClientStreaming","ServerStreaming","Unary","IDEMPOTENT","idempotency","Idempotent","NO_SIDE_EFFECTS","NoSideEffects","inputTypeName","outputTypeName","Timestamp","seconds","nanos","matches","match","ms","Date","repeat","z","nanosStr","toISOString","replace","toDate","ceil","fromDate","date","getTime","Duration","longSeconds","text","abs","Any","typeUrl","_options$typeRegistry","typeUrlToName","typeRegistry","_options$typeRegistry2","hasOwnProperty","call","packFrom","typeNameToUrl","unpackTo","is","url","slash","Empty","FieldMask","paths","str","includes","sc","letter","NullValue","Struct","Value","NULL_VALUE","ListValue","DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue","wkMessages","wkEnums","DescriptorRegistry","descriptorSet","replaceWkt","et","bytesOrSet","dr","existing","makeTypeLocalName","fieldInfo","makeFieldInfo","it","ot","I","O","_type$file$proto$pack","packagePrefix","resolver","makeMapFieldInfo","makeMessageFieldInfo","makeEnumFieldInfo","makeScalarFieldInfo","fi","d","input","tail","next","take","unescapeBytesDefaultValue","parseFloat","Boolean","parseDefaultValue","Version","major","minor","patch","suffix","CodeGeneratorRequest","fileToGenerate","parameter","protoFile","compilerVersion","CodeGeneratorResponse","error","supportedFeatures","CodeGeneratorResponse_Feature","Syntax","Field_Kind","Field_Cardinality","CodeGeneratorResponse_File","insertionPoint","content","generatedCodeInfo","SourceContext","fileName","Type","sourceContext","PROTO2","Field","Option","TYPE_UNKNOWN","cardinality","UNKNOWN","Enum","enumvalue","EnumValue","Api","version","mixins","Method","Mixin","requestTypeUrl","requestStreaming","responseTypeUrl","responseStreaming","root"],"mappings":"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"}
|