@mochabug/adaptkit 1.0.0-beta.10 → 1.0.0-beta.12
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/bin/index.js +1 -1
- package/bin/index.js.map +1 -1
- package/package.json +5 -5
package/bin/index.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["<define:__PACKAGE_JSON__>", "../node_modules/@bufbuild/protobuf/dist/esm/is-message.js", "../node_modules/@bufbuild/protobuf/dist/esm/descriptors.js", "../node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js", "../node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js", "../node_modules/@bufbuild/protobuf/dist/esm/reflect/scalar.js", "../node_modules/@bufbuild/protobuf/dist/esm/reflect/error.js", "../node_modules/@bufbuild/protobuf/dist/esm/reflect/unsafe.js", "../node_modules/@bufbuild/protobuf/dist/esm/reflect/guard.js", "../node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js", "../node_modules/@bufbuild/protobuf/dist/esm/create.js", "../node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js", "../node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js", "../node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect-check.js", "../node_modules/@bufbuild/protobuf/dist/esm/reflect/reflect.js", "../node_modules/@bufbuild/protobuf/dist/esm/wire/base64-encoding.js", "../node_modules/@bufbuild/protobuf/dist/esm/reflect/names.js", "../node_modules/@bufbuild/protobuf/dist/esm/codegenv1/restore-json-names.js", "../node_modules/@bufbuild/protobuf/dist/esm/wire/text-format.js", "../node_modules/@bufbuild/protobuf/dist/esm/reflect/nested-types.js", "../node_modules/@bufbuild/protobuf/dist/esm/registry.js", "../node_modules/@bufbuild/protobuf/dist/esm/codegenv1/boot.js", "../node_modules/@bufbuild/protobuf/dist/esm/codegenv1/message.js", "../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js", "../node_modules/@bufbuild/protobuf/dist/esm/from-binary.js", "../node_modules/@bufbuild/protobuf/dist/esm/codegenv1/file.js", "../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js", "../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/any_pb.js", "../node_modules/@bufbuild/protobuf/dist/esm/to-binary.js", "../node_modules/@bufbuild/protobuf/dist/esm/wkt/any.js", "../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/duration_pb.js", "../node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/struct_pb.js", "../node_modules/@bufbuild/protobuf/dist/esm/extensions.js", "../node_modules/@bufbuild/protobuf/dist/esm/to-json.js", "../node_modules/@bufbuild/protobuf/dist/esm/from-json.js", "../src/index.ts", "../src/add.ts", "../node_modules/@bufbuild/protobuf/dist/esm/codegenv1/service.js", "../src/genproto/buf/validate/validate_pb.ts", "../src/genproto/google/api/http_pb.ts", "../src/genproto/google/api/annotations_pb.ts", "../src/genproto/google/api/launch_stage_pb.ts", "../src/genproto/google/api/client_pb.ts", "../src/genproto/mochabugapis/adapt/plugins/v1/plugins_pb.ts", "../src/vertices.ts", "../src/utils.ts", "../src/init.ts", "../src/oauth2.ts", "../src/publish.ts"],
|
|
4
4
|
"sourcesContent": ["", "// Copyright 2021-2024 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 * Determine whether the given `arg` is a message.\n * If `desc` is set, determine whether `arg` is this specific message.\n */\nexport function isMessage(arg, schema) {\n const isMessage = arg !== null &&\n typeof arg == \"object\" &&\n \"$typeName\" in arg &&\n typeof arg.$typeName == \"string\";\n if (!isMessage) {\n return false;\n }\n if (schema === undefined) {\n return true;\n }\n return schema.typeName === arg.$typeName;\n}\n", "// Copyright 2021-2024 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 * 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 var ScalarType;\n(function (ScalarType) {\n // 0 is reserved for errors.\n // Order is weird for historical reasons.\n ScalarType[ScalarType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n ScalarType[ScalarType[\"FLOAT\"] = 2] = \"FLOAT\";\n // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if\n // negative values are likely.\n ScalarType[ScalarType[\"INT64\"] = 3] = \"INT64\";\n ScalarType[ScalarType[\"UINT64\"] = 4] = \"UINT64\";\n // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if\n // negative values are likely.\n ScalarType[ScalarType[\"INT32\"] = 5] = \"INT32\";\n ScalarType[ScalarType[\"FIXED64\"] = 6] = \"FIXED64\";\n ScalarType[ScalarType[\"FIXED32\"] = 7] = \"FIXED32\";\n ScalarType[ScalarType[\"BOOL\"] = 8] = \"BOOL\";\n ScalarType[ScalarType[\"STRING\"] = 9] = \"STRING\";\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 // New in version 2.\n ScalarType[ScalarType[\"BYTES\"] = 12] = \"BYTES\";\n ScalarType[ScalarType[\"UINT32\"] = 13] = \"UINT32\";\n // TYPE_ENUM = 14,\n ScalarType[ScalarType[\"SFIXED32\"] = 15] = \"SFIXED32\";\n ScalarType[ScalarType[\"SFIXED64\"] = 16] = \"SFIXED64\";\n ScalarType[ScalarType[\"SINT32\"] = 17] = \"SINT32\";\n ScalarType[ScalarType[\"SINT64\"] = 18] = \"SINT64\";\n})(ScalarType || (ScalarType = {}));\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/* eslint-disable prefer-const,@typescript-eslint/restrict-plus-operands */\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() {\n let lowBits = 0;\n let highBits = 0;\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 let middleByte = this.buf[this.pos++];\n // last four bits of the first 32 bit number\n lowBits |= (middleByte & 0x0f) << 28;\n // 3 upper bits are part of the next 32 bit number\n highBits = (middleByte & 0x70) >> 4;\n if ((middleByte & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\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 throw new Error(\"invalid varint\");\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, hi, bytes) {\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 const splitBits = ((lo >>> 28) & 0x0f) | ((hi & 0x07) << 4);\n const hasMoreBits = !(hi >> 3 == 0);\n bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xff);\n if (!hasMoreBits) {\n return;\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 bytes.push((hi >>> 31) & 0x01);\n}\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64FromString(dec) {\n // Check for minus sign.\n const minus = dec[0] === \"-\";\n if (minus) {\n dec = dec.slice(1);\n }\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 function add1e6digit(begin, end) {\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 add1e6digit(-24, -18);\n add1e6digit(-18, -12);\n add1e6digit(-12, -6);\n add1e6digit(-6);\n return minus ? negate(lowBits, highBits) : newBits(lowBits, highBits);\n}\n/**\n * Losslessly converts a 64-bit signed integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function int64ToString(lo, hi) {\n let bits = newBits(lo, hi);\n // If we're treating the input as a signed value and the high bit is set, do\n // a manual two's complement conversion before the decimal conversion.\n const negative = bits.hi & 0x80000000;\n if (negative) {\n bits = negate(bits.lo, bits.hi);\n }\n const result = uInt64ToString(bits.lo, bits.hi);\n return negative ? \"-\" + result : result;\n}\n/**\n * Losslessly converts a 64-bit unsigned integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nexport function uInt64ToString(lo, hi) {\n ({ lo, hi } = toUnsigned(lo, hi));\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n // Number.MAX_SAFE_INTEGER = 0x001FFFFF FFFFFFFF, thus any number with\n // highBits <= 0x1FFFFF can be safely expressed with a double and retain\n // integer precision.\n // Proven by: Number.isSafeInteger(0x1FFFFF * 2**32 + 0xFFFFFFFF) == true.\n if (hi <= 0x1fffff) {\n return String(TWO_PWR_32_DBL * hi + lo);\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 // 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 // Split 32:32 representation into 16:24:24 representation so our\n // intermediate digits don't overflow.\n const low = lo & 0xffffff;\n const mid = ((lo >>> 24) | (hi << 8)) & 0xffffff;\n const high = (hi >> 16) & 0xffff;\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 // Apply carries from A to B and from B to C.\n const base = 10000000;\n if (digitA >= base) {\n digitB += Math.floor(digitA / base);\n digitA %= base;\n }\n if (digitB >= base) {\n digitC += Math.floor(digitB / base);\n digitB %= base;\n }\n // If digitC is 0, then we should have returned in the trivial code path\n // at the top for non-safe integers. Given this, we can assume both digitB\n // and digitA need leading zeros.\n return (digitC.toString() +\n decimalFrom1e7WithLeadingZeros(digitB) +\n decimalFrom1e7WithLeadingZeros(digitA));\n}\nfunction toUnsigned(lo, hi) {\n return { lo: lo >>> 0, hi: hi >>> 0 };\n}\nfunction newBits(lo, hi) {\n return { lo: lo | 0, hi: hi | 0 };\n}\n/**\n * Returns two's compliment negation of input.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers\n */\nfunction negate(lowBits, highBits) {\n highBits = ~highBits;\n if (lowBits) {\n lowBits = ~lowBits + 1;\n }\n else {\n // If lowBits is 0, then bitwise-not is 0xFFFFFFFF,\n // adding 1 to that, results in 0x100000000, which leaves\n // the low bits 0x0 and simply adds one to the high bits.\n highBits += 1;\n }\n return newBits(lowBits, highBits);\n}\n/**\n * Returns decimal representation of digit1e7 with leading zeros.\n */\nconst decimalFrom1e7WithLeadingZeros = (digit1e7) => {\n const partial = String(digit1e7);\n return \"0000000\".slice(partial.length) + partial;\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, bytes) {\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 }\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 * 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() {\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 b = this.buf[this.pos++];\n result |= (b & 0x7f) << 7;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\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 b = this.buf[this.pos++];\n result |= (b & 0x7f) << 21;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n // Extract only last 4 bits\n b = this.buf[this.pos++];\n result |= (b & 0x0f) << 28;\n for (let readBytes = 5; (b & 0x80) !== 0 && readBytes < 10; readBytes++)\n b = this.buf[this.pos++];\n if ((b & 0x80) != 0)\n throw new Error(\"invalid varint\");\n this.assertBounds();\n // Result can have 32 bits, convert it to unsigned\n return result >>> 0;\n}\n", "// Copyright 2021-2024 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.\nimport { int64FromString, int64ToString, uInt64ToString, } from \"./wire/varint.js\";\n/**\n * Int64Support for the current environment.\n */\nexport const protoInt64 = /*@__PURE__*/ makeInt64Support();\nfunction makeInt64Support() {\n const dv = new DataView(new ArrayBuffer(8));\n // note that Safari 14 implements BigInt, but not the DataView methods\n const ok = typeof BigInt === \"function\" &&\n typeof dv.getBigInt64 === \"function\" &&\n typeof dv.getBigUint64 === \"function\" &&\n typeof dv.setBigInt64 === \"function\" &&\n typeof dv.setBigUint64 === \"function\" &&\n (typeof process != \"object\" ||\n typeof process.env != \"object\" ||\n process.env.BUF_BIGINT_DISABLE !== \"1\");\n if (ok) {\n const MIN = BigInt(\"-9223372036854775808\"), MAX = BigInt(\"9223372036854775807\"), UMIN = BigInt(\"0\"), UMAX = BigInt(\"18446744073709551615\");\n return {\n zero: BigInt(0),\n supported: true,\n parse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > MAX || bi < MIN) {\n throw new Error(`invalid int64: ${value}`);\n }\n return bi;\n },\n uParse(value) {\n const bi = typeof value == \"bigint\" ? value : BigInt(value);\n if (bi > UMAX || bi < UMIN) {\n throw new Error(`invalid uint64: ${value}`);\n }\n return bi;\n },\n enc(value) {\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) {\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, hi) {\n dv.setInt32(0, lo, true);\n dv.setInt32(4, hi, true);\n return dv.getBigInt64(0, true);\n },\n uDec(lo, hi) {\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\",\n supported: false,\n parse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return value;\n },\n uParse(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return value;\n },\n enc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertInt64String(value);\n return int64FromString(value);\n },\n uEnc(value) {\n if (typeof value != \"string\") {\n value = value.toString();\n }\n assertUInt64String(value);\n return int64FromString(value);\n },\n dec(lo, hi) {\n return int64ToString(lo, hi);\n },\n uDec(lo, hi) {\n return uInt64ToString(lo, hi);\n },\n };\n}\nfunction assertInt64String(value) {\n if (!/^-?[0-9]+$/.test(value)) {\n throw new Error(\"invalid int64: \" + value);\n }\n}\nfunction assertUInt64String(value) {\n if (!/^[0-9]+$/.test(value)) {\n throw new Error(\"invalid uint64: \" + value);\n }\n}\n", "// Copyright 2021-2024 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.\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { ScalarType } from \"../descriptors.js\";\n/**\n * Returns true if both scalar values are equal.\n */\nexport function scalarEquals(type, a, b) {\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 * Returns the zero value for the given scalar type.\n */\nexport function scalarZeroValue(type, longAsString) {\n switch (type) {\n case ScalarType.STRING:\n return \"\";\n case ScalarType.BOOL:\n return false;\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 case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n return 0.0;\n case ScalarType.INT64:\n case ScalarType.UINT64:\n case ScalarType.SFIXED64:\n case ScalarType.FIXED64:\n case ScalarType.SINT64:\n return (longAsString ? \"0\" : protoInt64.zero);\n case ScalarType.BYTES:\n return new Uint8Array(0);\n }\n}\n/**\n * Returns true for a zero-value. For example, an integer has the zero-value `0`,\n * a boolean is `false`, a string is `\"\"`, and bytes is an empty Uint8Array.\n *\n * In proto3, zero-values are not written to the wire, unless the field is\n * optional or repeated.\n */\nexport function isScalarZeroValue(type, value) {\n switch (type) {\n case ScalarType.BOOL:\n return value === false;\n case ScalarType.STRING:\n return value === \"\";\n case ScalarType.BYTES:\n return value instanceof Uint8Array && !value.byteLength;\n default:\n return value == 0; // Loose comparison matches 0n, 0 and \"0\"\n }\n}\n", "// Copyright 2021-2024 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.\nconst errorNames = [\n \"FieldValueInvalidError\",\n \"FieldListRangeError\",\n \"ForeignFieldError\",\n];\nexport class FieldError extends Error {\n constructor(fieldOrOneof, message, name = \"FieldValueInvalidError\") {\n super(message);\n this.name = name;\n this.field = () => fieldOrOneof;\n }\n}\nexport function isFieldError(arg) {\n return (arg instanceof Error &&\n errorNames.includes(arg.name) &&\n \"field\" in arg &&\n typeof arg.field == \"function\");\n}\n", "// Copyright 2021-2024 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.\nimport { isScalarZeroValue, scalarZeroValue } from \"./scalar.js\";\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\nexport const unsafeLocal = Symbol.for(\"reflect unsafe local\");\n/**\n * Return the selected field of a oneof group.\n *\n * @private\n */\nexport function unsafeOneofCase(target, // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access\noneof) {\n const c = target[oneof.localName].case;\n if (c === undefined) {\n return c;\n }\n return oneof.fields.find((f) => f.localName === c);\n}\n/**\n * Returns true if the field is set.\n *\n * @private\n */\nexport function unsafeIsSet(target, // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access\nfield) {\n const name = field.localName;\n if (field.oneof) {\n return target[field.oneof.localName].case === name; // eslint-disable-line @typescript-eslint/no-unsafe-member-access\n }\n if (field.presence != IMPLICIT) {\n // Fields with explicit presence have properties on the prototype chain\n // for default / zero values (except for proto3).\n return (target[name] !== undefined &&\n Object.prototype.hasOwnProperty.call(target, name));\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (field.fieldKind) {\n case \"list\":\n return target[name].length > 0;\n case \"map\":\n return Object.keys(target[name]).length > 0; // eslint-disable-line @typescript-eslint/no-unsafe-argument\n case \"scalar\":\n return !isScalarZeroValue(field.scalar, target[name]);\n case \"enum\":\n return target[name] !== field.enum.values[0].number;\n }\n throw new Error(\"message field with implicit presence\");\n}\n/**\n * Returns true if the field is set, but only for singular fields with explicit\n * presence (proto2).\n *\n * @private\n */\nexport function unsafeIsSetExplicit(target, localName) {\n return (Object.prototype.hasOwnProperty.call(target, localName) &&\n target[localName] !== undefined);\n}\n/**\n * Return a field value, respecting oneof groups.\n *\n * @private\n */\nexport function unsafeGet(target, field) {\n if (field.oneof) {\n const oneof = target[field.oneof.localName];\n if (oneof.case === field.localName) {\n return oneof.value;\n }\n return undefined;\n }\n return target[field.localName];\n}\n/**\n * Set a field value, respecting oneof groups.\n *\n * @private\n */\nexport function unsafeSet(target, field, value) {\n if (field.oneof) {\n target[field.oneof.localName] = {\n case: field.localName,\n value: value,\n };\n }\n else {\n target[field.localName] = value;\n }\n}\n/**\n * Resets the field, so that unsafeIsSet() will return false.\n *\n * @private\n */\nexport function unsafeClear(target, // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access\nfield) {\n const name = field.localName;\n if (field.oneof) {\n const oneofLocalName = field.oneof.localName;\n if (target[oneofLocalName].case === name) {\n target[oneofLocalName] = { case: undefined };\n }\n }\n else if (field.presence != IMPLICIT) {\n // Fields with explicit presence have properties on the prototype chain\n // for default / zero values (except for proto3). By deleting their own\n // property, the field is reset.\n delete target[name];\n }\n else {\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (field.fieldKind) {\n case \"map\":\n target[name] = {};\n break;\n case \"list\":\n target[name] = [];\n break;\n case \"enum\":\n target[name] = field.enum.values[0].number;\n break;\n case \"scalar\":\n target[name] = scalarZeroValue(field.scalar, field.longAsString);\n break;\n }\n }\n}\n", "// Copyright 2021-2024 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.\nimport { unsafeLocal } from \"./unsafe.js\";\nexport function isObject(arg) {\n return arg !== null && typeof arg == \"object\" && !Array.isArray(arg);\n}\nexport function isOneofADT(arg) {\n return (arg !== null &&\n typeof arg == \"object\" &&\n \"case\" in arg &&\n ((typeof arg.case == \"string\" && \"value\" in arg && arg.value != null) ||\n (arg.case === undefined &&\n (!(\"value\" in arg) || arg.value === undefined))));\n}\nexport function isReflectList(arg, field) {\n var _a, _b, _c, _d;\n if (isObject(arg) &&\n unsafeLocal in arg &&\n \"add\" in arg &&\n \"field\" in arg &&\n typeof arg.field == \"function\") {\n if (field !== undefined) {\n const a = field, b = arg.field();\n return (a.listKind == b.listKind &&\n a.scalar === b.scalar &&\n ((_a = a.message) === null || _a === void 0 ? void 0 : _a.typeName) === ((_b = b.message) === null || _b === void 0 ? void 0 : _b.typeName) &&\n ((_c = a.enum) === null || _c === void 0 ? void 0 : _c.typeName) === ((_d = b.enum) === null || _d === void 0 ? void 0 : _d.typeName));\n }\n return true;\n }\n return false;\n}\nexport function isReflectMap(arg, field) {\n var _a, _b, _c, _d;\n if (isObject(arg) &&\n unsafeLocal in arg &&\n \"has\" in arg &&\n \"field\" in arg &&\n typeof arg.field == \"function\") {\n if (field !== undefined) {\n const a = field, b = arg.field();\n return (a.mapKey === b.mapKey &&\n a.mapKind == b.mapKind &&\n a.scalar === b.scalar &&\n ((_a = a.message) === null || _a === void 0 ? void 0 : _a.typeName) === ((_b = b.message) === null || _b === void 0 ? void 0 : _b.typeName) &&\n ((_c = a.enum) === null || _c === void 0 ? void 0 : _c.typeName) === ((_d = b.enum) === null || _d === void 0 ? void 0 : _d.typeName));\n }\n return true;\n }\n return false;\n}\nexport function isReflectMessage(arg, messageDesc) {\n return (isObject(arg) &&\n unsafeLocal in arg &&\n \"desc\" in arg &&\n isObject(arg.desc) &&\n arg.desc.kind === \"message\" &&\n (messageDesc === undefined || arg.desc.typeName == messageDesc.typeName));\n}\n", "// Copyright 2021-2024 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.\nexport function isWrapper(arg) {\n return isWrapperTypeName(arg.$typeName);\n}\nexport function isWrapperDesc(messageDesc) {\n const f = messageDesc.fields[0];\n return (isWrapperTypeName(messageDesc.typeName) &&\n f !== undefined &&\n f.fieldKind == \"scalar\" &&\n f.name == \"value\" &&\n f.number == 1);\n}\nfunction isWrapperTypeName(name) {\n return (name.startsWith(\"google.protobuf.\") &&\n [\n \"DoubleValue\",\n \"FloatValue\",\n \"Int64Value\",\n \"UInt64Value\",\n \"Int32Value\",\n \"UInt32Value\",\n \"BoolValue\",\n \"StringValue\",\n \"BytesValue\",\n ].includes(name.substring(16)));\n}\n", "// Copyright 2021-2024 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.\nimport { isMessage } from \"./is-message.js\";\nimport { ScalarType, } from \"./descriptors.js\";\nimport { scalarZeroValue } from \"./reflect/scalar.js\";\nimport { FieldError } from \"./reflect/error.js\";\nimport { isObject } from \"./reflect/guard.js\";\nimport { unsafeGet, unsafeOneofCase, unsafeSet } from \"./reflect/unsafe.js\";\nimport { isWrapperDesc } from \"./wkt/wrappers.js\";\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO3: const $name: Edition.$localName = $number;\nconst EDITION_PROTO3 = 999;\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO2: const $name: Edition.$localName = $number;\nconst EDITION_PROTO2 = 998;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\n/**\n * Create a new message instance.\n *\n * The second argument is an optional initializer object, where all fields are\n * optional.\n */\nexport function create(schema, init) {\n if (isMessage(init, schema)) {\n return init;\n }\n const message = createZeroMessage(schema);\n if (init !== undefined) {\n initMessage(schema, message, init);\n }\n return message;\n}\n/**\n * Sets field values from a MessageInitShape on a zero message.\n */\nfunction initMessage(messageDesc, message, init) {\n for (const member of messageDesc.members) {\n let value = init[member.localName];\n if (value == null) {\n // intentionally ignore undefined and null\n continue;\n }\n let field;\n if (member.kind == \"oneof\") {\n const oneofField = unsafeOneofCase(init, member);\n if (!oneofField) {\n continue;\n }\n field = oneofField;\n value = unsafeGet(init, oneofField);\n }\n else {\n field = member;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- no need to convert enum\n switch (field.fieldKind) {\n case \"message\":\n value = toMessage(field, value);\n break;\n case \"scalar\":\n value = initScalar(field, value);\n break;\n case \"list\":\n value = initList(field, value);\n break;\n case \"map\":\n value = initMap(field, value);\n break;\n }\n unsafeSet(message, field, value);\n }\n return message;\n}\nfunction initScalar(field, value) {\n if (field.scalar == ScalarType.BYTES) {\n return toU8Arr(value);\n }\n return value;\n}\nfunction initMap(field, value) {\n if (isObject(value)) {\n if (field.scalar == ScalarType.BYTES) {\n return convertObjectValues(value, toU8Arr);\n }\n if (field.mapKind == \"message\") {\n return convertObjectValues(value, (val) => toMessage(field, val));\n }\n }\n return value;\n}\nfunction initList(field, value) {\n if (Array.isArray(value)) {\n if (field.scalar == ScalarType.BYTES) {\n return value.map(toU8Arr);\n }\n if (field.listKind == \"message\") {\n return value.map((item) => toMessage(field, item));\n }\n }\n return value;\n}\nfunction toMessage(field, value) {\n if (field.fieldKind == \"message\" &&\n !field.oneof &&\n isWrapperDesc(field.message)) {\n // Types from google/protobuf/wrappers.proto are unwrapped when used in\n // a singular field that is not part of a oneof group.\n return initScalar(field.message.fields[0], value);\n }\n if (isObject(value)) {\n if (field.message.typeName == \"google.protobuf.Struct\" &&\n field.parent.typeName !== \"google.protobuf.Value\") {\n // google.protobuf.Struct is represented with JsonObject when used in a\n // field, except when used in google.protobuf.Value.\n return value;\n }\n if (!isMessage(value, field.message)) {\n return create(field.message, value);\n }\n }\n return value;\n}\n// converts any ArrayLike<number> to Uint8Array if necessary.\nfunction toU8Arr(value) {\n return Array.isArray(value) ? new Uint8Array(value) : value;\n}\nfunction convertObjectValues(obj, fn) {\n const ret = {};\n for (const entry of Object.entries(obj)) {\n ret[entry[0]] = fn(entry[1]);\n }\n return ret;\n}\nconst tokenZeroMessageField = Symbol();\nconst messagePrototypes = new WeakMap();\n/**\n * Create a zero message.\n */\nfunction createZeroMessage(desc) {\n let msg;\n if (!needsPrototypeChain(desc)) {\n msg = {\n $typeName: desc.typeName,\n };\n for (const member of desc.members) {\n if (member.kind == \"oneof\" || member.presence == IMPLICIT) {\n msg[member.localName] = createZeroField(member);\n }\n }\n }\n else {\n // Support default values and track presence via the prototype chain\n const cached = messagePrototypes.get(desc);\n let prototype;\n let members;\n if (cached) {\n ({ prototype, members } = cached);\n }\n else {\n prototype = {};\n members = new Set();\n for (const member of desc.members) {\n if (member.kind == \"oneof\") {\n // we can only put immutable values on the prototype,\n // oneof ADTs are mutable\n continue;\n }\n if (member.fieldKind != \"scalar\" && member.fieldKind != \"enum\") {\n // only scalar and enum values are immutable, map, list, and message\n // are not\n continue;\n }\n if (member.presence == IMPLICIT) {\n // implicit presence tracks field presence by zero values - e.g. 0, false, \"\", are unset, 1, true, \"x\" are set.\n // message, map, list fields are mutable, and also have IMPLICIT presence.\n continue;\n }\n members.add(member);\n prototype[member.localName] = createZeroField(member);\n }\n messagePrototypes.set(desc, { prototype, members });\n }\n msg = Object.create(prototype);\n msg.$typeName = desc.typeName;\n for (const member of desc.members) {\n if (members.has(member)) {\n continue;\n }\n if (member.kind == \"field\") {\n if (member.fieldKind == \"message\") {\n continue;\n }\n if (member.fieldKind == \"scalar\" || member.fieldKind == \"enum\") {\n if (member.presence != IMPLICIT) {\n continue;\n }\n }\n }\n msg[member.localName] = createZeroField(member);\n }\n }\n return msg;\n}\n/**\n * Do we need the prototype chain to track field presence?\n */\nfunction needsPrototypeChain(desc) {\n switch (desc.file.edition) {\n case EDITION_PROTO3:\n // proto3 always uses implicit presence, we never need the prototype chain.\n return false;\n case EDITION_PROTO2:\n // proto2 never uses implicit presence, we always need the prototype chain.\n return true;\n default:\n // If a message uses scalar or enum fields with explicit presence, we need\n // the prototype chain to track presence. This rule does not apply to fields\n // in a oneof group - they use a different mechanism to track presence.\n return desc.fields.some((f) => f.presence != IMPLICIT && f.fieldKind != \"message\" && !f.oneof);\n }\n}\n/**\n * Returns a zero value for oneof groups, and for every field kind except\n * messages. Scalar and enum fields can have default values.\n */\nfunction createZeroField(field) {\n if (field.kind == \"oneof\") {\n return { case: undefined };\n }\n if (field.fieldKind == \"list\") {\n return [];\n }\n if (field.fieldKind == \"map\") {\n return {}; // Object.create(null) would be desirable here, but is unsupported by react https://react.dev/reference/react/use-server#serializable-parameters-and-return-values\n }\n if (field.fieldKind == \"message\") {\n return tokenZeroMessageField;\n }\n const defaultValue = field.getDefaultValue();\n if (defaultValue !== undefined) {\n return field.fieldKind == \"scalar\" && field.longAsString\n ? defaultValue.toString()\n : defaultValue;\n }\n return field.fieldKind == \"scalar\"\n ? scalarZeroValue(field.scalar, field.longAsString)\n : field.enum.values[0].number;\n}\n", "// Copyright 2021-2024 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.\nconst symbol = Symbol.for(\"@bufbuild/protobuf/text-encoding\");\n/**\n * Protobuf-ES requires the Text Encoding API to convert UTF-8 from and to\n * binary. This WHATWG API is widely available, but it is not part of the\n * ECMAScript standard. On runtimes where it is not available, use this\n * function to provide your own implementation.\n *\n * Note that the Text Encoding API does not provide a way to validate UTF-8.\n * Our implementation falls back to use encodeURIComponent().\n */\nexport function configureTextEncoding(textEncoding) {\n globalThis[symbol] = textEncoding;\n}\nexport function getTextEncoding() {\n if (globalThis[symbol] == undefined) {\n const te = new globalThis.TextEncoder();\n const td = new globalThis.TextDecoder();\n globalThis[symbol] = {\n encodeUtf8(text) {\n return te.encode(text);\n },\n decodeUtf8(bytes) {\n return td.decode(bytes);\n },\n checkUtf8(text) {\n try {\n encodeURIComponent(text);\n return true;\n }\n catch (e) {\n return false;\n }\n },\n };\n }\n return globalThis[symbol];\n}\n", "// Copyright 2021-2024 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.\nimport { varint32read, varint32write, varint64read, varint64write, } from \"./varint.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { getTextEncoding } from \"./text-encoding.js\";\n/* eslint-disable prefer-const,no-case-declarations,@typescript-eslint/restrict-plus-operands */\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 var WireType;\n(function (WireType) {\n /**\n * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n */\n WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n /**\n * Used for fixed64, sfixed64, double.\n * Always 8 bytes with little-endian byte order.\n */\n WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\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 WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n /**\n * Start of a tag-delimited aggregate, such as a proto2 group, or a message\n * in editions with message_encoding = DELIMITED.\n */\n WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n /**\n * End of a tag-delimited aggregate.\n */\n WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n /**\n * Used for fixed32, sfixed32, float.\n * Always 4 bytes with little-endian byte order.\n */\n WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType || (WireType = {}));\n/**\n * Maximum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MAX = 3.4028234663852886e38;\n/**\n * Minimum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexport const FLOAT32_MIN = -3.4028234663852886e38;\n/**\n * Maximum value for an unsigned 32-bit integer (Protobuf UINT32, FIXED32).\n */\nexport const UINT32_MAX = 0xffffffff;\n/**\n * Maximum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MAX = 0x7fffffff;\n/**\n * Minimum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexport const INT32_MIN = -0x80000000;\nexport class BinaryWriter {\n constructor(encodeUtf8 = getTextEncoding().encodeUtf8) {\n this.encodeUtf8 = encodeUtf8;\n /**\n * Previous fork states.\n */\n this.stack = [];\n this.chunks = [];\n this.buf = [];\n }\n /**\n * Return all bytes written and reset this writer.\n */\n finish() {\n if (this.buf.length) {\n this.chunks.push(new Uint8Array(this.buf)); // flush the buffer\n this.buf = [];\n }\n let len = 0;\n for (let i = 0; i < this.chunks.length; i++)\n 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 * 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() {\n this.stack.push({ chunks: this.chunks, buf: this.buf });\n this.chunks = [];\n this.buf = [];\n return this;\n }\n /**\n * Join the last fork. Write its length and bytes, then\n * return to the previous state.\n */\n join() {\n // get chunk of fork\n let chunk = this.finish();\n // restore previous state\n let prev = this.stack.pop();\n if (!prev)\n throw new Error(\"invalid state, fork stack empty\");\n this.chunks = prev.chunks;\n this.buf = prev.buf;\n // write length of chunk as varint\n this.uint32(chunk.byteLength);\n return this.raw(chunk);\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, type) {\n return this.uint32(((fieldNo << 3) | type) >>> 0);\n }\n /**\n * Write a chunk of raw bytes.\n */\n raw(chunk) {\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 * Write a `uint32` value, an unsigned 32 bit varint.\n */\n uint32(value) {\n assertUInt32(value);\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 return this;\n }\n /**\n * Write a `int32` value, a signed 32 bit varint.\n */\n int32(value) {\n assertInt32(value);\n varint32write(value, this.buf);\n return this;\n }\n /**\n * Write a `bool` value, a variant.\n */\n bool(value) {\n this.buf.push(value ? 1 : 0);\n return this;\n }\n /**\n * Write a `bytes` value, length-delimited arbitrary data.\n */\n bytes(value) {\n this.uint32(value.byteLength); // write length of chunk as varint\n return this.raw(value);\n }\n /**\n * Write a `string` value, length-delimited data converted to UTF-8 text.\n */\n string(value) {\n let chunk = this.encodeUtf8(value);\n this.uint32(chunk.byteLength); // write length of chunk as varint\n return this.raw(chunk);\n }\n /**\n * Write a `float` value, 32-bit floating point number.\n */\n float(value) {\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 * Write a `double` value, a 64-bit floating point number.\n */\n double(value) {\n let chunk = new Uint8Array(8);\n new DataView(chunk.buffer).setFloat64(0, value, true);\n return this.raw(chunk);\n }\n /**\n * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n */\n fixed32(value) {\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 * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n */\n sfixed32(value) {\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 * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n */\n sint32(value) {\n assertInt32(value);\n // zigzag encode\n value = ((value << 1) ^ (value >> 31)) >>> 0;\n varint32write(value, this.buf);\n return this;\n }\n /**\n * Write a `fixed64` value, a signed, fixed-length 64-bit integer.\n */\n sfixed64(value) {\n let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), 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 * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n */\n fixed64(value) {\n let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), 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 * Write a `int64` value, a signed 64-bit varint.\n */\n int64(value) {\n let tc = protoInt64.enc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n /**\n * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64(value) {\n let tc = protoInt64.enc(value), \n // zigzag encode\n sign = tc.hi >> 31, lo = (tc.lo << 1) ^ sign, hi = ((tc.hi << 1) | (tc.lo >>> 31)) ^ sign;\n varint64write(lo, hi, this.buf);\n return this;\n }\n /**\n * Write a `uint64` value, an unsigned 64-bit varint.\n */\n uint64(value) {\n let tc = protoInt64.uEnc(value);\n varint64write(tc.lo, tc.hi, this.buf);\n return this;\n }\n}\nexport class BinaryReader {\n constructor(buf, decodeUtf8 = getTextEncoding().decodeUtf8) {\n this.decodeUtf8 = decodeUtf8;\n this.varint64 = varint64read; // dirty cast for `this`\n /**\n * Read a `uint32` field, an unsigned 32 bit varint.\n */\n this.uint32 = varint32read;\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 }\n /**\n * Reads a tag - field number and wire type.\n */\n tag() {\n let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;\n if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n return [fieldNo, wireType];\n }\n /**\n * Skip one element and return the skipped data.\n *\n * When skipping StartGroup, provide the tags field number to check for\n * matching field number in the EndGroup tag.\n */\n skip(wireType, fieldNo) {\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-expect-error TS7029: Fallthrough case in switch\n case WireType.Bit64:\n this.pos += 4;\n // eslint-disable-next-line no-fallthrough\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 for (;;) {\n const [fn, wt] = this.tag();\n if (wt === WireType.EndGroup) {\n if (fieldNo !== undefined && fn !== fieldNo) {\n throw new Error(\"invalid end group tag\");\n }\n break;\n }\n this.skip(wt, fn);\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 * Throws error if position in byte array is out of range.\n */\n assertBounds() {\n if (this.pos > this.len)\n throw new RangeError(\"premature EOF\");\n }\n /**\n * Read a `int32` field, a signed 32 bit varint.\n */\n int32() {\n return this.uint32() | 0;\n }\n /**\n * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n */\n sint32() {\n let zze = this.uint32();\n // decode zigzag\n return (zze >>> 1) ^ -(zze & 1);\n }\n /**\n * Read a `int64` field, a signed 64-bit varint.\n */\n int64() {\n return protoInt64.dec(...this.varint64());\n }\n /**\n * Read a `uint64` field, an unsigned 64-bit varint.\n */\n uint64() {\n return protoInt64.uDec(...this.varint64());\n }\n /**\n * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n */\n sint64() {\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 * Read a `bool` field, a variant.\n */\n bool() {\n let [lo, hi] = this.varint64();\n return lo !== 0 || hi !== 0;\n }\n /**\n * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n */\n fixed32() {\n return this.view.getUint32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n */\n sfixed32() {\n return this.view.getInt32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n */\n fixed64() {\n return protoInt64.uDec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n */\n sfixed64() {\n return protoInt64.dec(this.sfixed32(), this.sfixed32());\n }\n /**\n * Read a `float` field, 32-bit floating point number.\n */\n float() {\n return this.view.getFloat32((this.pos += 4) - 4, true);\n }\n /**\n * Read a `double` field, a 64-bit floating point number.\n */\n double() {\n return this.view.getFloat64((this.pos += 8) - 8, true);\n }\n /**\n * Read a `bytes` field, length-delimited arbitrary data.\n */\n bytes() {\n let len = this.uint32(), start = this.pos;\n this.pos += len;\n this.assertBounds();\n return this.buf.subarray(start, start + len);\n }\n /**\n * Read a `string` field, length-delimited data converted to UTF-8 text.\n */\n string() {\n return this.decodeUtf8(this.bytes());\n }\n}\n/**\n * Assert a valid signed protobuf 32-bit integer as a number or string.\n */\nfunction assertInt32(arg) {\n if (typeof arg == \"string\") {\n arg = Number(arg);\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid int32: \" + typeof arg);\n }\n if (!Number.isInteger(arg) ||\n arg > INT32_MAX ||\n arg < INT32_MIN)\n throw new Error(\"invalid int32: \" + arg);\n}\n/**\n * Assert a valid unsigned protobuf 32-bit integer as a number or string.\n */\nfunction assertUInt32(arg) {\n if (typeof arg == \"string\") {\n arg = Number(arg);\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid uint32: \" + typeof arg);\n }\n if (!Number.isInteger(arg) ||\n arg > UINT32_MAX ||\n arg < 0)\n throw new Error(\"invalid uint32: \" + arg);\n}\n/**\n * Assert a valid protobuf float value as a number or string.\n */\nfunction assertFloat32(arg) {\n if (typeof arg == \"string\") {\n const o = arg;\n arg = Number(arg);\n if (isNaN(arg) && o !== \"NaN\") {\n throw new Error(\"invalid float32: \" + o);\n }\n }\n else if (typeof arg != \"number\") {\n throw new Error(\"invalid float32: \" + typeof arg);\n }\n if (Number.isFinite(arg) &&\n (arg > FLOAT32_MAX || arg < FLOAT32_MIN))\n throw new Error(\"invalid float32: \" + arg);\n}\n", "// Copyright 2021-2024 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.\nimport { ScalarType, } from \"../descriptors.js\";\nimport { isMessage } from \"../is-message.js\";\nimport { FieldError } from \"./error.js\";\nimport { isReflectList, isReflectMap, isReflectMessage } from \"./guard.js\";\nimport { FLOAT32_MAX, FLOAT32_MIN, INT32_MAX, INT32_MIN, UINT32_MAX, } from \"../wire/binary-encoding.js\";\nimport { getTextEncoding } from \"../wire/text-encoding.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\n/**\n * Check whether the given field value is valid for the reflect API.\n */\nexport function checkField(field, value) {\n const check = field.fieldKind == \"list\"\n ? isReflectList(value, field)\n : field.fieldKind == \"map\"\n ? isReflectMap(value, field)\n : checkSingular(field, value);\n if (check === true) {\n return undefined;\n }\n let reason;\n switch (field.fieldKind) {\n case \"list\":\n reason = `expected ${formatReflectList(field)}, got ${formatVal(value)}`;\n break;\n case \"map\":\n reason = `expected ${formatReflectMap(field)}, got ${formatVal(value)}`;\n break;\n default: {\n reason = reasonSingular(field, value, check);\n }\n }\n return new FieldError(field, reason);\n}\n/**\n * Check whether the given list item is valid for the reflect API.\n */\nexport function checkListItem(field, index, value) {\n const check = checkSingular(field, value);\n if (check !== true) {\n return new FieldError(field, `list item #${index + 1}: ${reasonSingular(field, value, check)}`);\n }\n return undefined;\n}\n/**\n * Check whether the given map key and value are valid for the reflect API.\n */\nexport function checkMapEntry(field, key, value) {\n const checkKey = checkScalarValue(key, field.mapKey);\n if (checkKey !== true) {\n return new FieldError(field, `invalid map key: ${reasonSingular({ scalar: field.mapKey }, key, checkKey)}`);\n }\n const checkVal = checkSingular(field, value);\n if (checkVal !== true) {\n return new FieldError(field, `map entry ${formatVal(key)}: ${reasonSingular(field, value, checkVal)}`);\n }\n return undefined;\n}\nfunction checkSingular(field, value) {\n if (field.scalar !== undefined) {\n return checkScalarValue(value, field.scalar);\n }\n if (field.enum !== undefined) {\n if (field.enum.open) {\n return Number.isInteger(value);\n }\n return field.enum.values.some((v) => v.number === value);\n }\n return isReflectMessage(value, field.message);\n}\nfunction checkScalarValue(value, scalar) {\n switch (scalar) {\n case ScalarType.DOUBLE:\n return typeof value == \"number\";\n case ScalarType.FLOAT:\n if (typeof value != \"number\") {\n return false;\n }\n if (Number.isNaN(value) || !Number.isFinite(value)) {\n return true;\n }\n if (value > FLOAT32_MAX || value < FLOAT32_MIN) {\n return `${value.toFixed()} out of range`;\n }\n return true;\n case ScalarType.INT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n // signed\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n return false;\n }\n if (value > INT32_MAX || value < INT32_MIN) {\n return `${value.toFixed()} out of range`;\n }\n return true;\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n // unsigned\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n return false;\n }\n if (value > UINT32_MAX || value < 0) {\n return `${value.toFixed()} out of range`;\n }\n return true;\n case ScalarType.BOOL:\n return typeof value == \"boolean\";\n case ScalarType.STRING:\n if (typeof value != \"string\") {\n return false;\n }\n return getTextEncoding().checkUtf8(value) || \"invalid UTF8\";\n case ScalarType.BYTES:\n return value instanceof Uint8Array;\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n // signed\n if (typeof value != \"string\" &&\n typeof value !== \"bigint\" &&\n typeof value !== \"number\") {\n return false;\n }\n try {\n protoInt64.parse(value);\n }\n catch (e) {\n return `${value} out of range`;\n }\n return true;\n case ScalarType.FIXED64:\n case ScalarType.UINT64:\n // unsigned\n if (typeof value != \"string\" &&\n typeof value !== \"bigint\" &&\n typeof value !== \"number\") {\n return false;\n }\n try {\n protoInt64.uParse(value);\n }\n catch (e) {\n return `${value} out of range`;\n }\n return true;\n }\n}\nfunction reasonSingular(field, val, details) {\n details =\n typeof details == \"string\" ? `: ${details}` : `, got ${formatVal(val)}`;\n if (field.scalar !== undefined) {\n return `expected ${scalarTypeDescription(field.scalar)}` + details;\n }\n else if (field.enum !== undefined) {\n return `expected ${field.enum.toString()}` + details;\n }\n return `expected ${formatReflectMessage(field.message)}` + details;\n}\nexport function formatVal(val) {\n switch (typeof val) {\n case \"object\":\n if (val === null) {\n return \"null\";\n }\n if (val instanceof Uint8Array) {\n return `Uint8Array(${val.length})`;\n }\n if (Array.isArray(val)) {\n return `Array(${val.length})`;\n }\n if (isReflectList(val)) {\n return formatReflectList(val.field());\n }\n if (isReflectMap(val)) {\n return formatReflectMap(val.field());\n }\n if (isReflectMessage(val)) {\n return formatReflectMessage(val.desc);\n }\n if (isMessage(val)) {\n return `message ${val.$typeName}`;\n }\n return \"object\";\n case \"string\":\n return val.length > 30 ? \"string\" : `\"${val.split('\"').join('\\\\\"')}\"`;\n case \"boolean\":\n return String(val);\n case \"number\":\n return String(val);\n case \"bigint\":\n return String(val) + \"n\";\n default:\n // \"symbol\" | \"undefined\" | \"object\" | \"function\"\n return typeof val;\n }\n}\nfunction formatReflectMessage(desc) {\n return `ReflectMessage (${desc.typeName})`;\n}\nfunction formatReflectList(field) {\n switch (field.listKind) {\n case \"message\":\n return `ReflectList (${field.message.toString()})`;\n case \"enum\":\n return `ReflectList (${field.enum.toString()})`;\n case \"scalar\":\n return `ReflectList (${ScalarType[field.scalar]})`;\n }\n}\nfunction formatReflectMap(field) {\n switch (field.mapKind) {\n case \"message\":\n return `ReflectMap (${ScalarType[field.mapKey]}, ${field.message.toString()})`;\n case \"enum\":\n return `ReflectMap (${ScalarType[field.mapKey]}, ${field.enum.toString()})`;\n case \"scalar\":\n return `ReflectMap (${ScalarType[field.mapKey]}, ${ScalarType[field.scalar]})`;\n }\n}\nfunction scalarTypeDescription(scalar) {\n switch (scalar) {\n case ScalarType.STRING:\n return \"string\";\n case ScalarType.BOOL:\n return \"boolean\";\n case ScalarType.INT64:\n case ScalarType.SINT64:\n case ScalarType.SFIXED64:\n return \"bigint (int64)\";\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n return \"bigint (uint64)\";\n case ScalarType.BYTES:\n return \"Uint8Array\";\n case ScalarType.DOUBLE:\n return \"number (float64)\";\n case ScalarType.FLOAT:\n return \"number (float32)\";\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n return \"number (uint32)\";\n case ScalarType.INT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n return \"number (int32)\";\n }\n}\n", "// Copyright 2021-2024 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.\nimport { ScalarType, } from \"../descriptors.js\";\nimport { checkField, checkListItem, checkMapEntry } from \"./reflect-check.js\";\nimport { FieldError } from \"./error.js\";\nimport { unsafeClear, unsafeGet, unsafeIsSet, unsafeLocal, unsafeOneofCase, unsafeSet, } from \"./unsafe.js\";\nimport { create } from \"../create.js\";\nimport { isWrapper, isWrapperDesc } from \"../wkt/wrappers.js\";\nimport { scalarZeroValue } from \"./scalar.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\nimport { isObject, isReflectList, isReflectMap, isReflectMessage, } from \"./guard.js\";\n/**\n * Create a ReflectMessage.\n */\nexport function reflect(messageDesc, message, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n return new ReflectMessageImpl(messageDesc, message, check);\n}\nclass ReflectMessageImpl {\n get sortedFields() {\n var _a;\n return ((_a = this._sortedFields) !== null && _a !== void 0 ? _a : (this._sortedFields = this.desc.fields\n .concat()\n .sort((a, b) => a.number - b.number)));\n }\n constructor(messageDesc, message, check = true) {\n this.lists = new Map();\n this.maps = new Map();\n this.check = check;\n this.desc = messageDesc;\n this.message = this[unsafeLocal] = message !== null && message !== void 0 ? message : create(messageDesc);\n this.fields = messageDesc.fields;\n this.oneofs = messageDesc.oneofs;\n this.members = messageDesc.members;\n }\n findNumber(number) {\n if (!this._fieldsByNumber) {\n this._fieldsByNumber = new Map(this.desc.fields.map((f) => [f.number, f]));\n }\n return this._fieldsByNumber.get(number);\n }\n oneofCase(oneof) {\n assertOwn(this.message, oneof);\n return unsafeOneofCase(this.message, oneof);\n }\n isSet(field) {\n assertOwn(this.message, field);\n return unsafeIsSet(this.message, field);\n }\n clear(field) {\n assertOwn(this.message, field);\n unsafeClear(this.message, field);\n }\n get(field) {\n assertOwn(this.message, field);\n const value = unsafeGet(this.message, field);\n switch (field.fieldKind) {\n case \"list\":\n // eslint-disable-next-line no-case-declarations\n let list = this.lists.get(field);\n if (!list || list[unsafeLocal] !== value) {\n this.lists.set(field, (list = new ReflectListImpl(field, value, this.check)));\n }\n return list;\n case \"map\":\n // eslint-disable-next-line no-case-declarations\n let map = this.maps.get(field);\n if (!map || map[unsafeLocal] !== value) {\n this.maps.set(field, (map = new ReflectMapImpl(field, value, this.check)));\n }\n return map;\n case \"message\":\n return messageToReflect(field, value, this.check);\n case \"scalar\":\n return (value === undefined\n ? scalarZeroValue(field.scalar, false)\n : longToReflect(field, value));\n case \"enum\":\n return (value !== null && value !== void 0 ? value : field.enum.values[0].number);\n }\n }\n set(field, value) {\n assertOwn(this.message, field);\n if (this.check) {\n const err = checkField(field, value);\n if (err) {\n throw err;\n }\n }\n let local;\n if (field.fieldKind == \"message\") {\n local = messageToLocal(field, value);\n }\n else if (isReflectMap(value) || isReflectList(value)) {\n local = value[unsafeLocal];\n }\n else {\n local = longToLocal(field, value);\n }\n unsafeSet(this.message, field, local);\n }\n getUnknown() {\n return this.message.$unknown;\n }\n setUnknown(value) {\n this.message.$unknown = value;\n }\n}\nfunction assertOwn(owner, member) {\n if (member.parent.typeName !== owner.$typeName) {\n throw new FieldError(member, `cannot use ${member.toString()} with message ${owner.$typeName}`, \"ForeignFieldError\");\n }\n}\n/**\n * Create a ReflectList.\n */\nexport function reflectList(field, unsafeInput, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n return new ReflectListImpl(field, unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : [], check);\n}\nclass ReflectListImpl {\n field() {\n return this._field;\n }\n get size() {\n return this._arr.length;\n }\n constructor(field, unsafeInput, check) {\n this._field = field;\n this._arr = this[unsafeLocal] = unsafeInput;\n this.check = check;\n }\n get(index) {\n const item = this._arr[index];\n return item === undefined\n ? undefined\n : listItemToReflect(this._field, item, this.check);\n }\n set(index, item) {\n if (index < 0 || index >= this._arr.length) {\n throw new FieldError(this._field, `list item #${index + 1}: out of range`);\n }\n if (this.check) {\n const err = checkListItem(this._field, index, item);\n if (err) {\n throw err;\n }\n }\n this._arr[index] = listItemToLocal(this._field, item);\n }\n add(item) {\n if (this.check) {\n const err = checkListItem(this._field, this._arr.length, item);\n if (err) {\n throw err;\n }\n }\n this._arr.push(listItemToLocal(this._field, item));\n return undefined;\n }\n clear() {\n this._arr.splice(0, this._arr.length);\n }\n [Symbol.iterator]() {\n return this.values();\n }\n keys() {\n return this._arr.keys();\n }\n *values() {\n for (const item of this._arr) {\n yield listItemToReflect(this._field, item, this.check);\n }\n }\n *entries() {\n for (let i = 0; i < this._arr.length; i++) {\n yield [i, listItemToReflect(this._field, this._arr[i], this.check)];\n }\n }\n}\n/**\n * Create a ReflectMap.\n */\nexport function reflectMap(field, unsafeInput, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n return new ReflectMapImpl(field, unsafeInput, check);\n}\nclass ReflectMapImpl {\n constructor(field, unsafeInput, check = true) {\n this.obj = this[unsafeLocal] = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : {};\n this.check = check;\n this._field = field;\n }\n field() {\n return this._field;\n }\n set(key, value) {\n if (this.check) {\n const err = checkMapEntry(this._field, key, value);\n if (err) {\n throw err;\n }\n }\n this.obj[mapKeyToLocal(key)] = mapValueToLocal(this._field, value);\n return this;\n }\n delete(key) {\n const k = mapKeyToLocal(key);\n const has = Object.prototype.hasOwnProperty.call(this.obj, k);\n if (has) {\n delete this.obj[k];\n }\n return has;\n }\n clear() {\n for (const key of Object.keys(this.obj)) {\n delete this.obj[key];\n }\n }\n get(key) {\n let val = this.obj[mapKeyToLocal(key)];\n if (val !== undefined) {\n val = mapValueToReflect(this._field, val, this.check);\n }\n return val;\n }\n has(key) {\n return Object.prototype.hasOwnProperty.call(this.obj, mapKeyToLocal(key));\n }\n *keys() {\n for (const objKey of Object.keys(this.obj)) {\n yield mapKeyToReflect(objKey, this._field.mapKey);\n }\n }\n *entries() {\n for (const objEntry of Object.entries(this.obj)) {\n yield [\n mapKeyToReflect(objEntry[0], this._field.mapKey),\n mapValueToReflect(this._field, objEntry[1], this.check),\n ];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n get size() {\n return Object.keys(this.obj).length;\n }\n *values() {\n for (const val of Object.values(this.obj)) {\n yield mapValueToReflect(this._field, val, this.check);\n }\n }\n forEach(callbackfn, thisArg) {\n for (const mapEntry of this.entries()) {\n callbackfn.call(thisArg, mapEntry[1], mapEntry[0], this);\n }\n }\n}\nfunction messageToLocal(field, value) {\n if (!isReflectMessage(value)) {\n return value;\n }\n if (isWrapper(value.message) &&\n !field.oneof &&\n field.fieldKind == \"message\") {\n // Types from google/protobuf/wrappers.proto are unwrapped when used in\n // a singular field that is not part of a oneof group.\n return value.message.value;\n }\n if (value.desc.typeName == \"google.protobuf.Struct\" &&\n field.parent.typeName != \"google.protobuf.Value\") {\n // google.protobuf.Struct is represented with JsonObject when used in a\n // field, except when used in google.protobuf.Value.\n return wktStructToLocal(value.message);\n }\n return value.message;\n}\nfunction messageToReflect(field, value, check) {\n if (value !== undefined) {\n if (isWrapperDesc(field.message) &&\n !field.oneof &&\n field.fieldKind == \"message\") {\n // Types from google/protobuf/wrappers.proto are unwrapped when used in\n // a singular field that is not part of a oneof group.\n value = {\n $typeName: field.message.typeName,\n value: longToReflect(field.message.fields[0], value),\n };\n }\n else if (field.message.typeName == \"google.protobuf.Struct\" &&\n field.parent.typeName != \"google.protobuf.Value\" &&\n isObject(value)) {\n // google.protobuf.Struct is represented with JsonObject when used in a\n // field, except when used in google.protobuf.Value.\n value = wktStructToReflect(value);\n }\n }\n return new ReflectMessageImpl(field.message, value, check);\n}\nfunction listItemToLocal(field, value) {\n if (field.listKind == \"message\") {\n return messageToLocal(field, value);\n }\n return longToLocal(field, value);\n}\nfunction listItemToReflect(field, value, check) {\n if (field.listKind == \"message\") {\n return messageToReflect(field, value, check);\n }\n return longToReflect(field, value);\n}\nfunction mapValueToLocal(field, value) {\n if (field.mapKind == \"message\") {\n return messageToLocal(field, value);\n }\n return longToLocal(field, value);\n}\nfunction mapValueToReflect(field, value, check) {\n if (field.mapKind == \"message\") {\n return messageToReflect(field, value, check);\n }\n return value;\n}\nfunction mapKeyToLocal(key) {\n return typeof key == \"string\" || typeof key == \"number\" ? key : String(key);\n}\n/**\n * Converts a map key (any scalar value except float, double, or bytes) from its\n * representation in a message (string or number, the only possible object key\n * types) to the closest possible type in ECMAScript.\n */\nfunction mapKeyToReflect(key, type) {\n switch (type) {\n case ScalarType.STRING:\n return key;\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32: {\n const n = Number.parseInt(key);\n if (Number.isFinite(n)) {\n return n;\n }\n break;\n }\n case ScalarType.BOOL:\n switch (key) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n }\n break;\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n try {\n return protoInt64.uParse(key);\n }\n catch (_a) {\n //\n }\n break;\n default:\n // INT64, SFIXED64, SINT64\n try {\n return protoInt64.parse(key);\n }\n catch (_b) {\n //\n }\n break;\n }\n return key;\n}\nfunction longToReflect(field, value) {\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (field.scalar) {\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n if (\"longAsString\" in field &&\n field.longAsString &&\n typeof value == \"string\") {\n value = protoInt64.parse(value);\n }\n break;\n case ScalarType.FIXED64:\n case ScalarType.UINT64:\n if (\"longAsString\" in field &&\n field.longAsString &&\n typeof value == \"string\") {\n value = protoInt64.uParse(value);\n }\n break;\n }\n return value;\n}\nfunction longToLocal(field, value) {\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (field.scalar) {\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n if (\"longAsString\" in field && field.longAsString) {\n value = String(value);\n }\n else if (typeof value == \"string\" || typeof value == \"number\") {\n value = protoInt64.parse(value);\n }\n break;\n case ScalarType.FIXED64:\n case ScalarType.UINT64:\n if (\"longAsString\" in field && field.longAsString) {\n value = String(value);\n }\n else if (typeof value == \"string\" || typeof value == \"number\") {\n value = protoInt64.uParse(value);\n }\n break;\n }\n return value;\n}\nfunction wktStructToReflect(json) {\n const struct = {\n $typeName: \"google.protobuf.Struct\",\n fields: {},\n };\n if (isObject(json)) {\n for (const [k, v] of Object.entries(json)) {\n struct.fields[k] = wktValueToReflect(v);\n }\n }\n return struct;\n}\nfunction wktStructToLocal(val) {\n const json = {};\n for (const [k, v] of Object.entries(val.fields)) {\n json[k] = wktValueToLocal(v);\n }\n return json;\n}\nfunction wktValueToLocal(val) {\n switch (val.kind.case) {\n case \"structValue\":\n return wktStructToLocal(val.kind.value);\n case \"listValue\":\n return val.kind.value.values.map(wktValueToLocal);\n case \"nullValue\":\n case undefined:\n return null;\n default:\n return val.kind.value;\n }\n}\nfunction wktValueToReflect(json) {\n const value = {\n $typeName: \"google.protobuf.Value\",\n kind: { case: undefined },\n };\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- invalid input is unselected kind\n switch (typeof json) {\n case \"number\":\n value.kind = { case: \"numberValue\", value: json };\n break;\n case \"string\":\n value.kind = { case: \"stringValue\", value: json };\n break;\n case \"boolean\":\n value.kind = { case: \"boolValue\", value: json };\n break;\n case \"object\":\n if (json === null) {\n const nullValue = 0;\n value.kind = { case: \"nullValue\", value: nullValue };\n }\n else if (Array.isArray(json)) {\n const listValue = {\n $typeName: \"google.protobuf.ListValue\",\n values: [],\n };\n if (Array.isArray(json)) {\n for (const e of json) {\n listValue.values.push(wktValueToReflect(e));\n }\n }\n value.kind = {\n case: \"listValue\",\n value: listValue,\n };\n }\n else {\n value.kind = {\n case: \"structValue\",\n value: wktStructToReflect(json),\n };\n }\n break;\n }\n return value;\n}\n", "// Copyright 2021-2024 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/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unnecessary-condition, prefer-const */\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 */\nexport function base64Decode(base64Str) {\n const table = getDecodeTable();\n // estimate byte size, not accounting for inner padding and whitespace\n let es = (base64Str.length * 3) / 4;\n if (base64Str[base64Str.length - 2] == \"=\")\n es -= 2;\n else if (base64Str[base64Str.length - 1] == \"=\")\n es -= 1;\n let bytes = new Uint8Array(es), 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 = table[base64Str.charCodeAt(i)];\n if (b === undefined) {\n switch (base64Str[i]) {\n // @ts-expect-error TS7029: Fallthrough case in switch\n case \"=\":\n groupPos = 0; // reset state when padding found\n // eslint-disable-next-line no-fallthrough\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)\n throw Error(\"invalid base64 string\");\n return bytes.subarray(0, bytePos);\n}\n/**\n * Encode a byte array to a base64 string.\n *\n * By default, this function uses the standard base64 encoding with padding.\n *\n * To encode without padding, use encoding = \"std_raw\".\n *\n * To encode with the URL encoding, use encoding = \"url\", which replaces the\n * characters +/ by their URL-safe counterparts -_, and omits padding.\n */\nexport function base64Encode(bytes, encoding = \"std\") {\n const table = getEncodeTable(encoding);\n const pad = encoding == \"std\";\n let base64 = \"\", groupPos = 0, // position in base64 group\n b, // current byte\n p = 0; // carry over from previous byte\n for (let i = 0; i < bytes.length; i++) {\n b = bytes[i];\n switch (groupPos) {\n case 0:\n base64 += table[b >> 2];\n p = (b & 3) << 4;\n groupPos = 1;\n break;\n case 1:\n base64 += table[p | (b >> 4)];\n p = (b & 15) << 2;\n groupPos = 2;\n break;\n case 2:\n base64 += table[p | (b >> 6)];\n base64 += table[b & 63];\n groupPos = 0;\n break;\n }\n }\n // add output padding\n if (groupPos) {\n base64 += table[p];\n if (pad) {\n base64 += \"=\";\n if (groupPos == 1)\n base64 += \"=\";\n }\n }\n return base64;\n}\n// lookup table from base64 character to byte\nlet encodeTableStd;\nlet encodeTableUrl;\n// lookup table from base64 character *code* to byte because lookup by number is fast\nlet decodeTable;\nfunction getEncodeTable(encoding) {\n if (!encodeTableStd) {\n encodeTableStd =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");\n encodeTableUrl = encodeTableStd.slice(0, -2).concat(\"-\", \"_\");\n }\n return encoding == \"url\" ? encodeTableUrl : encodeTableStd;\n}\nfunction getDecodeTable() {\n if (!decodeTable) {\n decodeTable = [];\n const encodeTable = getEncodeTable(\"std\");\n for (let i = 0; i < encodeTable.length; i++)\n decodeTable[encodeTable[i].charCodeAt(0)] = i;\n // support base64url variants\n decodeTable[\"-\".charCodeAt(0)] = encodeTable.indexOf(\"+\");\n decodeTable[\"_\".charCodeAt(0)] = encodeTable.indexOf(\"/\");\n }\n return decodeTable;\n}\n", "// Copyright 2021-2024 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 * Converts snake_case to protoCamelCase according to the convention\n * used by protoc to convert a field name to a JSON name.\n */\nexport function protoCamelCase(snakeCase) {\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 * Names that cannot be used for object properties because they are reserved\n * by built-in JavaScript properties.\n */\nconst reservedObjectProperties = new Set([\n // names reserved by JavaScript\n \"constructor\",\n \"toString\",\n \"toJSON\",\n \"valueOf\",\n]);\n/**\n * Escapes names that are reserved for ECMAScript built-in object properties.\n *\n * Also see safeIdentifier() from @bufbuild/protoplugin.\n */\nexport function safeObjectProperty(name) {\n return reservedObjectProperties.has(name) ? name + \"$\" : name;\n}\n", "// Copyright 2021-2024 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.\nimport { protoCamelCase } from \"../reflect/names.js\";\nimport { unsafeIsSetExplicit } from \"../reflect/unsafe.js\";\n/**\n * @private\n */\nexport function restoreJsonNames(message) {\n for (const f of message.field) {\n if (!unsafeIsSetExplicit(f, \"jsonName\")) {\n f.jsonName = protoCamelCase(f.name);\n }\n }\n message.nestedType.forEach(restoreJsonNames);\n}\n", "// Copyright 2021-2024 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.\nimport { ScalarType } from \"../descriptors.js\";\nimport { protoInt64 } from \"../proto-int64.js\";\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n/**\n * Parse an enum value from the Protobuf text format.\n *\n * @private\n */\nexport function parseTextFormatEnumValue(descEnum, value) {\n const enumValue = descEnum.values.find((v) => v.name === value);\n if (!enumValue) {\n throw new Error(`cannot parse ${descEnum} default value: ${value}`);\n }\n return enumValue.number;\n}\n/**\n * Parse a scalar value from the Protobuf text format.\n *\n * @private\n */\nexport function parseTextFormatScalarValue(type, value) {\n switch (type) {\n case ScalarType.STRING:\n return value;\n case ScalarType.BYTES: {\n const u = unescapeBytesDefaultValue(value);\n if (u === false) {\n throw new Error(`cannot parse ${ScalarType[type]} default value: ${value}`);\n }\n return u;\n }\n case ScalarType.INT64:\n case ScalarType.SFIXED64:\n case ScalarType.SINT64:\n return protoInt64.parse(value);\n case ScalarType.UINT64:\n case ScalarType.FIXED64:\n return protoInt64.uParse(value);\n case ScalarType.DOUBLE:\n case ScalarType.FLOAT:\n switch (value) {\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(value);\n }\n case ScalarType.BOOL:\n return value === \"true\";\n case ScalarType.INT32:\n case ScalarType.UINT32:\n case ScalarType.SINT32:\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n return parseInt(value, 10);\n }\n}\n/**\n * Parses a text-encoded default value (proto2) of a BYTES field.\n */\nfunction unescapeBytesDefaultValue(str) {\n const b = [];\n const input = {\n tail: str,\n c: \"\",\n next() {\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) {\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) {\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(chunk[0], chunk[1], chunk[2], chunk[3], chunk[4], chunk[5], chunk[6], chunk[7]);\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-2024 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 * Iterate over all types - enumerations, extensions, services, messages -\n * and enumerations, extensions and messages nested in messages.\n */\nexport function* nestedTypes(desc) {\n switch (desc.kind) {\n case \"file\":\n for (const message of desc.messages) {\n yield message;\n yield* nestedTypes(message);\n }\n yield* desc.enums;\n yield* desc.services;\n yield* desc.extensions;\n break;\n case \"message\":\n for (const message of desc.nestedMessages) {\n yield message;\n yield* nestedTypes(message);\n }\n yield* desc.nestedEnums;\n yield* desc.nestedExtensions;\n break;\n }\n}\n/**\n * Returns the ancestors of a given Protobuf element, up to the file.\n */\nexport function parentTypes(desc) {\n const parents = [];\n while (desc.kind !== \"file\") {\n const p = parent(desc);\n desc = p;\n parents.push(p);\n }\n return parents;\n}\nfunction parent(desc) {\n var _a;\n switch (desc.kind) {\n case \"enum_value\":\n case \"field\":\n case \"oneof\":\n case \"rpc\":\n return desc.parent;\n case \"service\":\n return desc.file;\n case \"extension\":\n case \"enum\":\n case \"message\":\n return (_a = desc.parent) !== null && _a !== void 0 ? _a : desc.file;\n }\n}\n", "// Copyright 2021-2024 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.\nimport { ScalarType, } from \"./descriptors.js\";\nimport { parseTextFormatEnumValue, parseTextFormatScalarValue, } from \"./wire/text-format.js\";\nimport { nestedTypes } from \"./reflect/nested-types.js\";\nimport { unsafeIsSetExplicit } from \"./reflect/unsafe.js\";\nimport { protoCamelCase, safeObjectProperty } from \"./reflect/names.js\";\n/**\n * Create a registry from the given inputs.\n *\n * An input can be:\n * - Any message, enum, service, or extension descriptor, which adds just the\n * descriptor for this type.\n * - A file descriptor, which adds all typed defined in this file.\n * - A registry, which adds all types from the registry.\n *\n * For duplicate descriptors (same type name), the one given last wins.\n */\nexport function createRegistry(...input) {\n return initBaseRegistry(input);\n}\n/**\n * Create a registry that allows adding and removing descriptors.\n */\nexport function createMutableRegistry(...input) {\n const reg = initBaseRegistry(input);\n return Object.assign(Object.assign({}, reg), { remove(desc) {\n var _a;\n if (desc.kind == \"extension\") {\n (_a = reg.extendees.get(desc.extendee.typeName)) === null || _a === void 0 ? void 0 : _a.delete(desc.number);\n }\n reg.types.delete(desc.typeName);\n } });\n}\nexport function createFileRegistry(...args) {\n const registry = createBaseRegistry();\n if (!args.length) {\n return registry;\n }\n if (\"$typeName\" in args[0] &&\n args[0].$typeName == \"google.protobuf.FileDescriptorSet\") {\n for (const file of args[0].file) {\n addFile(file, registry);\n }\n return registry;\n }\n if (\"$typeName\" in args[0]) {\n const input = args[0];\n const resolve = args[1];\n const seen = new Set();\n // eslint-disable-next-line no-inner-declarations\n function recurseDeps(file) {\n const deps = [];\n for (const protoFileName of file.dependency) {\n if (registry.getFile(protoFileName) != undefined) {\n continue;\n }\n if (seen.has(protoFileName)) {\n continue;\n }\n const dep = resolve(protoFileName);\n if (!dep) {\n throw new Error(`Unable to resolve ${protoFileName}, imported by ${file.name}`);\n }\n if (\"kind\" in dep) {\n registry.addFile(dep, false, true);\n }\n else {\n seen.add(dep.name);\n deps.push(dep);\n }\n }\n return deps.concat(...deps.map(recurseDeps));\n }\n for (const file of [input, ...recurseDeps(input)].reverse()) {\n addFile(file, registry);\n }\n }\n else {\n for (const fileReg of args) {\n for (const file of fileReg.files) {\n registry.addFile(file);\n }\n }\n }\n return registry;\n}\n/**\n * @private\n */\nfunction createBaseRegistry() {\n const types = new Map();\n const extendees = new Map();\n const files = new Map();\n return {\n kind: \"registry\",\n types,\n extendees,\n [Symbol.iterator]() {\n return types.values();\n },\n get files() {\n return files.values();\n },\n addFile(file, skipTypes, withDeps) {\n files.set(file.proto.name, file);\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (!skipTypes) {\n for (const type of nestedTypes(file)) {\n this.add(type);\n }\n }\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (withDeps) {\n for (const f of file.dependencies) {\n this.addFile(f, skipTypes, withDeps);\n }\n }\n },\n add(desc) {\n if (desc.kind == \"extension\") {\n let numberToExt = extendees.get(desc.extendee.typeName);\n if (!numberToExt) {\n extendees.set(desc.extendee.typeName, (numberToExt = new Map()));\n }\n numberToExt.set(desc.number, desc);\n }\n types.set(desc.typeName, desc);\n },\n get(typeName) {\n return types.get(typeName);\n },\n getFile(fileName) {\n return files.get(fileName);\n },\n getMessage(typeName) {\n const t = types.get(typeName);\n return (t === null || t === void 0 ? void 0 : t.kind) == \"message\" ? t : undefined;\n },\n getEnum(typeName) {\n const t = types.get(typeName);\n return (t === null || t === void 0 ? void 0 : t.kind) == \"enum\" ? t : undefined;\n },\n getExtension(typeName) {\n const t = types.get(typeName);\n return (t === null || t === void 0 ? void 0 : t.kind) == \"extension\" ? t : undefined;\n },\n getExtensionFor(extendee, no) {\n var _a;\n return (_a = extendees.get(extendee.typeName)) === null || _a === void 0 ? void 0 : _a.get(no);\n },\n getService(typeName) {\n const t = types.get(typeName);\n return (t === null || t === void 0 ? void 0 : t.kind) == \"service\" ? t : undefined;\n },\n };\n}\n/**\n * @private\n */\nfunction initBaseRegistry(inputs) {\n const registry = createBaseRegistry();\n for (const input of inputs) {\n switch (input.kind) {\n case \"registry\":\n for (const n of input) {\n registry.add(n);\n }\n break;\n case \"file\":\n registry.addFile(input);\n break;\n default:\n registry.add(input);\n break;\n }\n }\n return registry;\n}\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO2: const $name: Edition.$localName = $number;\nconst EDITION_PROTO2 = 998;\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO3: const $name: Edition.$localName = $number;\nconst EDITION_PROTO3 = 999;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_STRING: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_STRING = 9;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_GROUP: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_GROUP = 10;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_MESSAGE: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_MESSAGE = 11;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_BYTES: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_BYTES = 12;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_ENUM: const $name: FieldDescriptorProto_Type.$localName = $number;\nconst TYPE_ENUM = 14;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Label.LABEL_REPEATED: const $name: FieldDescriptorProto_Label.$localName = $number;\nconst LABEL_REPEATED = 3;\n// bootstrap-inject google.protobuf.FieldDescriptorProto.Label.LABEL_REQUIRED: const $name: FieldDescriptorProto_Label.$localName = $number;\nconst LABEL_REQUIRED = 2;\n// bootstrap-inject google.protobuf.FieldOptions.JSType.JS_STRING: const $name: FieldOptions_JSType.$localName = $number;\nconst JS_STRING = 1;\n// bootstrap-inject google.protobuf.MethodOptions.IdempotencyLevel.IDEMPOTENCY_UNKNOWN: const $name: MethodOptions_IdempotencyLevel.$localName = $number;\nconst IDEMPOTENCY_UNKNOWN = 0;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.EXPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst EXPLICIT = 1;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst LEGACY_REQUIRED = 3;\n// bootstrap-inject google.protobuf.FeatureSet.RepeatedFieldEncoding.PACKED: const $name: FeatureSet_RepeatedFieldEncoding.$localName = $number;\nconst PACKED = 1;\n// bootstrap-inject google.protobuf.FeatureSet.MessageEncoding.DELIMITED: const $name: FeatureSet_MessageEncoding.$localName = $number;\nconst DELIMITED = 2;\n// bootstrap-inject google.protobuf.FeatureSet.EnumType.OPEN: const $name: FeatureSet_EnumType.$localName = $number;\nconst OPEN = 1;\n// prettier-ignore\n// bootstrap-inject defaults: EDITION_PROTO2 to EDITION_2023: export const minimumEdition: SupportedEdition = $minimumEdition, maximumEdition: SupportedEdition = $maximumEdition;\n// generated from protoc v28.3\nexport const minimumEdition = 998, maximumEdition = 1000;\nconst featureDefaults = {\n // EDITION_PROTO2\n 998: {\n fieldPresence: 1, // EXPLICIT,\n enumType: 2, // CLOSED,\n repeatedFieldEncoding: 2, // EXPANDED,\n utf8Validation: 3, // NONE,\n messageEncoding: 1, // LENGTH_PREFIXED,\n jsonFormat: 2, // LEGACY_BEST_EFFORT,\n },\n // EDITION_PROTO3\n 999: {\n fieldPresence: 2, // IMPLICIT,\n enumType: 1, // OPEN,\n repeatedFieldEncoding: 1, // PACKED,\n utf8Validation: 2, // VERIFY,\n messageEncoding: 1, // LENGTH_PREFIXED,\n jsonFormat: 1, // ALLOW,\n },\n // EDITION_2023\n 1000: {\n fieldPresence: 1, // EXPLICIT,\n enumType: 1, // OPEN,\n repeatedFieldEncoding: 1, // PACKED,\n utf8Validation: 2, // VERIFY,\n messageEncoding: 1, // LENGTH_PREFIXED,\n jsonFormat: 1, // ALLOW,\n },\n};\n/**\n * Create a descriptor for a file, add it to the registry.\n */\nfunction addFile(proto, reg) {\n var _a, _b;\n const file = {\n kind: \"file\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n edition: getFileEdition(proto),\n name: proto.name.replace(/\\.proto$/, \"\"),\n dependencies: findFileDependencies(proto, reg),\n enums: [],\n messages: [],\n extensions: [],\n services: [],\n toString() {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- we asserted above\n return `file ${proto.name}`;\n },\n };\n const mapEntriesStore = new Map();\n const mapEntries = {\n get(typeName) {\n return mapEntriesStore.get(typeName);\n },\n add(desc) {\n var _a;\n assert(((_a = desc.proto.options) === null || _a === void 0 ? void 0 : _a.mapEntry) === true);\n mapEntriesStore.set(desc.typeName, desc);\n },\n };\n for (const enumProto of proto.enumType) {\n addEnum(enumProto, file, undefined, reg);\n }\n for (const messageProto of proto.messageType) {\n addMessage(messageProto, file, undefined, reg, mapEntries);\n }\n for (const serviceProto of proto.service) {\n addService(serviceProto, file, reg);\n }\n addExtensions(file, reg);\n for (const mapEntry of mapEntriesStore.values()) {\n // to create a map field, we need access to the map entry's fields\n addFields(mapEntry, reg, mapEntries);\n }\n for (const message of file.messages) {\n addFields(message, reg, mapEntries);\n addExtensions(message, reg);\n }\n reg.addFile(file, true);\n}\n/**\n * Create descriptors for extensions, and add them to the message / file,\n * and to our cart.\n * Recurses into nested types.\n */\nfunction addExtensions(desc, reg) {\n switch (desc.kind) {\n case \"file\":\n for (const proto of desc.proto.extension) {\n const ext = newField(proto, desc, reg);\n desc.extensions.push(ext);\n reg.add(ext);\n }\n break;\n case \"message\":\n for (const proto of desc.proto.extension) {\n const ext = newField(proto, desc, reg);\n desc.nestedExtensions.push(ext);\n reg.add(ext);\n }\n for (const message of desc.nestedMessages) {\n addExtensions(message, reg);\n }\n break;\n }\n}\n/**\n * Create descriptors for fields and oneof groups, and add them to the message.\n * Recurses into nested types.\n */\nfunction addFields(message, reg, mapEntries) {\n const allOneofs = message.proto.oneofDecl.map((proto) => newOneof(proto, message));\n const oneofsSeen = new Set();\n for (const proto of message.proto.field) {\n const oneof = findOneof(proto, allOneofs);\n const field = newField(proto, message, reg, oneof, mapEntries);\n message.fields.push(field);\n message.field[field.localName] = field;\n if (oneof === undefined) {\n message.members.push(field);\n }\n else {\n oneof.fields.push(field);\n if (!oneofsSeen.has(oneof)) {\n oneofsSeen.add(oneof);\n message.members.push(oneof);\n }\n }\n }\n for (const oneof of allOneofs.filter((o) => oneofsSeen.has(o))) {\n message.oneofs.push(oneof);\n }\n for (const child of message.nestedMessages) {\n addFields(child, reg, mapEntries);\n }\n}\n/**\n * Create a descriptor for an enumeration, and add it our cart and to the\n * parent type, if any.\n */\nfunction addEnum(proto, file, parent, reg) {\n var _a, _b, _c;\n const sharedPrefix = findEnumSharedPrefix(proto.name, proto.value);\n const desc = {\n kind: \"enum\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n file,\n parent,\n open: true,\n name: proto.name,\n typeName: makeTypeName(proto, parent, file),\n value: {},\n values: [],\n sharedPrefix,\n toString() {\n return `enum ${this.typeName}`;\n },\n };\n desc.open = isEnumOpen(desc);\n reg.add(desc);\n proto.value.forEach((proto) => {\n var _a, _b;\n const name = proto.name;\n desc.values.push((desc.value[proto.number] = {\n kind: \"enum_value\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n parent: desc,\n name,\n localName: safeObjectProperty(sharedPrefix == undefined\n ? name\n : name.substring(sharedPrefix.length)),\n number: proto.number,\n toString() {\n return `enum value ${desc.typeName}.${name}`;\n },\n }));\n });\n ((_c = parent === null || parent === void 0 ? void 0 : parent.nestedEnums) !== null && _c !== void 0 ? _c : file.enums).push(desc);\n}\n/**\n * Create a descriptor for a message, including nested types, and add it to our\n * cart. Note that this does not create descriptors fields.\n */\nfunction addMessage(proto, file, parent, reg, mapEntries) {\n var _a, _b, _c, _d;\n const desc = {\n kind: \"message\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n file,\n parent,\n name: proto.name,\n typeName: makeTypeName(proto, parent, file),\n fields: [],\n field: {},\n oneofs: [],\n members: [],\n nestedEnums: [],\n nestedMessages: [],\n nestedExtensions: [],\n toString() {\n return `message ${this.typeName}`;\n },\n };\n if (((_c = proto.options) === null || _c === void 0 ? void 0 : _c.mapEntry) === true) {\n mapEntries.add(desc);\n }\n else {\n ((_d = parent === null || parent === void 0 ? void 0 : parent.nestedMessages) !== null && _d !== void 0 ? _d : file.messages).push(desc);\n reg.add(desc);\n }\n for (const enumProto of proto.enumType) {\n addEnum(enumProto, file, desc, reg);\n }\n for (const messageProto of proto.nestedType) {\n addMessage(messageProto, file, desc, reg, mapEntries);\n }\n}\n/**\n * Create a descriptor for a service, including methods, and add it to our\n * cart.\n */\nfunction addService(proto, file, reg) {\n var _a, _b;\n const desc = {\n kind: \"service\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n file,\n name: proto.name,\n typeName: makeTypeName(proto, undefined, file),\n methods: [],\n method: {},\n toString() {\n return `service ${this.typeName}`;\n },\n };\n file.services.push(desc);\n reg.add(desc);\n for (const methodProto of proto.method) {\n const method = newMethod(methodProto, desc, reg);\n desc.methods.push(method);\n desc.method[method.localName] = method;\n }\n}\n/**\n * Create a descriptor for a method.\n */\nfunction newMethod(proto, parent, reg) {\n var _a, _b, _c, _d;\n let methodKind;\n if (proto.clientStreaming && proto.serverStreaming) {\n methodKind = \"bidi_streaming\";\n }\n else if (proto.clientStreaming) {\n methodKind = \"client_streaming\";\n }\n else if (proto.serverStreaming) {\n methodKind = \"server_streaming\";\n }\n else {\n methodKind = \"unary\";\n }\n const input = reg.getMessage(trimLeadingDot(proto.inputType));\n const output = reg.getMessage(trimLeadingDot(proto.outputType));\n assert(input, `invalid MethodDescriptorProto: input_type ${proto.inputType} not found`);\n assert(output, `invalid MethodDescriptorProto: output_type ${proto.inputType} not found`);\n const name = proto.name;\n return {\n kind: \"rpc\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n parent,\n name,\n localName: safeObjectProperty(name.length\n ? safeObjectProperty(name[0].toLowerCase() + name.substring(1))\n : name),\n methodKind,\n input,\n output,\n idempotency: (_d = (_c = proto.options) === null || _c === void 0 ? void 0 : _c.idempotencyLevel) !== null && _d !== void 0 ? _d : IDEMPOTENCY_UNKNOWN,\n toString() {\n return `rpc ${parent.typeName}.${name}`;\n },\n };\n}\n/**\n * Create a descriptor for a oneof group.\n */\nfunction newOneof(proto, parent) {\n return {\n kind: \"oneof\",\n proto,\n deprecated: false,\n parent,\n fields: [],\n name: proto.name,\n localName: safeObjectProperty(protoCamelCase(proto.name)),\n toString() {\n return `oneof ${parent.typeName}.${this.name}`;\n },\n };\n}\nfunction newField(proto, parentOrFile, reg, oneof, mapEntries) {\n var _a, _b, _c;\n const isExtension = mapEntries === undefined;\n const field = {\n kind: \"field\",\n proto,\n deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,\n name: proto.name,\n number: proto.number,\n scalar: undefined,\n message: undefined,\n enum: undefined,\n presence: getFieldPresence(proto, oneof, isExtension, parentOrFile),\n listKind: undefined,\n mapKind: undefined,\n mapKey: undefined,\n delimitedEncoding: undefined,\n packed: undefined,\n longAsString: false,\n getDefaultValue: undefined,\n };\n if (isExtension) {\n // extension field\n const file = parentOrFile.kind == \"file\" ? parentOrFile : parentOrFile.file;\n const parent = parentOrFile.kind == \"file\" ? undefined : parentOrFile;\n const typeName = makeTypeName(proto, parent, file);\n field.kind = \"extension\";\n field.file = file;\n field.parent = parent;\n field.oneof = undefined;\n field.typeName = typeName;\n field.jsonName = `[${typeName}]`; // option json_name is not allowed on extension fields\n field.toString = () => `extension ${typeName}`;\n const extendee = reg.getMessage(trimLeadingDot(proto.extendee));\n assert(extendee, `invalid FieldDescriptorProto: extendee ${proto.extendee} not found`);\n field.extendee = extendee;\n }\n else {\n // regular field\n const parent = parentOrFile;\n assert(parent.kind == \"message\");\n field.parent = parent;\n field.oneof = oneof;\n field.localName = oneof\n ? protoCamelCase(proto.name)\n : safeObjectProperty(protoCamelCase(proto.name));\n field.jsonName = proto.jsonName;\n field.toString = () => `field ${parent.typeName}.${proto.name}`;\n }\n const label = proto.label;\n const type = proto.type;\n const jstype = (_c = proto.options) === null || _c === void 0 ? void 0 : _c.jstype;\n if (label === LABEL_REPEATED) {\n // list or map field\n const mapEntry = type == TYPE_MESSAGE\n ? mapEntries === null || mapEntries === void 0 ? void 0 : mapEntries.get(trimLeadingDot(proto.typeName))\n : undefined;\n if (mapEntry) {\n // map field\n field.fieldKind = \"map\";\n const { key, value } = findMapEntryFields(mapEntry);\n field.mapKey = key.scalar;\n field.mapKind = value.fieldKind;\n field.message = value.message;\n field.delimitedEncoding = false; // map fields are always LENGTH_PREFIXED\n field.enum = value.enum;\n field.scalar = value.scalar;\n return field;\n }\n // list field\n field.fieldKind = \"list\";\n switch (type) {\n case TYPE_MESSAGE:\n case TYPE_GROUP:\n field.listKind = \"message\";\n field.message = reg.getMessage(trimLeadingDot(proto.typeName));\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n assert(field.message);\n field.delimitedEncoding = isDelimitedEncoding(proto, parentOrFile);\n break;\n case TYPE_ENUM:\n field.listKind = \"enum\";\n field.enum = reg.getEnum(trimLeadingDot(proto.typeName));\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n assert(field.enum);\n break;\n default:\n field.listKind = \"scalar\";\n field.scalar = type;\n field.longAsString = jstype == JS_STRING;\n break;\n }\n field.packed = isPackedField(proto, parentOrFile);\n return field;\n }\n // singular\n switch (type) {\n case TYPE_MESSAGE:\n case TYPE_GROUP:\n field.fieldKind = \"message\";\n field.message = reg.getMessage(trimLeadingDot(proto.typeName));\n assert(\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n field.message, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);\n field.delimitedEncoding = isDelimitedEncoding(proto, parentOrFile);\n field.getDefaultValue = () => undefined;\n break;\n case TYPE_ENUM: {\n const enumeration = reg.getEnum(trimLeadingDot(proto.typeName));\n assert(enumeration !== undefined, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);\n field.fieldKind = \"enum\";\n field.enum = reg.getEnum(trimLeadingDot(proto.typeName));\n field.getDefaultValue = () => {\n return unsafeIsSetExplicit(proto, \"defaultValue\")\n ? parseTextFormatEnumValue(enumeration, proto.defaultValue)\n : undefined;\n };\n break;\n }\n default: {\n field.fieldKind = \"scalar\";\n field.scalar = type;\n field.longAsString = jstype == JS_STRING;\n field.getDefaultValue = () => {\n return unsafeIsSetExplicit(proto, \"defaultValue\")\n ? parseTextFormatScalarValue(type, proto.defaultValue)\n : undefined;\n };\n break;\n }\n }\n return field;\n}\n/**\n * Parse the \"syntax\" and \"edition\" fields, returning one of the supported\n * editions.\n */\nfunction getFileEdition(proto) {\n switch (proto.syntax) {\n case \"\":\n case \"proto2\":\n return EDITION_PROTO2;\n case \"proto3\":\n return EDITION_PROTO3;\n case \"editions\":\n if (proto.edition in featureDefaults) {\n return proto.edition;\n }\n throw new Error(`${proto.name}: unsupported edition`);\n default:\n throw new Error(`${proto.name}: unsupported syntax \"${proto.syntax}\"`);\n }\n}\n/**\n * Resolve dependencies of FileDescriptorProto to DescFile.\n */\nfunction findFileDependencies(proto, reg) {\n return proto.dependency.map((wantName) => {\n const dep = reg.getFile(wantName);\n if (!dep) {\n throw new Error(`Cannot find ${wantName}, imported by ${proto.name}`);\n }\n return dep;\n });\n}\n/**\n * Finds a prefix shared by enum values, for example `my_enum_` for\n * `enum MyEnum {MY_ENUM_A=0; MY_ENUM_B=1;}`.\n */\nfunction findEnumSharedPrefix(enumName, values) {\n const prefix = camelToSnakeCase(enumName) + \"_\";\n for (const value of values) {\n if (!value.name.toLowerCase().startsWith(prefix)) {\n return undefined;\n }\n const shortName = value.name.substring(prefix.length);\n if (shortName.length == 0) {\n return undefined;\n }\n if (/^\\d/.test(shortName)) {\n // identifiers must not start with numbers\n return undefined;\n }\n }\n return prefix;\n}\n/**\n * Converts lowerCamelCase or UpperCamelCase into lower_snake_case.\n * This is used to find shared prefixes in an enum.\n */\nfunction camelToSnakeCase(camel) {\n return (camel.substring(0, 1) + camel.substring(1).replace(/[A-Z]/g, (c) => \"_\" + c)).toLowerCase();\n}\n/**\n * Create a fully qualified name for a protobuf type or extension field.\n *\n * The fully qualified name for messages, enumerations, and services is\n * constructed by concatenating the package name (if present), parent\n * message names (for nested types), and the type name. We omit the leading\n * dot added by protobuf compilers. Examples:\n * - mypackage.MyMessage\n * - mypackage.MyMessage.NestedMessage\n *\n * The fully qualified name for extension fields is constructed by\n * concatenating the package name (if present), parent message names (for\n * extensions declared within a message), and the field name. Examples:\n * - mypackage.extfield\n * - mypackage.MyMessage.extfield\n */\nfunction makeTypeName(proto, parent, file) {\n let typeName;\n if (parent) {\n typeName = `${parent.typeName}.${proto.name}`;\n }\n else if (file.proto.package.length > 0) {\n typeName = `${file.proto.package}.${proto.name}`;\n }\n else {\n typeName = `${proto.name}`;\n }\n return typeName;\n}\n/**\n * Remove the leading dot from a fully qualified type name.\n */\nfunction trimLeadingDot(typeName) {\n return typeName.startsWith(\".\") ? typeName.substring(1) : typeName;\n}\n/**\n * Did the user put the field in a oneof group?\n * Synthetic oneofs for proto3 optionals are ignored.\n */\nfunction findOneof(proto, allOneofs) {\n if (!unsafeIsSetExplicit(proto, \"oneofIndex\")) {\n return undefined;\n }\n if (proto.proto3Optional) {\n return undefined;\n }\n const oneof = allOneofs[proto.oneofIndex];\n assert(\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n oneof, `invalid FieldDescriptorProto: oneof #${proto.oneofIndex} for field #${proto.number} not found`);\n return oneof;\n}\n/**\n * Presence of the field.\n * See https://protobuf.dev/programming-guides/field_presence/\n */\nfunction getFieldPresence(proto, oneof, isExtension, parent) {\n if (proto.label == LABEL_REQUIRED) {\n // proto2 required is LEGACY_REQUIRED\n return LEGACY_REQUIRED;\n }\n if (proto.label == LABEL_REPEATED) {\n // repeated fields (including maps) do not track presence\n return IMPLICIT;\n }\n if (!!oneof || proto.proto3Optional) {\n // oneof is always explicit\n return EXPLICIT;\n }\n if (proto.type == TYPE_MESSAGE) {\n // singular message field cannot be implicit\n return EXPLICIT;\n }\n if (isExtension) {\n // extensions always track presence\n return EXPLICIT;\n }\n return resolveFeature(\"fieldPresence\", { proto, parent });\n}\n/**\n * Pack this repeated field?\n */\nfunction isPackedField(proto, parent) {\n if (proto.label != LABEL_REPEATED) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (proto.type) {\n case TYPE_STRING:\n case TYPE_BYTES:\n case TYPE_GROUP:\n case TYPE_MESSAGE:\n // length-delimited types cannot be packed\n return false;\n }\n const o = proto.options;\n if (o && unsafeIsSetExplicit(o, \"packed\")) {\n // prefer the field option over edition features\n return o.packed;\n }\n return (PACKED ==\n resolveFeature(\"repeatedFieldEncoding\", {\n proto,\n parent,\n }));\n}\n/**\n * Find the key and value fields of a synthetic map entry message.\n */\nfunction findMapEntryFields(mapEntry) {\n const key = mapEntry.fields.find((f) => f.number === 1);\n const value = mapEntry.fields.find((f) => f.number === 2);\n assert(key &&\n key.fieldKind == \"scalar\" &&\n key.scalar != ScalarType.BYTES &&\n key.scalar != ScalarType.FLOAT &&\n key.scalar != ScalarType.DOUBLE &&\n value &&\n value.fieldKind != \"list\" &&\n value.fieldKind != \"map\");\n return { key, value };\n}\n/**\n * Enumerations can be open or closed.\n * See https://protobuf.dev/programming-guides/enum/\n */\nfunction isEnumOpen(desc) {\n var _a;\n return (OPEN ==\n resolveFeature(\"enumType\", {\n proto: desc.proto,\n parent: (_a = desc.parent) !== null && _a !== void 0 ? _a : desc.file,\n }));\n}\n/**\n * Encode the message delimited (a.k.a. proto2 group encoding), or\n * length-prefixed?\n */\nfunction isDelimitedEncoding(proto, parent) {\n if (proto.type == TYPE_GROUP) {\n return true;\n }\n return (DELIMITED ==\n resolveFeature(\"messageEncoding\", {\n proto,\n parent,\n }));\n}\nfunction resolveFeature(name, ref) {\n var _a, _b;\n const featureSet = (_a = ref.proto.options) === null || _a === void 0 ? void 0 : _a.features;\n if (featureSet) {\n const val = featureSet[name];\n if (val != 0) {\n return val;\n }\n }\n if (\"kind\" in ref) {\n if (ref.kind == \"message\") {\n return resolveFeature(name, (_b = ref.parent) !== null && _b !== void 0 ? _b : ref.file);\n }\n const editionDefaults = featureDefaults[ref.edition];\n if (!editionDefaults) {\n throw new Error(`feature default for edition ${ref.edition} not found`);\n }\n return editionDefaults[name];\n }\n return resolveFeature(name, ref.parent);\n}\n/**\n * Assert that condition is truthy or throw error (with message)\n */\nfunction assert(condition, msg) {\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", "// Copyright 2021-2024 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.\nimport { restoreJsonNames } from \"./restore-json-names.js\";\nimport { createFileRegistry } from \"../registry.js\";\n/**\n * Hydrate a file descriptor for google/protobuf/descriptor.proto from a plain\n * object.\n *\n * See createFileDescriptorProtoBoot() for details.\n *\n * @private\n */\nexport function boot(boot) {\n const root = bootFileDescriptorProto(boot);\n root.messageType.forEach(restoreJsonNames);\n const reg = createFileRegistry(root, () => undefined);\n // non-null assertion because we just created the registry from the file we look up\n return reg.getFile(root.name);\n}\n/**\n * Creates the message google.protobuf.FileDescriptorProto from an object literal.\n *\n * See createFileDescriptorProtoBoot() for details.\n *\n * @private\n */\nexport function bootFileDescriptorProto(init) {\n const proto = Object.create({\n syntax: \"\",\n edition: 0,\n });\n return Object.assign(proto, Object.assign(Object.assign({ $typeName: \"google.protobuf.FileDescriptorProto\", dependency: [], publicDependency: [], weakDependency: [], service: [], extension: [] }, init), { messageType: init.messageType.map(bootDescriptorProto), enumType: init.enumType.map(bootEnumDescriptorProto) }));\n}\nfunction bootDescriptorProto(init) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n return {\n $typeName: \"google.protobuf.DescriptorProto\",\n name: init.name,\n field: (_b = (_a = init.field) === null || _a === void 0 ? void 0 : _a.map(bootFieldDescriptorProto)) !== null && _b !== void 0 ? _b : [],\n extension: [],\n nestedType: (_d = (_c = init.nestedType) === null || _c === void 0 ? void 0 : _c.map(bootDescriptorProto)) !== null && _d !== void 0 ? _d : [],\n enumType: (_f = (_e = init.enumType) === null || _e === void 0 ? void 0 : _e.map(bootEnumDescriptorProto)) !== null && _f !== void 0 ? _f : [],\n extensionRange: (_h = (_g = init.extensionRange) === null || _g === void 0 ? void 0 : _g.map((e) => (Object.assign({ $typeName: \"google.protobuf.DescriptorProto.ExtensionRange\" }, e)))) !== null && _h !== void 0 ? _h : [],\n oneofDecl: [],\n reservedRange: [],\n reservedName: [],\n };\n}\nfunction bootFieldDescriptorProto(init) {\n const proto = Object.create({\n label: 1,\n typeName: \"\",\n extendee: \"\",\n defaultValue: \"\",\n oneofIndex: 0,\n jsonName: \"\",\n proto3Optional: false,\n });\n return Object.assign(proto, Object.assign(Object.assign({ $typeName: \"google.protobuf.FieldDescriptorProto\" }, init), { options: init.options ? bootFieldOptions(init.options) : undefined }));\n}\nfunction bootFieldOptions(init) {\n var _a, _b, _c;\n const proto = Object.create({\n ctype: 0,\n packed: false,\n jstype: 0,\n lazy: false,\n unverifiedLazy: false,\n deprecated: false,\n weak: false,\n debugRedact: false,\n retention: 0,\n });\n return Object.assign(proto, Object.assign(Object.assign({ $typeName: \"google.protobuf.FieldOptions\" }, init), { targets: (_a = init.targets) !== null && _a !== void 0 ? _a : [], editionDefaults: (_c = (_b = init.editionDefaults) === null || _b === void 0 ? void 0 : _b.map((e) => (Object.assign({ $typeName: \"google.protobuf.FieldOptions.EditionDefault\" }, e)))) !== null && _c !== void 0 ? _c : [], uninterpretedOption: [] }));\n}\nfunction bootEnumDescriptorProto(init) {\n return {\n $typeName: \"google.protobuf.EnumDescriptorProto\",\n name: init.name,\n reservedName: [],\n reservedRange: [],\n value: init.value.map((e) => (Object.assign({ $typeName: \"google.protobuf.EnumValueDescriptorProto\" }, e))),\n };\n}\n", "// Copyright 2021-2024 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 * Hydrate a message descriptor.\n *\n * @private\n */\nexport function messageDesc(file, path, ...paths) {\n return paths.reduce((acc, cur) => acc.nestedMessages[cur], file.messages[path]);\n}\n", "// Copyright 2021-2024 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.\nimport { boot } from \"../../../../codegenv1/boot.js\";\nimport { messageDesc } from \"../../../../codegenv1/message.js\";\nimport { enumDesc } from \"../../../../codegenv1/enum.js\";\n/**\n * Describes the file google/protobuf/descriptor.proto.\n */\nexport const file_google_protobuf_descriptor = /*@__PURE__*/ boot({ \"name\": \"google/protobuf/descriptor.proto\", \"package\": \"google.protobuf\", \"messageType\": [{ \"name\": \"FileDescriptorSet\", \"field\": [{ \"name\": \"file\", \"number\": 1, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FileDescriptorProto\" }] }, { \"name\": \"FileDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"package\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"dependency\", \"number\": 3, \"type\": 9, \"label\": 3 }, { \"name\": \"public_dependency\", \"number\": 10, \"type\": 5, \"label\": 3 }, { \"name\": \"weak_dependency\", \"number\": 11, \"type\": 5, \"label\": 3 }, { \"name\": \"message_type\", \"number\": 4, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.DescriptorProto\" }, { \"name\": \"enum_type\", \"number\": 5, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.EnumDescriptorProto\" }, { \"name\": \"service\", \"number\": 6, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.ServiceDescriptorProto\" }, { \"name\": \"extension\", \"number\": 7, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FieldDescriptorProto\" }, { \"name\": \"options\", \"number\": 8, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FileOptions\" }, { \"name\": \"source_code_info\", \"number\": 9, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.SourceCodeInfo\" }, { \"name\": \"syntax\", \"number\": 12, \"type\": 9, \"label\": 1 }, { \"name\": \"edition\", \"number\": 14, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }] }, { \"name\": \"DescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"field\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FieldDescriptorProto\" }, { \"name\": \"extension\", \"number\": 6, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FieldDescriptorProto\" }, { \"name\": \"nested_type\", \"number\": 3, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.DescriptorProto\" }, { \"name\": \"enum_type\", \"number\": 4, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.EnumDescriptorProto\" }, { \"name\": \"extension_range\", \"number\": 5, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.DescriptorProto.ExtensionRange\" }, { \"name\": \"oneof_decl\", \"number\": 8, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.OneofDescriptorProto\" }, { \"name\": \"options\", \"number\": 7, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.MessageOptions\" }, { \"name\": \"reserved_range\", \"number\": 9, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.DescriptorProto.ReservedRange\" }, { \"name\": \"reserved_name\", \"number\": 10, \"type\": 9, \"label\": 3 }], \"nestedType\": [{ \"name\": \"ExtensionRange\", \"field\": [{ \"name\": \"start\", \"number\": 1, \"type\": 5, \"label\": 1 }, { \"name\": \"end\", \"number\": 2, \"type\": 5, \"label\": 1 }, { \"name\": \"options\", \"number\": 3, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.ExtensionRangeOptions\" }] }, { \"name\": \"ReservedRange\", \"field\": [{ \"name\": \"start\", \"number\": 1, \"type\": 5, \"label\": 1 }, { \"name\": \"end\", \"number\": 2, \"type\": 5, \"label\": 1 }] }] }, { \"name\": \"ExtensionRangeOptions\", \"field\": [{ \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }, { \"name\": \"declaration\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.ExtensionRangeOptions.Declaration\", \"options\": { \"retention\": 2 } }, { \"name\": \"features\", \"number\": 50, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"verification\", \"number\": 3, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.ExtensionRangeOptions.VerificationState\", \"defaultValue\": \"UNVERIFIED\", \"options\": { \"retention\": 2 } }], \"nestedType\": [{ \"name\": \"Declaration\", \"field\": [{ \"name\": \"number\", \"number\": 1, \"type\": 5, \"label\": 1 }, { \"name\": \"full_name\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"type\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"reserved\", \"number\": 5, \"type\": 8, \"label\": 1 }, { \"name\": \"repeated\", \"number\": 6, \"type\": 8, \"label\": 1 }] }], \"enumType\": [{ \"name\": \"VerificationState\", \"value\": [{ \"name\": \"DECLARATION\", \"number\": 0 }, { \"name\": \"UNVERIFIED\", \"number\": 1 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"FieldDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"number\", \"number\": 3, \"type\": 5, \"label\": 1 }, { \"name\": \"label\", \"number\": 4, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldDescriptorProto.Label\" }, { \"name\": \"type\", \"number\": 5, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldDescriptorProto.Type\" }, { \"name\": \"type_name\", \"number\": 6, \"type\": 9, \"label\": 1 }, { \"name\": \"extendee\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"default_value\", \"number\": 7, \"type\": 9, \"label\": 1 }, { \"name\": \"oneof_index\", \"number\": 9, \"type\": 5, \"label\": 1 }, { \"name\": \"json_name\", \"number\": 10, \"type\": 9, \"label\": 1 }, { \"name\": \"options\", \"number\": 8, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions\" }, { \"name\": \"proto3_optional\", \"number\": 17, \"type\": 8, \"label\": 1 }], \"enumType\": [{ \"name\": \"Type\", \"value\": [{ \"name\": \"TYPE_DOUBLE\", \"number\": 1 }, { \"name\": \"TYPE_FLOAT\", \"number\": 2 }, { \"name\": \"TYPE_INT64\", \"number\": 3 }, { \"name\": \"TYPE_UINT64\", \"number\": 4 }, { \"name\": \"TYPE_INT32\", \"number\": 5 }, { \"name\": \"TYPE_FIXED64\", \"number\": 6 }, { \"name\": \"TYPE_FIXED32\", \"number\": 7 }, { \"name\": \"TYPE_BOOL\", \"number\": 8 }, { \"name\": \"TYPE_STRING\", \"number\": 9 }, { \"name\": \"TYPE_GROUP\", \"number\": 10 }, { \"name\": \"TYPE_MESSAGE\", \"number\": 11 }, { \"name\": \"TYPE_BYTES\", \"number\": 12 }, { \"name\": \"TYPE_UINT32\", \"number\": 13 }, { \"name\": \"TYPE_ENUM\", \"number\": 14 }, { \"name\": \"TYPE_SFIXED32\", \"number\": 15 }, { \"name\": \"TYPE_SFIXED64\", \"number\": 16 }, { \"name\": \"TYPE_SINT32\", \"number\": 17 }, { \"name\": \"TYPE_SINT64\", \"number\": 18 }] }, { \"name\": \"Label\", \"value\": [{ \"name\": \"LABEL_OPTIONAL\", \"number\": 1 }, { \"name\": \"LABEL_REPEATED\", \"number\": 3 }, { \"name\": \"LABEL_REQUIRED\", \"number\": 2 }] }] }, { \"name\": \"OneofDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"options\", \"number\": 2, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.OneofOptions\" }] }, { \"name\": \"EnumDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"value\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.EnumValueDescriptorProto\" }, { \"name\": \"options\", \"number\": 3, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.EnumOptions\" }, { \"name\": \"reserved_range\", \"number\": 4, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.EnumDescriptorProto.EnumReservedRange\" }, { \"name\": \"reserved_name\", \"number\": 5, \"type\": 9, \"label\": 3 }], \"nestedType\": [{ \"name\": \"EnumReservedRange\", \"field\": [{ \"name\": \"start\", \"number\": 1, \"type\": 5, \"label\": 1 }, { \"name\": \"end\", \"number\": 2, \"type\": 5, \"label\": 1 }] }] }, { \"name\": \"EnumValueDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"number\", \"number\": 2, \"type\": 5, \"label\": 1 }, { \"name\": \"options\", \"number\": 3, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.EnumValueOptions\" }] }, { \"name\": \"ServiceDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"method\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.MethodDescriptorProto\" }, { \"name\": \"options\", \"number\": 3, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.ServiceOptions\" }] }, { \"name\": \"MethodDescriptorProto\", \"field\": [{ \"name\": \"name\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"input_type\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"output_type\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"options\", \"number\": 4, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.MethodOptions\" }, { \"name\": \"client_streaming\", \"number\": 5, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"server_streaming\", \"number\": 6, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }] }, { \"name\": \"FileOptions\", \"field\": [{ \"name\": \"java_package\", \"number\": 1, \"type\": 9, \"label\": 1 }, { \"name\": \"java_outer_classname\", \"number\": 8, \"type\": 9, \"label\": 1 }, { \"name\": \"java_multiple_files\", \"number\": 10, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"java_generate_equals_and_hash\", \"number\": 20, \"type\": 8, \"label\": 1, \"options\": { \"deprecated\": true } }, { \"name\": \"java_string_check_utf8\", \"number\": 27, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"optimize_for\", \"number\": 9, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FileOptions.OptimizeMode\", \"defaultValue\": \"SPEED\" }, { \"name\": \"go_package\", \"number\": 11, \"type\": 9, \"label\": 1 }, { \"name\": \"cc_generic_services\", \"number\": 16, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"java_generic_services\", \"number\": 17, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"py_generic_services\", \"number\": 18, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"deprecated\", \"number\": 23, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"cc_enable_arenas\", \"number\": 31, \"type\": 8, \"label\": 1, \"defaultValue\": \"true\" }, { \"name\": \"objc_class_prefix\", \"number\": 36, \"type\": 9, \"label\": 1 }, { \"name\": \"csharp_namespace\", \"number\": 37, \"type\": 9, \"label\": 1 }, { \"name\": \"swift_prefix\", \"number\": 39, \"type\": 9, \"label\": 1 }, { \"name\": \"php_class_prefix\", \"number\": 40, \"type\": 9, \"label\": 1 }, { \"name\": \"php_namespace\", \"number\": 41, \"type\": 9, \"label\": 1 }, { \"name\": \"php_metadata_namespace\", \"number\": 44, \"type\": 9, \"label\": 1 }, { \"name\": \"ruby_package\", \"number\": 45, \"type\": 9, \"label\": 1 }, { \"name\": \"features\", \"number\": 50, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"enumType\": [{ \"name\": \"OptimizeMode\", \"value\": [{ \"name\": \"SPEED\", \"number\": 1 }, { \"name\": \"CODE_SIZE\", \"number\": 2 }, { \"name\": \"LITE_RUNTIME\", \"number\": 3 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"MessageOptions\", \"field\": [{ \"name\": \"message_set_wire_format\", \"number\": 1, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"no_standard_descriptor_accessor\", \"number\": 2, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"deprecated\", \"number\": 3, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"map_entry\", \"number\": 7, \"type\": 8, \"label\": 1 }, { \"name\": \"deprecated_legacy_json_field_conflicts\", \"number\": 11, \"type\": 8, \"label\": 1, \"options\": { \"deprecated\": true } }, { \"name\": \"features\", \"number\": 12, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"FieldOptions\", \"field\": [{ \"name\": \"ctype\", \"number\": 1, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.CType\", \"defaultValue\": \"STRING\" }, { \"name\": \"packed\", \"number\": 2, \"type\": 8, \"label\": 1 }, { \"name\": \"jstype\", \"number\": 6, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.JSType\", \"defaultValue\": \"JS_NORMAL\" }, { \"name\": \"lazy\", \"number\": 5, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"unverified_lazy\", \"number\": 15, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"deprecated\", \"number\": 3, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"weak\", \"number\": 10, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"debug_redact\", \"number\": 16, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"retention\", \"number\": 17, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.OptionRetention\" }, { \"name\": \"targets\", \"number\": 19, \"type\": 14, \"label\": 3, \"typeName\": \".google.protobuf.FieldOptions.OptionTargetType\" }, { \"name\": \"edition_defaults\", \"number\": 20, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FieldOptions.EditionDefault\" }, { \"name\": \"features\", \"number\": 21, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"feature_support\", \"number\": 22, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.FeatureSupport\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"nestedType\": [{ \"name\": \"EditionDefault\", \"field\": [{ \"name\": \"edition\", \"number\": 3, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"value\", \"number\": 2, \"type\": 9, \"label\": 1 }] }, { \"name\": \"FeatureSupport\", \"field\": [{ \"name\": \"edition_introduced\", \"number\": 1, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"edition_deprecated\", \"number\": 2, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"deprecation_warning\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"edition_removed\", \"number\": 4, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }] }], \"enumType\": [{ \"name\": \"CType\", \"value\": [{ \"name\": \"STRING\", \"number\": 0 }, { \"name\": \"CORD\", \"number\": 1 }, { \"name\": \"STRING_PIECE\", \"number\": 2 }] }, { \"name\": \"JSType\", \"value\": [{ \"name\": \"JS_NORMAL\", \"number\": 0 }, { \"name\": \"JS_STRING\", \"number\": 1 }, { \"name\": \"JS_NUMBER\", \"number\": 2 }] }, { \"name\": \"OptionRetention\", \"value\": [{ \"name\": \"RETENTION_UNKNOWN\", \"number\": 0 }, { \"name\": \"RETENTION_RUNTIME\", \"number\": 1 }, { \"name\": \"RETENTION_SOURCE\", \"number\": 2 }] }, { \"name\": \"OptionTargetType\", \"value\": [{ \"name\": \"TARGET_TYPE_UNKNOWN\", \"number\": 0 }, { \"name\": \"TARGET_TYPE_FILE\", \"number\": 1 }, { \"name\": \"TARGET_TYPE_EXTENSION_RANGE\", \"number\": 2 }, { \"name\": \"TARGET_TYPE_MESSAGE\", \"number\": 3 }, { \"name\": \"TARGET_TYPE_FIELD\", \"number\": 4 }, { \"name\": \"TARGET_TYPE_ONEOF\", \"number\": 5 }, { \"name\": \"TARGET_TYPE_ENUM\", \"number\": 6 }, { \"name\": \"TARGET_TYPE_ENUM_ENTRY\", \"number\": 7 }, { \"name\": \"TARGET_TYPE_SERVICE\", \"number\": 8 }, { \"name\": \"TARGET_TYPE_METHOD\", \"number\": 9 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"OneofOptions\", \"field\": [{ \"name\": \"features\", \"number\": 1, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"EnumOptions\", \"field\": [{ \"name\": \"allow_alias\", \"number\": 2, \"type\": 8, \"label\": 1 }, { \"name\": \"deprecated\", \"number\": 3, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"deprecated_legacy_json_field_conflicts\", \"number\": 6, \"type\": 8, \"label\": 1, \"options\": { \"deprecated\": true } }, { \"name\": \"features\", \"number\": 7, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"EnumValueOptions\", \"field\": [{ \"name\": \"deprecated\", \"number\": 1, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"features\", \"number\": 2, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"debug_redact\", \"number\": 3, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"feature_support\", \"number\": 4, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FieldOptions.FeatureSupport\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"ServiceOptions\", \"field\": [{ \"name\": \"features\", \"number\": 34, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"deprecated\", \"number\": 33, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"MethodOptions\", \"field\": [{ \"name\": \"deprecated\", \"number\": 33, \"type\": 8, \"label\": 1, \"defaultValue\": \"false\" }, { \"name\": \"idempotency_level\", \"number\": 34, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.MethodOptions.IdempotencyLevel\", \"defaultValue\": \"IDEMPOTENCY_UNKNOWN\" }, { \"name\": \"features\", \"number\": 35, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"uninterpreted_option\", \"number\": 999, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption\" }], \"enumType\": [{ \"name\": \"IdempotencyLevel\", \"value\": [{ \"name\": \"IDEMPOTENCY_UNKNOWN\", \"number\": 0 }, { \"name\": \"NO_SIDE_EFFECTS\", \"number\": 1 }, { \"name\": \"IDEMPOTENT\", \"number\": 2 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912 }] }, { \"name\": \"UninterpretedOption\", \"field\": [{ \"name\": \"name\", \"number\": 2, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.UninterpretedOption.NamePart\" }, { \"name\": \"identifier_value\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"positive_int_value\", \"number\": 4, \"type\": 4, \"label\": 1 }, { \"name\": \"negative_int_value\", \"number\": 5, \"type\": 3, \"label\": 1 }, { \"name\": \"double_value\", \"number\": 6, \"type\": 1, \"label\": 1 }, { \"name\": \"string_value\", \"number\": 7, \"type\": 12, \"label\": 1 }, { \"name\": \"aggregate_value\", \"number\": 8, \"type\": 9, \"label\": 1 }], \"nestedType\": [{ \"name\": \"NamePart\", \"field\": [{ \"name\": \"name_part\", \"number\": 1, \"type\": 9, \"label\": 2 }, { \"name\": \"is_extension\", \"number\": 2, \"type\": 8, \"label\": 2 }] }] }, { \"name\": \"FeatureSet\", \"field\": [{ \"name\": \"field_presence\", \"number\": 1, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.FieldPresence\", \"options\": { \"retention\": 1, \"targets\": [4, 1], \"editionDefaults\": [{ \"value\": \"EXPLICIT\", \"edition\": 900 }, { \"value\": \"IMPLICIT\", \"edition\": 999 }, { \"value\": \"EXPLICIT\", \"edition\": 1000 }] } }, { \"name\": \"enum_type\", \"number\": 2, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.EnumType\", \"options\": { \"retention\": 1, \"targets\": [6, 1], \"editionDefaults\": [{ \"value\": \"CLOSED\", \"edition\": 900 }, { \"value\": \"OPEN\", \"edition\": 999 }] } }, { \"name\": \"repeated_field_encoding\", \"number\": 3, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.RepeatedFieldEncoding\", \"options\": { \"retention\": 1, \"targets\": [4, 1], \"editionDefaults\": [{ \"value\": \"EXPANDED\", \"edition\": 900 }, { \"value\": \"PACKED\", \"edition\": 999 }] } }, { \"name\": \"utf8_validation\", \"number\": 4, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.Utf8Validation\", \"options\": { \"retention\": 1, \"targets\": [4, 1], \"editionDefaults\": [{ \"value\": \"NONE\", \"edition\": 900 }, { \"value\": \"VERIFY\", \"edition\": 999 }] } }, { \"name\": \"message_encoding\", \"number\": 5, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.MessageEncoding\", \"options\": { \"retention\": 1, \"targets\": [4, 1], \"editionDefaults\": [{ \"value\": \"LENGTH_PREFIXED\", \"edition\": 900 }] } }, { \"name\": \"json_format\", \"number\": 6, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet.JsonFormat\", \"options\": { \"retention\": 1, \"targets\": [3, 6, 1], \"editionDefaults\": [{ \"value\": \"LEGACY_BEST_EFFORT\", \"edition\": 900 }, { \"value\": \"ALLOW\", \"edition\": 999 }] } }], \"enumType\": [{ \"name\": \"FieldPresence\", \"value\": [{ \"name\": \"FIELD_PRESENCE_UNKNOWN\", \"number\": 0 }, { \"name\": \"EXPLICIT\", \"number\": 1 }, { \"name\": \"IMPLICIT\", \"number\": 2 }, { \"name\": \"LEGACY_REQUIRED\", \"number\": 3 }] }, { \"name\": \"EnumType\", \"value\": [{ \"name\": \"ENUM_TYPE_UNKNOWN\", \"number\": 0 }, { \"name\": \"OPEN\", \"number\": 1 }, { \"name\": \"CLOSED\", \"number\": 2 }] }, { \"name\": \"RepeatedFieldEncoding\", \"value\": [{ \"name\": \"REPEATED_FIELD_ENCODING_UNKNOWN\", \"number\": 0 }, { \"name\": \"PACKED\", \"number\": 1 }, { \"name\": \"EXPANDED\", \"number\": 2 }] }, { \"name\": \"Utf8Validation\", \"value\": [{ \"name\": \"UTF8_VALIDATION_UNKNOWN\", \"number\": 0 }, { \"name\": \"VERIFY\", \"number\": 2 }, { \"name\": \"NONE\", \"number\": 3 }] }, { \"name\": \"MessageEncoding\", \"value\": [{ \"name\": \"MESSAGE_ENCODING_UNKNOWN\", \"number\": 0 }, { \"name\": \"LENGTH_PREFIXED\", \"number\": 1 }, { \"name\": \"DELIMITED\", \"number\": 2 }] }, { \"name\": \"JsonFormat\", \"value\": [{ \"name\": \"JSON_FORMAT_UNKNOWN\", \"number\": 0 }, { \"name\": \"ALLOW\", \"number\": 1 }, { \"name\": \"LEGACY_BEST_EFFORT\", \"number\": 2 }] }], \"extensionRange\": [{ \"start\": 1000, \"end\": 9995 }, { \"start\": 9995, \"end\": 10000 }, { \"start\": 10000, \"end\": 10001 }] }, { \"name\": \"FeatureSetDefaults\", \"field\": [{ \"name\": \"defaults\", \"number\": 1, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault\" }, { \"name\": \"minimum_edition\", \"number\": 4, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"maximum_edition\", \"number\": 5, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }], \"nestedType\": [{ \"name\": \"FeatureSetEditionDefault\", \"field\": [{ \"name\": \"edition\", \"number\": 3, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.Edition\" }, { \"name\": \"overridable_features\", \"number\": 4, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }, { \"name\": \"fixed_features\", \"number\": 5, \"type\": 11, \"label\": 1, \"typeName\": \".google.protobuf.FeatureSet\" }] }] }, { \"name\": \"SourceCodeInfo\", \"field\": [{ \"name\": \"location\", \"number\": 1, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.SourceCodeInfo.Location\" }], \"nestedType\": [{ \"name\": \"Location\", \"field\": [{ \"name\": \"path\", \"number\": 1, \"type\": 5, \"label\": 3, \"options\": { \"packed\": true } }, { \"name\": \"span\", \"number\": 2, \"type\": 5, \"label\": 3, \"options\": { \"packed\": true } }, { \"name\": \"leading_comments\", \"number\": 3, \"type\": 9, \"label\": 1 }, { \"name\": \"trailing_comments\", \"number\": 4, \"type\": 9, \"label\": 1 }, { \"name\": \"leading_detached_comments\", \"number\": 6, \"type\": 9, \"label\": 3 }] }] }, { \"name\": \"GeneratedCodeInfo\", \"field\": [{ \"name\": \"annotation\", \"number\": 1, \"type\": 11, \"label\": 3, \"typeName\": \".google.protobuf.GeneratedCodeInfo.Annotation\" }], \"nestedType\": [{ \"name\": \"Annotation\", \"field\": [{ \"name\": \"path\", \"number\": 1, \"type\": 5, \"label\": 3, \"options\": { \"packed\": true } }, { \"name\": \"source_file\", \"number\": 2, \"type\": 9, \"label\": 1 }, { \"name\": \"begin\", \"number\": 3, \"type\": 5, \"label\": 1 }, { \"name\": \"end\", \"number\": 4, \"type\": 5, \"label\": 1 }, { \"name\": \"semantic\", \"number\": 5, \"type\": 14, \"label\": 1, \"typeName\": \".google.protobuf.GeneratedCodeInfo.Annotation.Semantic\" }], \"enumType\": [{ \"name\": \"Semantic\", \"value\": [{ \"name\": \"NONE\", \"number\": 0 }, { \"name\": \"SET\", \"number\": 1 }, { \"name\": \"ALIAS\", \"number\": 2 }] }] }] }], \"enumType\": [{ \"name\": \"Edition\", \"value\": [{ \"name\": \"EDITION_UNKNOWN\", \"number\": 0 }, { \"name\": \"EDITION_LEGACY\", \"number\": 900 }, { \"name\": \"EDITION_PROTO2\", \"number\": 998 }, { \"name\": \"EDITION_PROTO3\", \"number\": 999 }, { \"name\": \"EDITION_2023\", \"number\": 1000 }, { \"name\": \"EDITION_2024\", \"number\": 1001 }, { \"name\": \"EDITION_1_TEST_ONLY\", \"number\": 1 }, { \"name\": \"EDITION_2_TEST_ONLY\", \"number\": 2 }, { \"name\": \"EDITION_99997_TEST_ONLY\", \"number\": 99997 }, { \"name\": \"EDITION_99998_TEST_ONLY\", \"number\": 99998 }, { \"name\": \"EDITION_99999_TEST_ONLY\", \"number\": 99999 }, { \"name\": \"EDITION_MAX\", \"number\": 2147483647 }] }] });\n/**\n * Describes the message google.protobuf.FileDescriptorSet.\n * Use `create(FileDescriptorSetSchema)` to create a new message.\n */\nexport const FileDescriptorSetSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 0);\n/**\n * Describes the message google.protobuf.FileDescriptorProto.\n * Use `create(FileDescriptorProtoSchema)` to create a new message.\n */\nexport const FileDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 1);\n/**\n * Describes the message google.protobuf.DescriptorProto.\n * Use `create(DescriptorProtoSchema)` to create a new message.\n */\nexport const DescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 2);\n/**\n * Describes the message google.protobuf.DescriptorProto.ExtensionRange.\n * Use `create(DescriptorProto_ExtensionRangeSchema)` to create a new message.\n */\nexport const DescriptorProto_ExtensionRangeSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 2, 0);\n/**\n * Describes the message google.protobuf.DescriptorProto.ReservedRange.\n * Use `create(DescriptorProto_ReservedRangeSchema)` to create a new message.\n */\nexport const DescriptorProto_ReservedRangeSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 2, 1);\n/**\n * Describes the message google.protobuf.ExtensionRangeOptions.\n * Use `create(ExtensionRangeOptionsSchema)` to create a new message.\n */\nexport const ExtensionRangeOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 3);\n/**\n * Describes the message google.protobuf.ExtensionRangeOptions.Declaration.\n * Use `create(ExtensionRangeOptions_DeclarationSchema)` to create a new message.\n */\nexport const ExtensionRangeOptions_DeclarationSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 3, 0);\n/**\n * The verification state of the extension range.\n *\n * @generated from enum google.protobuf.ExtensionRangeOptions.VerificationState\n */\nexport var ExtensionRangeOptions_VerificationState;\n(function (ExtensionRangeOptions_VerificationState) {\n /**\n * All the extensions of the range must be declared.\n *\n * @generated from enum value: DECLARATION = 0;\n */\n ExtensionRangeOptions_VerificationState[ExtensionRangeOptions_VerificationState[\"DECLARATION\"] = 0] = \"DECLARATION\";\n /**\n * @generated from enum value: UNVERIFIED = 1;\n */\n ExtensionRangeOptions_VerificationState[ExtensionRangeOptions_VerificationState[\"UNVERIFIED\"] = 1] = \"UNVERIFIED\";\n})(ExtensionRangeOptions_VerificationState || (ExtensionRangeOptions_VerificationState = {}));\n/**\n * Describes the enum google.protobuf.ExtensionRangeOptions.VerificationState.\n */\nexport const ExtensionRangeOptions_VerificationStateSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 3, 0);\n/**\n * Describes the message google.protobuf.FieldDescriptorProto.\n * Use `create(FieldDescriptorProtoSchema)` to create a new message.\n */\nexport const FieldDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 4);\n/**\n * @generated from enum google.protobuf.FieldDescriptorProto.Type\n */\nexport var FieldDescriptorProto_Type;\n(function (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 FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"DOUBLE\"] = 1] = \"DOUBLE\";\n /**\n * @generated from enum value: TYPE_FLOAT = 2;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"FLOAT\"] = 2] = \"FLOAT\";\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 FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"INT64\"] = 3] = \"INT64\";\n /**\n * @generated from enum value: TYPE_UINT64 = 4;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"UINT64\"] = 4] = \"UINT64\";\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 FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"INT32\"] = 5] = \"INT32\";\n /**\n * @generated from enum value: TYPE_FIXED64 = 6;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"FIXED64\"] = 6] = \"FIXED64\";\n /**\n * @generated from enum value: TYPE_FIXED32 = 7;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"FIXED32\"] = 7] = \"FIXED32\";\n /**\n * @generated from enum value: TYPE_BOOL = 8;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"BOOL\"] = 8] = \"BOOL\";\n /**\n * @generated from enum value: TYPE_STRING = 9;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"STRING\"] = 9] = \"STRING\";\n /**\n * Tag-delimited aggregate.\n * Group type is deprecated and not supported after google.protobuf. However, Proto3\n * implementations should still be able to parse the group wire format and\n * treat group fields as unknown fields. In Editions, the group wire format\n * can be enabled via the `message_encoding` feature.\n *\n * @generated from enum value: TYPE_GROUP = 10;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"GROUP\"] = 10] = \"GROUP\";\n /**\n * Length-delimited aggregate.\n *\n * @generated from enum value: TYPE_MESSAGE = 11;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"MESSAGE\"] = 11] = \"MESSAGE\";\n /**\n * New in version 2.\n *\n * @generated from enum value: TYPE_BYTES = 12;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"BYTES\"] = 12] = \"BYTES\";\n /**\n * @generated from enum value: TYPE_UINT32 = 13;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"UINT32\"] = 13] = \"UINT32\";\n /**\n * @generated from enum value: TYPE_ENUM = 14;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"ENUM\"] = 14] = \"ENUM\";\n /**\n * @generated from enum value: TYPE_SFIXED32 = 15;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"SFIXED32\"] = 15] = \"SFIXED32\";\n /**\n * @generated from enum value: TYPE_SFIXED64 = 16;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"SFIXED64\"] = 16] = \"SFIXED64\";\n /**\n * Uses ZigZag encoding.\n *\n * @generated from enum value: TYPE_SINT32 = 17;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"SINT32\"] = 17] = \"SINT32\";\n /**\n * Uses ZigZag encoding.\n *\n * @generated from enum value: TYPE_SINT64 = 18;\n */\n FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"SINT64\"] = 18] = \"SINT64\";\n})(FieldDescriptorProto_Type || (FieldDescriptorProto_Type = {}));\n/**\n * Describes the enum google.protobuf.FieldDescriptorProto.Type.\n */\nexport const FieldDescriptorProto_TypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 4, 0);\n/**\n * @generated from enum google.protobuf.FieldDescriptorProto.Label\n */\nexport var FieldDescriptorProto_Label;\n(function (FieldDescriptorProto_Label) {\n /**\n * 0 is reserved for errors\n *\n * @generated from enum value: LABEL_OPTIONAL = 1;\n */\n FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"OPTIONAL\"] = 1] = \"OPTIONAL\";\n /**\n * @generated from enum value: LABEL_REPEATED = 3;\n */\n FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"REPEATED\"] = 3] = \"REPEATED\";\n /**\n * The required label is only allowed in google.protobuf. In proto3 and Editions\n * it's explicitly prohibited. In Editions, the `field_presence` feature\n * can be used to get this behavior.\n *\n * @generated from enum value: LABEL_REQUIRED = 2;\n */\n FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"REQUIRED\"] = 2] = \"REQUIRED\";\n})(FieldDescriptorProto_Label || (FieldDescriptorProto_Label = {}));\n/**\n * Describes the enum google.protobuf.FieldDescriptorProto.Label.\n */\nexport const FieldDescriptorProto_LabelSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 4, 1);\n/**\n * Describes the message google.protobuf.OneofDescriptorProto.\n * Use `create(OneofDescriptorProtoSchema)` to create a new message.\n */\nexport const OneofDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 5);\n/**\n * Describes the message google.protobuf.EnumDescriptorProto.\n * Use `create(EnumDescriptorProtoSchema)` to create a new message.\n */\nexport const EnumDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 6);\n/**\n * Describes the message google.protobuf.EnumDescriptorProto.EnumReservedRange.\n * Use `create(EnumDescriptorProto_EnumReservedRangeSchema)` to create a new message.\n */\nexport const EnumDescriptorProto_EnumReservedRangeSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 6, 0);\n/**\n * Describes the message google.protobuf.EnumValueDescriptorProto.\n * Use `create(EnumValueDescriptorProtoSchema)` to create a new message.\n */\nexport const EnumValueDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 7);\n/**\n * Describes the message google.protobuf.ServiceDescriptorProto.\n * Use `create(ServiceDescriptorProtoSchema)` to create a new message.\n */\nexport const ServiceDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 8);\n/**\n * Describes the message google.protobuf.MethodDescriptorProto.\n * Use `create(MethodDescriptorProtoSchema)` to create a new message.\n */\nexport const MethodDescriptorProtoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 9);\n/**\n * Describes the message google.protobuf.FileOptions.\n * Use `create(FileOptionsSchema)` to create a new message.\n */\nexport const FileOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 10);\n/**\n * Generated classes can be optimized for speed or code size.\n *\n * @generated from enum google.protobuf.FileOptions.OptimizeMode\n */\nexport var FileOptions_OptimizeMode;\n(function (FileOptions_OptimizeMode) {\n /**\n * Generate complete code for parsing, serialization,\n *\n * @generated from enum value: SPEED = 1;\n */\n FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"SPEED\"] = 1] = \"SPEED\";\n /**\n * etc.\n *\n * Use ReflectionOps to implement these methods.\n *\n * @generated from enum value: CODE_SIZE = 2;\n */\n FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"CODE_SIZE\"] = 2] = \"CODE_SIZE\";\n /**\n * Generate code using MessageLite and the lite runtime.\n *\n * @generated from enum value: LITE_RUNTIME = 3;\n */\n FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"LITE_RUNTIME\"] = 3] = \"LITE_RUNTIME\";\n})(FileOptions_OptimizeMode || (FileOptions_OptimizeMode = {}));\n/**\n * Describes the enum google.protobuf.FileOptions.OptimizeMode.\n */\nexport const FileOptions_OptimizeModeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 10, 0);\n/**\n * Describes the message google.protobuf.MessageOptions.\n * Use `create(MessageOptionsSchema)` to create a new message.\n */\nexport const MessageOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 11);\n/**\n * Describes the message google.protobuf.FieldOptions.\n * Use `create(FieldOptionsSchema)` to create a new message.\n */\nexport const FieldOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 12);\n/**\n * Describes the message google.protobuf.FieldOptions.EditionDefault.\n * Use `create(FieldOptions_EditionDefaultSchema)` to create a new message.\n */\nexport const FieldOptions_EditionDefaultSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 12, 0);\n/**\n * Describes the message google.protobuf.FieldOptions.FeatureSupport.\n * Use `create(FieldOptions_FeatureSupportSchema)` to create a new message.\n */\nexport const FieldOptions_FeatureSupportSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 12, 1);\n/**\n * @generated from enum google.protobuf.FieldOptions.CType\n */\nexport var FieldOptions_CType;\n(function (FieldOptions_CType) {\n /**\n * Default mode.\n *\n * @generated from enum value: STRING = 0;\n */\n FieldOptions_CType[FieldOptions_CType[\"STRING\"] = 0] = \"STRING\";\n /**\n * The option [ctype=CORD] may be applied to a non-repeated field of type\n * \"bytes\". It indicates that in C++, the data should be stored in a Cord\n * instead of a string. For very large strings, this may reduce memory\n * fragmentation. It may also allow better performance when parsing from a\n * Cord, or when parsing with aliasing enabled, as the parsed Cord may then\n * alias the original buffer.\n *\n * @generated from enum value: CORD = 1;\n */\n FieldOptions_CType[FieldOptions_CType[\"CORD\"] = 1] = \"CORD\";\n /**\n * @generated from enum value: STRING_PIECE = 2;\n */\n FieldOptions_CType[FieldOptions_CType[\"STRING_PIECE\"] = 2] = \"STRING_PIECE\";\n})(FieldOptions_CType || (FieldOptions_CType = {}));\n/**\n * Describes the enum google.protobuf.FieldOptions.CType.\n */\nexport const FieldOptions_CTypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 12, 0);\n/**\n * @generated from enum google.protobuf.FieldOptions.JSType\n */\nexport var FieldOptions_JSType;\n(function (FieldOptions_JSType) {\n /**\n * Use the default type.\n *\n * @generated from enum value: JS_NORMAL = 0;\n */\n FieldOptions_JSType[FieldOptions_JSType[\"JS_NORMAL\"] = 0] = \"JS_NORMAL\";\n /**\n * Use JavaScript strings.\n *\n * @generated from enum value: JS_STRING = 1;\n */\n FieldOptions_JSType[FieldOptions_JSType[\"JS_STRING\"] = 1] = \"JS_STRING\";\n /**\n * Use JavaScript numbers.\n *\n * @generated from enum value: JS_NUMBER = 2;\n */\n FieldOptions_JSType[FieldOptions_JSType[\"JS_NUMBER\"] = 2] = \"JS_NUMBER\";\n})(FieldOptions_JSType || (FieldOptions_JSType = {}));\n/**\n * Describes the enum google.protobuf.FieldOptions.JSType.\n */\nexport const FieldOptions_JSTypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 12, 1);\n/**\n * If set to RETENTION_SOURCE, the option will be omitted from the binary.\n * Note: as of January 2023, support for this is in progress and does not yet\n * have an effect (b/264593489).\n *\n * @generated from enum google.protobuf.FieldOptions.OptionRetention\n */\nexport var FieldOptions_OptionRetention;\n(function (FieldOptions_OptionRetention) {\n /**\n * @generated from enum value: RETENTION_UNKNOWN = 0;\n */\n FieldOptions_OptionRetention[FieldOptions_OptionRetention[\"RETENTION_UNKNOWN\"] = 0] = \"RETENTION_UNKNOWN\";\n /**\n * @generated from enum value: RETENTION_RUNTIME = 1;\n */\n FieldOptions_OptionRetention[FieldOptions_OptionRetention[\"RETENTION_RUNTIME\"] = 1] = \"RETENTION_RUNTIME\";\n /**\n * @generated from enum value: RETENTION_SOURCE = 2;\n */\n FieldOptions_OptionRetention[FieldOptions_OptionRetention[\"RETENTION_SOURCE\"] = 2] = \"RETENTION_SOURCE\";\n})(FieldOptions_OptionRetention || (FieldOptions_OptionRetention = {}));\n/**\n * Describes the enum google.protobuf.FieldOptions.OptionRetention.\n */\nexport const FieldOptions_OptionRetentionSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 12, 2);\n/**\n * This indicates the types of entities that the field may apply to when used\n * as an option. If it is unset, then the field may be freely used as an\n * option on any kind of entity. Note: as of January 2023, support for this is\n * in progress and does not yet have an effect (b/264593489).\n *\n * @generated from enum google.protobuf.FieldOptions.OptionTargetType\n */\nexport var FieldOptions_OptionTargetType;\n(function (FieldOptions_OptionTargetType) {\n /**\n * @generated from enum value: TARGET_TYPE_UNKNOWN = 0;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_UNKNOWN\"] = 0] = \"TARGET_TYPE_UNKNOWN\";\n /**\n * @generated from enum value: TARGET_TYPE_FILE = 1;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_FILE\"] = 1] = \"TARGET_TYPE_FILE\";\n /**\n * @generated from enum value: TARGET_TYPE_EXTENSION_RANGE = 2;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_EXTENSION_RANGE\"] = 2] = \"TARGET_TYPE_EXTENSION_RANGE\";\n /**\n * @generated from enum value: TARGET_TYPE_MESSAGE = 3;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_MESSAGE\"] = 3] = \"TARGET_TYPE_MESSAGE\";\n /**\n * @generated from enum value: TARGET_TYPE_FIELD = 4;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_FIELD\"] = 4] = \"TARGET_TYPE_FIELD\";\n /**\n * @generated from enum value: TARGET_TYPE_ONEOF = 5;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_ONEOF\"] = 5] = \"TARGET_TYPE_ONEOF\";\n /**\n * @generated from enum value: TARGET_TYPE_ENUM = 6;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_ENUM\"] = 6] = \"TARGET_TYPE_ENUM\";\n /**\n * @generated from enum value: TARGET_TYPE_ENUM_ENTRY = 7;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_ENUM_ENTRY\"] = 7] = \"TARGET_TYPE_ENUM_ENTRY\";\n /**\n * @generated from enum value: TARGET_TYPE_SERVICE = 8;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_SERVICE\"] = 8] = \"TARGET_TYPE_SERVICE\";\n /**\n * @generated from enum value: TARGET_TYPE_METHOD = 9;\n */\n FieldOptions_OptionTargetType[FieldOptions_OptionTargetType[\"TARGET_TYPE_METHOD\"] = 9] = \"TARGET_TYPE_METHOD\";\n})(FieldOptions_OptionTargetType || (FieldOptions_OptionTargetType = {}));\n/**\n * Describes the enum google.protobuf.FieldOptions.OptionTargetType.\n */\nexport const FieldOptions_OptionTargetTypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 12, 3);\n/**\n * Describes the message google.protobuf.OneofOptions.\n * Use `create(OneofOptionsSchema)` to create a new message.\n */\nexport const OneofOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 13);\n/**\n * Describes the message google.protobuf.EnumOptions.\n * Use `create(EnumOptionsSchema)` to create a new message.\n */\nexport const EnumOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 14);\n/**\n * Describes the message google.protobuf.EnumValueOptions.\n * Use `create(EnumValueOptionsSchema)` to create a new message.\n */\nexport const EnumValueOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 15);\n/**\n * Describes the message google.protobuf.ServiceOptions.\n * Use `create(ServiceOptionsSchema)` to create a new message.\n */\nexport const ServiceOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 16);\n/**\n * Describes the message google.protobuf.MethodOptions.\n * Use `create(MethodOptionsSchema)` to create a new message.\n */\nexport const MethodOptionsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 17);\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 var MethodOptions_IdempotencyLevel;\n(function (MethodOptions_IdempotencyLevel) {\n /**\n * @generated from enum value: IDEMPOTENCY_UNKNOWN = 0;\n */\n MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"IDEMPOTENCY_UNKNOWN\"] = 0] = \"IDEMPOTENCY_UNKNOWN\";\n /**\n * implies idempotent\n *\n * @generated from enum value: NO_SIDE_EFFECTS = 1;\n */\n MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"NO_SIDE_EFFECTS\"] = 1] = \"NO_SIDE_EFFECTS\";\n /**\n * idempotent, but may have side effects\n *\n * @generated from enum value: IDEMPOTENT = 2;\n */\n MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"IDEMPOTENT\"] = 2] = \"IDEMPOTENT\";\n})(MethodOptions_IdempotencyLevel || (MethodOptions_IdempotencyLevel = {}));\n/**\n * Describes the enum google.protobuf.MethodOptions.IdempotencyLevel.\n */\nexport const MethodOptions_IdempotencyLevelSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 17, 0);\n/**\n * Describes the message google.protobuf.UninterpretedOption.\n * Use `create(UninterpretedOptionSchema)` to create a new message.\n */\nexport const UninterpretedOptionSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 18);\n/**\n * Describes the message google.protobuf.UninterpretedOption.NamePart.\n * Use `create(UninterpretedOption_NamePartSchema)` to create a new message.\n */\nexport const UninterpretedOption_NamePartSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 18, 0);\n/**\n * Describes the message google.protobuf.FeatureSet.\n * Use `create(FeatureSetSchema)` to create a new message.\n */\nexport const FeatureSetSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 19);\n/**\n * @generated from enum google.protobuf.FeatureSet.FieldPresence\n */\nexport var FeatureSet_FieldPresence;\n(function (FeatureSet_FieldPresence) {\n /**\n * @generated from enum value: FIELD_PRESENCE_UNKNOWN = 0;\n */\n FeatureSet_FieldPresence[FeatureSet_FieldPresence[\"FIELD_PRESENCE_UNKNOWN\"] = 0] = \"FIELD_PRESENCE_UNKNOWN\";\n /**\n * @generated from enum value: EXPLICIT = 1;\n */\n FeatureSet_FieldPresence[FeatureSet_FieldPresence[\"EXPLICIT\"] = 1] = \"EXPLICIT\";\n /**\n * @generated from enum value: IMPLICIT = 2;\n */\n FeatureSet_FieldPresence[FeatureSet_FieldPresence[\"IMPLICIT\"] = 2] = \"IMPLICIT\";\n /**\n * @generated from enum value: LEGACY_REQUIRED = 3;\n */\n FeatureSet_FieldPresence[FeatureSet_FieldPresence[\"LEGACY_REQUIRED\"] = 3] = \"LEGACY_REQUIRED\";\n})(FeatureSet_FieldPresence || (FeatureSet_FieldPresence = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.FieldPresence.\n */\nexport const FeatureSet_FieldPresenceSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 0);\n/**\n * @generated from enum google.protobuf.FeatureSet.EnumType\n */\nexport var FeatureSet_EnumType;\n(function (FeatureSet_EnumType) {\n /**\n * @generated from enum value: ENUM_TYPE_UNKNOWN = 0;\n */\n FeatureSet_EnumType[FeatureSet_EnumType[\"ENUM_TYPE_UNKNOWN\"] = 0] = \"ENUM_TYPE_UNKNOWN\";\n /**\n * @generated from enum value: OPEN = 1;\n */\n FeatureSet_EnumType[FeatureSet_EnumType[\"OPEN\"] = 1] = \"OPEN\";\n /**\n * @generated from enum value: CLOSED = 2;\n */\n FeatureSet_EnumType[FeatureSet_EnumType[\"CLOSED\"] = 2] = \"CLOSED\";\n})(FeatureSet_EnumType || (FeatureSet_EnumType = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.EnumType.\n */\nexport const FeatureSet_EnumTypeSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 1);\n/**\n * @generated from enum google.protobuf.FeatureSet.RepeatedFieldEncoding\n */\nexport var FeatureSet_RepeatedFieldEncoding;\n(function (FeatureSet_RepeatedFieldEncoding) {\n /**\n * @generated from enum value: REPEATED_FIELD_ENCODING_UNKNOWN = 0;\n */\n FeatureSet_RepeatedFieldEncoding[FeatureSet_RepeatedFieldEncoding[\"REPEATED_FIELD_ENCODING_UNKNOWN\"] = 0] = \"REPEATED_FIELD_ENCODING_UNKNOWN\";\n /**\n * @generated from enum value: PACKED = 1;\n */\n FeatureSet_RepeatedFieldEncoding[FeatureSet_RepeatedFieldEncoding[\"PACKED\"] = 1] = \"PACKED\";\n /**\n * @generated from enum value: EXPANDED = 2;\n */\n FeatureSet_RepeatedFieldEncoding[FeatureSet_RepeatedFieldEncoding[\"EXPANDED\"] = 2] = \"EXPANDED\";\n})(FeatureSet_RepeatedFieldEncoding || (FeatureSet_RepeatedFieldEncoding = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.RepeatedFieldEncoding.\n */\nexport const FeatureSet_RepeatedFieldEncodingSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 2);\n/**\n * @generated from enum google.protobuf.FeatureSet.Utf8Validation\n */\nexport var FeatureSet_Utf8Validation;\n(function (FeatureSet_Utf8Validation) {\n /**\n * @generated from enum value: UTF8_VALIDATION_UNKNOWN = 0;\n */\n FeatureSet_Utf8Validation[FeatureSet_Utf8Validation[\"UTF8_VALIDATION_UNKNOWN\"] = 0] = \"UTF8_VALIDATION_UNKNOWN\";\n /**\n * @generated from enum value: VERIFY = 2;\n */\n FeatureSet_Utf8Validation[FeatureSet_Utf8Validation[\"VERIFY\"] = 2] = \"VERIFY\";\n /**\n * @generated from enum value: NONE = 3;\n */\n FeatureSet_Utf8Validation[FeatureSet_Utf8Validation[\"NONE\"] = 3] = \"NONE\";\n})(FeatureSet_Utf8Validation || (FeatureSet_Utf8Validation = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.Utf8Validation.\n */\nexport const FeatureSet_Utf8ValidationSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 3);\n/**\n * @generated from enum google.protobuf.FeatureSet.MessageEncoding\n */\nexport var FeatureSet_MessageEncoding;\n(function (FeatureSet_MessageEncoding) {\n /**\n * @generated from enum value: MESSAGE_ENCODING_UNKNOWN = 0;\n */\n FeatureSet_MessageEncoding[FeatureSet_MessageEncoding[\"MESSAGE_ENCODING_UNKNOWN\"] = 0] = \"MESSAGE_ENCODING_UNKNOWN\";\n /**\n * @generated from enum value: LENGTH_PREFIXED = 1;\n */\n FeatureSet_MessageEncoding[FeatureSet_MessageEncoding[\"LENGTH_PREFIXED\"] = 1] = \"LENGTH_PREFIXED\";\n /**\n * @generated from enum value: DELIMITED = 2;\n */\n FeatureSet_MessageEncoding[FeatureSet_MessageEncoding[\"DELIMITED\"] = 2] = \"DELIMITED\";\n})(FeatureSet_MessageEncoding || (FeatureSet_MessageEncoding = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.MessageEncoding.\n */\nexport const FeatureSet_MessageEncodingSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 4);\n/**\n * @generated from enum google.protobuf.FeatureSet.JsonFormat\n */\nexport var FeatureSet_JsonFormat;\n(function (FeatureSet_JsonFormat) {\n /**\n * @generated from enum value: JSON_FORMAT_UNKNOWN = 0;\n */\n FeatureSet_JsonFormat[FeatureSet_JsonFormat[\"JSON_FORMAT_UNKNOWN\"] = 0] = \"JSON_FORMAT_UNKNOWN\";\n /**\n * @generated from enum value: ALLOW = 1;\n */\n FeatureSet_JsonFormat[FeatureSet_JsonFormat[\"ALLOW\"] = 1] = \"ALLOW\";\n /**\n * @generated from enum value: LEGACY_BEST_EFFORT = 2;\n */\n FeatureSet_JsonFormat[FeatureSet_JsonFormat[\"LEGACY_BEST_EFFORT\"] = 2] = \"LEGACY_BEST_EFFORT\";\n})(FeatureSet_JsonFormat || (FeatureSet_JsonFormat = {}));\n/**\n * Describes the enum google.protobuf.FeatureSet.JsonFormat.\n */\nexport const FeatureSet_JsonFormatSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 19, 5);\n/**\n * Describes the message google.protobuf.FeatureSetDefaults.\n * Use `create(FeatureSetDefaultsSchema)` to create a new message.\n */\nexport const FeatureSetDefaultsSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 20);\n/**\n * Describes the message google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.\n * Use `create(FeatureSetDefaults_FeatureSetEditionDefaultSchema)` to create a new message.\n */\nexport const FeatureSetDefaults_FeatureSetEditionDefaultSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 20, 0);\n/**\n * Describes the message google.protobuf.SourceCodeInfo.\n * Use `create(SourceCodeInfoSchema)` to create a new message.\n */\nexport const SourceCodeInfoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 21);\n/**\n * Describes the message google.protobuf.SourceCodeInfo.Location.\n * Use `create(SourceCodeInfo_LocationSchema)` to create a new message.\n */\nexport const SourceCodeInfo_LocationSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 21, 0);\n/**\n * Describes the message google.protobuf.GeneratedCodeInfo.\n * Use `create(GeneratedCodeInfoSchema)` to create a new message.\n */\nexport const GeneratedCodeInfoSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 22);\n/**\n * Describes the message google.protobuf.GeneratedCodeInfo.Annotation.\n * Use `create(GeneratedCodeInfo_AnnotationSchema)` to create a new message.\n */\nexport const GeneratedCodeInfo_AnnotationSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_descriptor, 22, 0);\n/**\n * Represents the identified object's effect on the element in the original\n * .proto file.\n *\n * @generated from enum google.protobuf.GeneratedCodeInfo.Annotation.Semantic\n */\nexport var GeneratedCodeInfo_Annotation_Semantic;\n(function (GeneratedCodeInfo_Annotation_Semantic) {\n /**\n * There is no effect or the effect is indescribable.\n *\n * @generated from enum value: NONE = 0;\n */\n GeneratedCodeInfo_Annotation_Semantic[GeneratedCodeInfo_Annotation_Semantic[\"NONE\"] = 0] = \"NONE\";\n /**\n * The element is set or otherwise mutated.\n *\n * @generated from enum value: SET = 1;\n */\n GeneratedCodeInfo_Annotation_Semantic[GeneratedCodeInfo_Annotation_Semantic[\"SET\"] = 1] = \"SET\";\n /**\n * An alias to the element is returned.\n *\n * @generated from enum value: ALIAS = 2;\n */\n GeneratedCodeInfo_Annotation_Semantic[GeneratedCodeInfo_Annotation_Semantic[\"ALIAS\"] = 2] = \"ALIAS\";\n})(GeneratedCodeInfo_Annotation_Semantic || (GeneratedCodeInfo_Annotation_Semantic = {}));\n/**\n * Describes the enum google.protobuf.GeneratedCodeInfo.Annotation.Semantic.\n */\nexport const GeneratedCodeInfo_Annotation_SemanticSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 22, 0, 0);\n/**\n * The full set of known editions.\n *\n * @generated from enum google.protobuf.Edition\n */\nexport var Edition;\n(function (Edition) {\n /**\n * A placeholder for an unknown edition value.\n *\n * @generated from enum value: EDITION_UNKNOWN = 0;\n */\n Edition[Edition[\"EDITION_UNKNOWN\"] = 0] = \"EDITION_UNKNOWN\";\n /**\n * A placeholder edition for specifying default behaviors *before* a feature\n * was first introduced. This is effectively an \"infinite past\".\n *\n * @generated from enum value: EDITION_LEGACY = 900;\n */\n Edition[Edition[\"EDITION_LEGACY\"] = 900] = \"EDITION_LEGACY\";\n /**\n * Legacy syntax \"editions\". These pre-date editions, but behave much like\n * distinct editions. These can't be used to specify the edition of proto\n * files, but feature definitions must supply proto2/proto3 defaults for\n * backwards compatibility.\n *\n * @generated from enum value: EDITION_PROTO2 = 998;\n */\n Edition[Edition[\"EDITION_PROTO2\"] = 998] = \"EDITION_PROTO2\";\n /**\n * @generated from enum value: EDITION_PROTO3 = 999;\n */\n Edition[Edition[\"EDITION_PROTO3\"] = 999] = \"EDITION_PROTO3\";\n /**\n * Editions that have been released. The specific values are arbitrary and\n * should not be depended on, but they will always be time-ordered for easy\n * comparison.\n *\n * @generated from enum value: EDITION_2023 = 1000;\n */\n Edition[Edition[\"EDITION_2023\"] = 1000] = \"EDITION_2023\";\n /**\n * @generated from enum value: EDITION_2024 = 1001;\n */\n Edition[Edition[\"EDITION_2024\"] = 1001] = \"EDITION_2024\";\n /**\n * Placeholder editions for testing feature resolution. These should not be\n * used or relyed on outside of tests.\n *\n * @generated from enum value: EDITION_1_TEST_ONLY = 1;\n */\n Edition[Edition[\"EDITION_1_TEST_ONLY\"] = 1] = \"EDITION_1_TEST_ONLY\";\n /**\n * @generated from enum value: EDITION_2_TEST_ONLY = 2;\n */\n Edition[Edition[\"EDITION_2_TEST_ONLY\"] = 2] = \"EDITION_2_TEST_ONLY\";\n /**\n * @generated from enum value: EDITION_99997_TEST_ONLY = 99997;\n */\n Edition[Edition[\"EDITION_99997_TEST_ONLY\"] = 99997] = \"EDITION_99997_TEST_ONLY\";\n /**\n * @generated from enum value: EDITION_99998_TEST_ONLY = 99998;\n */\n Edition[Edition[\"EDITION_99998_TEST_ONLY\"] = 99998] = \"EDITION_99998_TEST_ONLY\";\n /**\n * @generated from enum value: EDITION_99999_TEST_ONLY = 99999;\n */\n Edition[Edition[\"EDITION_99999_TEST_ONLY\"] = 99999] = \"EDITION_99999_TEST_ONLY\";\n /**\n * Placeholder for specifying unbounded edition support. This should only\n * ever be used by plugins that can expect to never require any changes to\n * support a new edition.\n *\n * @generated from enum value: EDITION_MAX = 2147483647;\n */\n Edition[Edition[\"EDITION_MAX\"] = 2147483647] = \"EDITION_MAX\";\n})(Edition || (Edition = {}));\n/**\n * Describes the enum google.protobuf.Edition.\n */\nexport const EditionSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_descriptor, 0);\n", "// Copyright 2021-2024 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.\nimport { ScalarType } from \"./descriptors.js\";\nimport { scalarZeroValue } from \"./reflect/scalar.js\";\nimport { reflect } from \"./reflect/reflect.js\";\nimport { BinaryReader, WireType } from \"./wire/binary-encoding.js\";\n// Default options for parsing binary data.\nconst readDefaults = {\n readUnknownFields: true,\n};\nfunction makeReadOptions(options) {\n return options ? Object.assign(Object.assign({}, readDefaults), options) : readDefaults;\n}\n/**\n * Parse serialized binary data.\n */\nexport function fromBinary(schema, bytes, options) {\n const msg = reflect(schema, undefined, false);\n readMessage(msg, new BinaryReader(bytes), makeReadOptions(options), false, bytes.byteLength);\n return msg.message;\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 */\nexport function mergeFromBinary(schema, target, bytes, options) {\n readMessage(reflect(schema, target, false), new BinaryReader(bytes), makeReadOptions(options), false, bytes.byteLength);\n return target;\n}\n/**\n * If `delimited` is false, read the length given in `lengthOrDelimitedFieldNo`.\n *\n * If `delimited` is true, read until an EndGroup tag. `lengthOrDelimitedFieldNo`\n * is the expected field number.\n *\n * @private\n */\nfunction readMessage(message, reader, options, delimited, lengthOrDelimitedFieldNo) {\n var _a;\n const end = delimited ? reader.len : reader.pos + lengthOrDelimitedFieldNo;\n let fieldNo, wireType;\n const unknownFields = (_a = message.getUnknown()) !== null && _a !== void 0 ? _a : [];\n while (reader.pos < end) {\n [fieldNo, wireType] = reader.tag();\n if (delimited && wireType == WireType.EndGroup) {\n break;\n }\n const field = message.findNumber(fieldNo);\n if (!field) {\n const data = reader.skip(wireType, fieldNo);\n if (options.readUnknownFields) {\n unknownFields.push({ no: fieldNo, wireType, data });\n }\n continue;\n }\n readField(message, reader, field, wireType, options);\n }\n if (delimited) {\n if (wireType != WireType.EndGroup || fieldNo !== lengthOrDelimitedFieldNo) {\n throw new Error(`invalid end group tag`);\n }\n }\n if (unknownFields.length > 0) {\n message.setUnknown(unknownFields);\n }\n}\n/**\n * @private\n */\nexport function readField(message, reader, field, wireType, options) {\n switch (field.fieldKind) {\n case \"scalar\":\n message.set(field, readScalar(reader, field.scalar));\n break;\n case \"enum\":\n message.set(field, readScalar(reader, ScalarType.INT32));\n break;\n case \"message\":\n message.set(field, readMessageField(reader, options, field, message.get(field)));\n break;\n case \"list\":\n readListField(reader, wireType, message.get(field), options);\n break;\n case \"map\":\n readMapEntry(reader, message.get(field), options);\n break;\n }\n}\n// Read a map field, expecting key field = 1, value field = 2\nfunction readMapEntry(reader, map, options) {\n const field = map.field();\n let key, val;\n const end = reader.pos + reader.uint32();\n while (reader.pos < end) {\n const [fieldNo] = reader.tag();\n switch (fieldNo) {\n case 1:\n key = readScalar(reader, field.mapKey);\n break;\n case 2:\n switch (field.mapKind) {\n case \"scalar\":\n val = readScalar(reader, field.scalar);\n break;\n case \"enum\":\n val = reader.int32();\n break;\n case \"message\":\n val = readMessageField(reader, options, field);\n break;\n }\n break;\n }\n }\n if (key === undefined) {\n key = scalarZeroValue(field.mapKey, false);\n }\n if (val === undefined) {\n switch (field.mapKind) {\n case \"scalar\":\n val = scalarZeroValue(field.scalar, false);\n break;\n case \"enum\":\n val = field.enum.values[0].number;\n break;\n case \"message\":\n val = reflect(field.message, undefined, false);\n break;\n }\n }\n map.set(key, val);\n}\nfunction readListField(reader, wireType, list, options) {\n var _a;\n const field = list.field();\n if (field.listKind === \"message\") {\n list.add(readMessageField(reader, options, field));\n return;\n }\n const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32;\n const packed = wireType == WireType.LengthDelimited &&\n scalarType != ScalarType.STRING &&\n scalarType != ScalarType.BYTES;\n if (!packed) {\n list.add(readScalar(reader, scalarType));\n return;\n }\n const e = reader.uint32() + reader.pos;\n while (reader.pos < e) {\n list.add(readScalar(reader, scalarType));\n }\n}\nfunction readMessageField(reader, options, field, mergeMessage) {\n const delimited = field.delimitedEncoding;\n const message = mergeMessage !== null && mergeMessage !== void 0 ? mergeMessage : reflect(field.message, undefined, false);\n readMessage(message, reader, options, delimited, delimited ? field.number : reader.uint32());\n return message;\n}\nfunction readScalar(reader, type) {\n switch (type) {\n case ScalarType.STRING:\n return reader.string();\n case ScalarType.BOOL:\n return reader.bool();\n case ScalarType.DOUBLE:\n return reader.double();\n case ScalarType.FLOAT:\n return reader.float();\n case ScalarType.INT32:\n return reader.int32();\n case ScalarType.INT64:\n return reader.int64();\n case ScalarType.UINT64:\n return reader.uint64();\n case ScalarType.FIXED64:\n return reader.fixed64();\n case ScalarType.BYTES:\n return reader.bytes();\n case ScalarType.FIXED32:\n return reader.fixed32();\n case ScalarType.SFIXED32:\n return reader.sfixed32();\n case ScalarType.SFIXED64:\n return reader.sfixed64();\n case ScalarType.SINT64:\n return reader.sint64();\n case ScalarType.UINT32:\n return reader.uint32();\n case ScalarType.SINT32:\n return reader.sint32();\n }\n}\n", "// Copyright 2021-2024 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.\nimport { base64Decode } from \"../wire/base64-encoding.js\";\nimport { FileDescriptorProtoSchema } from \"../wkt/gen/google/protobuf/descriptor_pb.js\";\nimport { createFileRegistry } from \"../registry.js\";\nimport { restoreJsonNames } from \"./restore-json-names.js\";\nimport { fromBinary } from \"../from-binary.js\";\n/**\n * Hydrate a file descriptor.\n *\n * @private\n */\nexport function fileDesc(b64, imports) {\n var _a;\n const root = fromBinary(FileDescriptorProtoSchema, base64Decode(b64));\n root.messageType.forEach(restoreJsonNames);\n root.dependency = (_a = imports === null || imports === void 0 ? void 0 : imports.map((f) => f.proto.name)) !== null && _a !== void 0 ? _a : [];\n const reg = createFileRegistry(root, (protoFileName) => imports === null || imports === void 0 ? void 0 : imports.find((f) => f.proto.name === protoFileName));\n // non-null assertion because we just created the registry from the file we look up\n return reg.getFile(root.name);\n}\n", "// Copyright 2021-2024 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.\nimport { fileDesc } from \"../../../../codegenv1/file.js\";\nimport { messageDesc } from \"../../../../codegenv1/message.js\";\n/**\n * Describes the file google/protobuf/timestamp.proto.\n */\nexport const file_google_protobuf_timestamp = /*@__PURE__*/ fileDesc(\"Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM\");\n/**\n * Describes the message google.protobuf.Timestamp.\n * Use `create(TimestampSchema)` to create a new message.\n */\nexport const TimestampSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_timestamp, 0);\n", "// Copyright 2021-2024 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.\nimport { fileDesc } from \"../../../../codegenv1/file.js\";\nimport { messageDesc } from \"../../../../codegenv1/message.js\";\n/**\n * Describes the file google/protobuf/any.proto.\n */\nexport const file_google_protobuf_any = /*@__PURE__*/ fileDesc(\"Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM\");\n/**\n * Describes the message google.protobuf.Any.\n * Use `create(AnySchema)` to create a new message.\n */\nexport const AnySchema = /*@__PURE__*/ messageDesc(file_google_protobuf_any, 0);\n", "// Copyright 2021-2024 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.\nimport { reflect } from \"./reflect/reflect.js\";\nimport { BinaryWriter, WireType } from \"./wire/binary-encoding.js\";\nimport { ScalarType } from \"./descriptors.js\";\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst LEGACY_REQUIRED = 3;\n// Default options for serializing binary data.\nconst writeDefaults = {\n writeUnknownFields: true,\n};\nfunction makeWriteOptions(options) {\n return options ? Object.assign(Object.assign({}, writeDefaults), options) : writeDefaults;\n}\nexport function toBinary(schema, message, options) {\n return writeFields(new BinaryWriter(), makeWriteOptions(options), reflect(schema, message)).finish();\n}\nfunction writeFields(writer, opts, msg) {\n var _a;\n for (const f of msg.sortedFields) {\n if (!msg.isSet(f)) {\n if (f.presence == LEGACY_REQUIRED) {\n throw new Error(`cannot encode field ${msg.desc.typeName}.${f.name} to binary: required field not set`);\n }\n continue;\n }\n writeField(writer, opts, msg, f);\n }\n if (opts.writeUnknownFields) {\n for (const { no, wireType, data } of (_a = msg.getUnknown()) !== null && _a !== void 0 ? _a : []) {\n writer.tag(no, wireType).raw(data);\n }\n }\n return writer;\n}\n/**\n * @private\n */\nexport function writeField(writer, opts, msg, field) {\n var _a;\n switch (field.fieldKind) {\n case \"scalar\":\n case \"enum\":\n writeScalar(writer, (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32, field.number, msg.get(field));\n break;\n case \"list\":\n writeListField(writer, opts, field, msg.get(field));\n break;\n case \"message\":\n writeMessageField(writer, opts, field, msg.get(field));\n break;\n case \"map\":\n for (const [key, val] of msg.get(field)) {\n writeMapEntry(writer, opts, field, key, val);\n }\n break;\n }\n}\nfunction writeScalar(writer, scalarType, fieldNo, value) {\n writeScalarValue(writer.tag(fieldNo, writeTypeOfScalar(scalarType)), scalarType, value);\n}\nfunction writeMessageField(writer, opts, field, message) {\n if (field.delimitedEncoding) {\n writeFields(writer.tag(field.number, WireType.StartGroup), opts, message).tag(field.number, WireType.EndGroup);\n }\n else {\n writeFields(writer.tag(field.number, WireType.LengthDelimited).fork(), opts, message).join();\n }\n}\nfunction writeListField(writer, opts, field, list) {\n var _a;\n if (field.listKind == \"message\") {\n for (const item of list) {\n writeMessageField(writer, opts, field, item);\n }\n return;\n }\n const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32;\n if (field.packed) {\n if (!list.size) {\n return;\n }\n writer.tag(field.number, WireType.LengthDelimited).fork();\n for (const item of list) {\n writeScalarValue(writer, scalarType, item);\n }\n writer.join();\n return;\n }\n for (const item of list) {\n writeScalar(writer, scalarType, field.number, item);\n }\n}\nfunction writeMapEntry(writer, opts, field, key, value) {\n var _a;\n writer.tag(field.number, WireType.LengthDelimited).fork();\n // write key, expecting key field number = 1\n writeScalar(writer, field.mapKey, 1, key);\n // write value, expecting value field number = 2\n switch (field.mapKind) {\n case \"scalar\":\n case \"enum\":\n writeScalar(writer, (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32, 2, value);\n break;\n case \"message\":\n writeFields(writer.tag(2, WireType.LengthDelimited).fork(), opts, value).join();\n break;\n }\n writer.join();\n}\nfunction writeScalarValue(writer, type, value) {\n switch (type) {\n case ScalarType.STRING:\n writer.string(value);\n break;\n case ScalarType.BOOL:\n writer.bool(value);\n break;\n case ScalarType.DOUBLE:\n writer.double(value);\n break;\n case ScalarType.FLOAT:\n writer.float(value);\n break;\n case ScalarType.INT32:\n writer.int32(value);\n break;\n case ScalarType.INT64:\n writer.int64(value);\n break;\n case ScalarType.UINT64:\n writer.uint64(value);\n break;\n case ScalarType.FIXED64:\n writer.fixed64(value);\n break;\n case ScalarType.BYTES:\n writer.bytes(value);\n break;\n case ScalarType.FIXED32:\n writer.fixed32(value);\n break;\n case ScalarType.SFIXED32:\n writer.sfixed32(value);\n break;\n case ScalarType.SFIXED64:\n writer.sfixed64(value);\n break;\n case ScalarType.SINT64:\n writer.sint64(value);\n break;\n case ScalarType.UINT32:\n writer.uint32(value);\n break;\n case ScalarType.SINT32:\n writer.sint32(value);\n break;\n }\n}\nfunction writeTypeOfScalar(type) {\n switch (type) {\n case ScalarType.BYTES:\n case ScalarType.STRING:\n return WireType.LengthDelimited;\n case ScalarType.DOUBLE:\n case ScalarType.FIXED64:\n case ScalarType.SFIXED64:\n return WireType.Bit64;\n case ScalarType.FIXED32:\n case ScalarType.SFIXED32:\n case ScalarType.FLOAT:\n return WireType.Bit32;\n default:\n return WireType.Varint;\n }\n}\n", "// Copyright 2021-2024 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.\nimport { AnySchema } from \"./gen/google/protobuf/any_pb.js\";\nimport { create } from \"../create.js\";\nimport { toBinary } from \"../to-binary.js\";\nimport { fromBinary, mergeFromBinary } from \"../from-binary.js\";\nexport function anyPack(schema, message, into) {\n let ret = false;\n if (!into) {\n into = create(AnySchema);\n ret = true;\n }\n into.value = toBinary(schema, message);\n into.typeUrl = typeNameToUrl(message.$typeName);\n return ret ? into : undefined;\n}\nexport function anyIs(any, descOrTypeName) {\n if (any.typeUrl === \"\") {\n return false;\n }\n const want = typeof descOrTypeName == \"string\"\n ? descOrTypeName\n : descOrTypeName.typeName;\n const got = typeUrlToName(any.typeUrl);\n return want === got;\n}\nexport function anyUnpack(any, registryOrMessageDesc) {\n if (any.typeUrl === \"\") {\n return undefined;\n }\n const desc = registryOrMessageDesc.kind == \"message\"\n ? registryOrMessageDesc\n : registryOrMessageDesc.getMessage(typeUrlToName(any.typeUrl));\n if (!desc || !anyIs(any, desc)) {\n return undefined;\n }\n return fromBinary(desc, any.value);\n}\n/**\n * Same as anyUnpack but unpacks into the target message.\n */\nexport function anyUnpackTo(any, schema, message) {\n if (!anyIs(any, schema)) {\n return undefined;\n }\n return mergeFromBinary(schema, message, any.value);\n}\nfunction typeNameToUrl(name) {\n return `type.googleapis.com/${name}`;\n}\nfunction typeUrlToName(url) {\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", "// Copyright 2021-2024 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.\nimport { fileDesc } from \"../../../../codegenv1/file.js\";\nimport { messageDesc } from \"../../../../codegenv1/message.js\";\n/**\n * Describes the file google/protobuf/duration.proto.\n */\nexport const file_google_protobuf_duration = /*@__PURE__*/ fileDesc(\"Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw\");\n/**\n * Describes the message google.protobuf.Duration.\n * Use `create(DurationSchema)` to create a new message.\n */\nexport const DurationSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_duration, 0);\n", "// Copyright 2021-2024 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.\nimport { fileDesc } from \"../../../../codegenv1/file.js\";\nimport { messageDesc } from \"../../../../codegenv1/message.js\";\nimport { enumDesc } from \"../../../../codegenv1/enum.js\";\n/**\n * Describes the file google/protobuf/struct.proto.\n */\nexport const file_google_protobuf_struct = /*@__PURE__*/ fileDesc(\"Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM\");\n/**\n * Describes the message google.protobuf.Struct.\n * Use `create(StructSchema)` to create a new message.\n */\nexport const StructSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_struct, 0);\n/**\n * Describes the message google.protobuf.Value.\n * Use `create(ValueSchema)` to create a new message.\n */\nexport const ValueSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_struct, 1);\n/**\n * Describes the message google.protobuf.ListValue.\n * Use `create(ListValueSchema)` to create a new message.\n */\nexport const ListValueSchema = /*@__PURE__*/ messageDesc(file_google_protobuf_struct, 2);\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 var NullValue;\n(function (NullValue) {\n /**\n * Null value.\n *\n * @generated from enum value: NULL_VALUE = 0;\n */\n NullValue[NullValue[\"NULL_VALUE\"] = 0] = \"NULL_VALUE\";\n})(NullValue || (NullValue = {}));\n/**\n * Describes the enum google.protobuf.NullValue.\n */\nexport const NullValueSchema = /*@__PURE__*/ enumDesc(file_google_protobuf_struct, 0);\n", "// Copyright 2021-2024 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.\nimport { create } from \"./create.js\";\nimport { readField } from \"./from-binary.js\";\nimport { reflect } from \"./reflect/reflect.js\";\nimport { scalarZeroValue } from \"./reflect/scalar.js\";\nimport { writeField } from \"./to-binary.js\";\nimport { BinaryReader, BinaryWriter } from \"./wire/binary-encoding.js\";\nimport { isWrapperDesc } from \"./wkt/wrappers.js\";\n/**\n * Retrieve an extension value from a message.\n *\n * The function never returns undefined. Use hasExtension() to check whether an\n * extension is set. If the extension is not set, this function returns the\n * default value (if one was specified in the protobuf source), or the zero value\n * (for example `0` for numeric types, `[]` for repeated extension fields, and\n * an empty message instance for message fields).\n *\n * Extensions are stored as unknown fields on a message. To mutate an extension\n * value, make sure to store the new value with setExtension() after mutating.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function getExtension(message, extension) {\n assertExtendee(extension, message);\n const ufs = filterUnknownFields(message.$unknown, extension);\n const [container, field, get] = createExtensionContainer(extension);\n for (const uf of ufs) {\n readField(container, new BinaryReader(uf.data), field, uf.wireType, {\n readUnknownFields: false,\n });\n }\n return get();\n}\n/**\n * Set an extension value on a message. If the message already has a value for\n * this extension, the value is replaced.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function setExtension(message, extension, value) {\n var _a;\n assertExtendee(extension, message);\n const ufs = ((_a = message.$unknown) !== null && _a !== void 0 ? _a : []).filter((uf) => uf.no !== extension.number);\n const [container, field] = createExtensionContainer(extension, value);\n const writer = new BinaryWriter();\n writeField(writer, { writeUnknownFields: false }, container, field);\n const reader = new BinaryReader(writer.finish());\n while (reader.pos < reader.len) {\n const [no, wireType] = reader.tag();\n const data = reader.skip(wireType, no);\n ufs.push({ no, wireType, data });\n }\n message.$unknown = ufs;\n}\n/**\n * Remove an extension value from a message.\n *\n * If the extension does not extend the given message, an error is raised.\n */\nexport function clearExtension(message, extension) {\n assertExtendee(extension, message);\n if (message.$unknown === undefined) {\n return;\n }\n message.$unknown = message.$unknown.filter((uf) => uf.no !== extension.number);\n}\n/**\n * Check whether an extension is set on a message.\n */\nexport function hasExtension(message, extension) {\n var _a;\n return (extension.extendee.typeName === message.$typeName &&\n !!((_a = message.$unknown) === null || _a === void 0 ? void 0 : _a.find((uf) => uf.no === extension.number)));\n}\n/**\n * Check whether an option is set on a descriptor.\n *\n * Options are extensions to the `google.protobuf.*Options` messages defined in\n * google/protobuf/descriptor.proto. This function gets the option message from\n * the descriptor, and calls hasExtension().\n */\nexport function hasOption(element, option) {\n const message = element.proto.options;\n if (!message) {\n return false;\n }\n return hasExtension(message, option);\n}\n/**\n * Retrieve an option value from a descriptor.\n *\n * Options are extensions to the `google.protobuf.*Options` messages defined in\n * google/protobuf/descriptor.proto. This function gets the option message from\n * the descriptor, and calls getExtension(). Same as getExtension(), this\n * function never returns undefined.\n */\nexport function getOption(element, option) {\n const message = element.proto.options;\n if (!message) {\n const [, , get] = createExtensionContainer(option);\n return get();\n }\n return getExtension(message, option);\n}\nfunction filterUnknownFields(unknownFields, extension) {\n if (unknownFields === undefined)\n return [];\n if (extension.fieldKind === \"enum\" || extension.fieldKind === \"scalar\") {\n // singular scalar fields do not merge, we pick the last\n for (let i = unknownFields.length - 1; i >= 0; --i) {\n if (unknownFields[i].no == extension.number) {\n return [unknownFields[i]];\n }\n }\n return [];\n }\n return unknownFields.filter((uf) => uf.no === extension.number);\n}\n/**\n * @private\n */\nexport function createExtensionContainer(extension, value) {\n const localName = extension.typeName;\n const field = Object.assign(Object.assign({}, extension), { kind: \"field\", parent: extension.extendee, localName });\n const desc = Object.assign(Object.assign({}, extension.extendee), { fields: [field], members: [field], oneofs: [] });\n const container = create(desc, value !== undefined ? { [localName]: value } : undefined);\n return [\n reflect(desc, container),\n field,\n () => {\n const value = container[localName];\n if (value === undefined) {\n // Only message fields are undefined, rest will have a zero value.\n const desc = extension.message;\n if (isWrapperDesc(desc)) {\n return scalarZeroValue(desc.fields[0].scalar, desc.fields[0].longAsString);\n }\n return create(desc);\n }\n return value;\n },\n ];\n}\nfunction assertExtendee(extension, message) {\n if (extension.extendee.typeName != message.$typeName) {\n throw new Error(`extension ${extension.typeName} can only be applied to message ${extension.extendee.typeName}`);\n }\n}\n", "// Copyright 2021-2024 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.\nimport { ScalarType, } from \"./descriptors.js\";\nimport { protoCamelCase } from \"./reflect/names.js\";\nimport { reflect } from \"./reflect/reflect.js\";\nimport { anyUnpack } from \"./wkt/index.js\";\nimport { isWrapperDesc } from \"./wkt/wrappers.js\";\nimport { base64Encode } from \"./wire/index.js\";\nimport { createExtensionContainer, getExtension } from \"./extensions.js\";\nimport { checkField, formatVal } from \"./reflect/reflect-check.js\";\n/* eslint-disable @typescript-eslint/restrict-template-expressions */\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst LEGACY_REQUIRED = 3;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\n// Default options for serializing to JSON.\nconst jsonWriteDefaults = {\n alwaysEmitImplicit: false,\n enumAsInteger: false,\n useProtoFieldName: false,\n};\nfunction makeWriteOptions(options) {\n return options ? Object.assign(Object.assign({}, jsonWriteDefaults), options) : jsonWriteDefaults;\n}\n/**\n * Serialize the message to a JSON value, a JavaScript value that can be\n * passed to JSON.stringify().\n */\nexport function toJson(schema, message, options) {\n return reflectToJson(reflect(schema, message), makeWriteOptions(options));\n}\n/**\n * Serialize the message to a JSON string.\n */\nexport function toJsonString(schema, message, options) {\n var _a;\n const jsonValue = toJson(schema, message, options);\n return JSON.stringify(jsonValue, null, (_a = options === null || options === void 0 ? void 0 : options.prettySpaces) !== null && _a !== void 0 ? _a : 0);\n}\n/**\n * Serialize a single enum value to JSON.\n */\nexport function enumToJson(descEnum, value) {\n var _a;\n if (descEnum.typeName == \"google.protobuf.NullValue\") {\n return null;\n }\n const name = (_a = descEnum.value[value]) === null || _a === void 0 ? void 0 : _a.name;\n if (name === undefined) {\n throw new Error(`${String(value)} is not a value in ${descEnum.toString()}`);\n }\n return name;\n}\nfunction reflectToJson(msg, opts) {\n var _a;\n const wktJson = tryWktToJson(msg, opts);\n if (wktJson !== undefined)\n return wktJson;\n const json = {};\n for (const f of msg.sortedFields) {\n if (!msg.isSet(f)) {\n if (f.presence == LEGACY_REQUIRED) {\n throw new Error(`cannot encode field ${msg.desc.typeName}.${f.name} to JSON: required field not set`);\n }\n if (!opts.alwaysEmitImplicit || f.presence !== IMPLICIT) {\n // Fields with implicit presence omit zero values (e.g. empty string) by default\n continue;\n }\n }\n const jsonValue = fieldToJson(f, msg.get(f), opts);\n if (jsonValue !== undefined) {\n json[jsonName(f, opts)] = jsonValue;\n }\n }\n if (opts.registry) {\n const tagSeen = new Set();\n for (const uf of (_a = msg.getUnknown()) !== null && _a !== void 0 ? _a : []) {\n // Same tag can appear multiple times, so we\n // keep track and skip identical ones.\n if (tagSeen.has(uf.no)) {\n continue;\n }\n const extension = opts.registry.getExtensionFor(msg.desc, uf.no);\n if (!extension) {\n continue;\n }\n const value = getExtension(msg.message, extension);\n const [container, field] = createExtensionContainer(extension, value);\n const jsonValue = fieldToJson(field, container.get(field), opts);\n if (jsonValue !== undefined) {\n json[extension.jsonName] = jsonValue;\n }\n }\n }\n return json;\n}\nfunction fieldToJson(f, val, opts) {\n switch (f.fieldKind) {\n case \"scalar\":\n return scalarToJson(f, val);\n case \"message\":\n return reflectToJson(val, opts);\n case \"enum\":\n return enumToJsonInternal(f.enum, val, opts.enumAsInteger);\n case \"list\":\n return listToJson(val, opts);\n case \"map\":\n return mapToJson(val, opts);\n }\n}\nfunction mapToJson(map, opts) {\n const f = map.field();\n const jsonObj = {};\n switch (f.mapKind) {\n case \"scalar\":\n for (const [entryKey, entryValue] of map) {\n jsonObj[entryKey] = scalarToJson(f, entryValue);\n }\n break;\n case \"message\":\n for (const [entryKey, entryValue] of map) {\n jsonObj[entryKey] = reflectToJson(entryValue, opts);\n }\n break;\n case \"enum\":\n for (const [entryKey, entryValue] of map) {\n jsonObj[entryKey] = enumToJsonInternal(f.enum, entryValue, opts.enumAsInteger);\n }\n break;\n }\n return opts.alwaysEmitImplicit || map.size > 0 ? jsonObj : undefined;\n}\nfunction listToJson(list, opts) {\n const f = list.field();\n const jsonArr = [];\n switch (f.listKind) {\n case \"scalar\":\n for (const item of list) {\n jsonArr.push(scalarToJson(f, item));\n }\n break;\n case \"enum\":\n for (const item of list) {\n jsonArr.push(enumToJsonInternal(f.enum, item, opts.enumAsInteger));\n }\n break;\n case \"message\":\n for (const item of list) {\n jsonArr.push(reflectToJson(item, opts));\n }\n break;\n }\n return opts.alwaysEmitImplicit || jsonArr.length > 0 ? jsonArr : undefined;\n}\nfunction enumToJsonInternal(desc, value, enumAsInteger) {\n var _a;\n if (typeof value != \"number\") {\n throw new Error(`cannot encode ${desc} to JSON: expected number, got ${formatVal(value)}`);\n }\n if (desc.typeName == \"google.protobuf.NullValue\") {\n return null;\n }\n if (enumAsInteger) {\n return value;\n }\n const val = desc.value[value];\n return (_a = val === null || val === void 0 ? void 0 : val.name) !== null && _a !== void 0 ? _a : value; // if we don't know the enum value, just return the number\n}\nfunction scalarToJson(field, value) {\n var _a, _b, _c, _d, _e, _f;\n switch (field.scalar) {\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 if (typeof value != \"number\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_a = checkField(field, value)) === null || _a === void 0 ? void 0 : _a.message}`);\n }\n return value;\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 case ScalarType.DOUBLE: // eslint-disable-line no-fallthrough\n if (typeof value != \"number\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_b = checkField(field, value)) === null || _b === void 0 ? void 0 : _b.message}`);\n }\n if (isNaN(value))\n return \"NaN\";\n if (value === Number.POSITIVE_INFINITY)\n return \"Infinity\";\n if (value === Number.NEGATIVE_INFINITY)\n return \"-Infinity\";\n return value;\n // string:\n case ScalarType.STRING:\n if (typeof value != \"string\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_c = checkField(field, value)) === null || _c === void 0 ? void 0 : _c.message}`);\n }\n return value;\n // bool:\n case ScalarType.BOOL:\n if (typeof value != \"boolean\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_d = checkField(field, value)) === null || _d === void 0 ? void 0 : _d.message}`);\n }\n return value;\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 if (typeof value != \"bigint\" && typeof value != \"string\") {\n throw new Error(`cannot encode ${field} to JSON: ${(_e = checkField(field, value)) === null || _e === void 0 ? void 0 : _e.message}`);\n }\n return value.toString();\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 (value instanceof Uint8Array) {\n return base64Encode(value);\n }\n throw new Error(`cannot encode ${field} to JSON: ${(_f = checkField(field, value)) === null || _f === void 0 ? void 0 : _f.message}`);\n }\n}\nfunction jsonName(f, opts) {\n return opts.useProtoFieldName ? f.name : f.jsonName;\n}\n// returns a json value if wkt, otherwise returns undefined.\nfunction tryWktToJson(msg, opts) {\n if (!msg.desc.typeName.startsWith(\"google.protobuf.\")) {\n return undefined;\n }\n switch (msg.desc.typeName) {\n case \"google.protobuf.Any\":\n return anyToJson(msg.message, opts);\n case \"google.protobuf.Timestamp\":\n return timestampToJson(msg.message);\n case \"google.protobuf.Duration\":\n return durationToJson(msg.message);\n case \"google.protobuf.FieldMask\":\n return fieldMaskToJson(msg.message);\n case \"google.protobuf.Struct\":\n return structToJson(msg.message);\n case \"google.protobuf.Value\":\n return valueToJson(msg.message);\n case \"google.protobuf.ListValue\":\n return listValueToJson(msg.message);\n default:\n if (isWrapperDesc(msg.desc)) {\n const valueField = msg.desc.fields[0];\n return scalarToJson(valueField, msg.get(valueField));\n }\n return undefined;\n }\n}\nfunction anyToJson(val, opts) {\n if (val.typeUrl === \"\") {\n return {};\n }\n const { registry } = opts;\n let message;\n let desc;\n if (registry) {\n message = anyUnpack(val, registry);\n if (message) {\n desc = registry.getMessage(message.$typeName);\n }\n }\n if (!desc || !message) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: \"${val.typeUrl}\" is not in the type registry`);\n }\n let json = reflectToJson(reflect(desc, message), opts);\n if (desc.typeName.startsWith(\"google.protobuf.\") ||\n json === null ||\n Array.isArray(json) ||\n typeof json !== \"object\") {\n json = { value: json };\n }\n json[\"@type\"] = val.typeUrl;\n return json;\n}\nfunction durationToJson(val) {\n if (Number(val.seconds) > 315576000000 ||\n Number(val.seconds) < -315576000000) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: value out of range`);\n }\n let text = val.seconds.toString();\n if (val.nanos !== 0) {\n let nanosStr = Math.abs(val.nanos).toString();\n nanosStr = \"0\".repeat(9 - nanosStr.length) + nanosStr;\n if (nanosStr.substring(3) === \"000000\") {\n nanosStr = nanosStr.substring(0, 3);\n }\n else if (nanosStr.substring(6) === \"000\") {\n nanosStr = nanosStr.substring(0, 6);\n }\n text += \".\" + nanosStr;\n if (val.nanos < 0 && Number(val.seconds) == 0) {\n text = \"-\" + text;\n }\n }\n return text + \"s\";\n}\nfunction fieldMaskToJson(val) {\n return val.paths\n .map((p) => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n if (p.match(/_[0-9]?_/g) || p.match(/[A-Z]/g)) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: lowerCamelCase of path name \"` +\n p +\n '\" is irreversible');\n }\n return protoCamelCase(p);\n })\n .join(\",\");\n}\nfunction structToJson(val) {\n const json = {};\n for (const [k, v] of Object.entries(val.fields)) {\n json[k] = valueToJson(v);\n }\n return json;\n}\nfunction valueToJson(val) {\n switch (val.kind.case) {\n case \"nullValue\":\n return null;\n case \"numberValue\":\n if (!Number.isFinite(val.kind.value)) {\n throw new Error(`${val.$typeName} cannot be NaN or Infinity`);\n }\n return val.kind.value;\n case \"boolValue\":\n return val.kind.value;\n case \"stringValue\":\n return val.kind.value;\n case \"structValue\":\n return structToJson(val.kind.value);\n case \"listValue\":\n return listValueToJson(val.kind.value);\n default:\n throw new Error(`${val.$typeName} must have a value`);\n }\n}\nfunction listValueToJson(val) {\n return val.values.map(valueToJson);\n}\nfunction timestampToJson(val) {\n const ms = Number(val.seconds) * 1000;\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") ||\n ms > Date.parse(\"9999-12-31T23:59:59Z\")) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);\n }\n if (val.nanos < 0) {\n throw new Error(`cannot encode message ${val.$typeName} to JSON: nanos must not be negative`);\n }\n let z = \"Z\";\n if (val.nanos > 0) {\n const nanosStr = (val.nanos + 1000000000).toString().substring(1);\n if (nanosStr.substring(3) === \"000000\") {\n z = \".\" + nanosStr.substring(0, 3) + \"Z\";\n }\n else if (nanosStr.substring(6) === \"000\") {\n z = \".\" + nanosStr.substring(0, 6) + \"Z\";\n }\n else {\n z = \".\" + nanosStr + \"Z\";\n }\n }\n return new Date(ms).toISOString().replace(\".000Z\", z);\n}\n", "// Copyright 2021-2024 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/* eslint-disable no-case-declarations,@typescript-eslint/restrict-template-expressions */\nimport { ScalarType, } from \"./descriptors.js\";\nimport { protoInt64 } from \"./proto-int64.js\";\nimport { create } from \"./create.js\";\nimport { reflect } from \"./reflect/reflect.js\";\nimport { FieldError, isFieldError } from \"./reflect/error.js\";\nimport { formatVal } from \"./reflect/reflect-check.js\";\nimport { scalarZeroValue } from \"./reflect/scalar.js\";\nimport { base64Decode } from \"./wire/base64-encoding.js\";\nimport { isWrapperDesc, anyPack, ListValueSchema, NullValue, StructSchema, ValueSchema, } from \"./wkt/index.js\";\nimport { createExtensionContainer, setExtension } from \"./extensions.js\";\n// Default options for parsing JSON.\nconst jsonReadDefaults = {\n ignoreUnknownFields: false,\n};\nfunction makeReadOptions(options) {\n return options ? Object.assign(Object.assign({}, jsonReadDefaults), options) : jsonReadDefaults;\n}\n/**\n * Parse a message from a JSON string.\n */\nexport function fromJsonString(schema, json, options) {\n return fromJson(schema, parseJsonString(json, schema.typeName), options);\n}\n/**\n * Parse a message from a JSON string, 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 */\nexport function mergeFromJsonString(schema, target, json, options) {\n return mergeFromJson(schema, target, parseJsonString(json, schema.typeName), options);\n}\n/**\n * Parse a message from a JSON value.\n */\nexport function fromJson(schema, json, options) {\n const msg = reflect(schema);\n try {\n readMessage(msg, json, makeReadOptions(options));\n }\n catch (e) {\n if (isFieldError(e)) {\n // @ts-expect-error we use the ES2022 error CTOR option \"cause\" for better stack traces\n throw new Error(`cannot decode ${e.field()} from JSON: ${e.message}`, {\n cause: e,\n });\n }\n throw e;\n }\n return msg.message;\n}\n/**\n * Parse a message from a JSON value, 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 */\nexport function mergeFromJson(schema, target, json, options) {\n try {\n readMessage(reflect(schema, target), json, makeReadOptions(options));\n }\n catch (e) {\n if (isFieldError(e)) {\n // @ts-expect-error we use the ES2022 error CTOR option \"cause\" for better stack traces\n throw new Error(`cannot decode ${e.field()} from JSON: ${e.message}`, {\n cause: e,\n });\n }\n throw e;\n }\n return target;\n}\n/**\n * Parses an enum value from JSON.\n */\nexport function enumFromJson(descEnum, json) {\n const val = readEnum(descEnum, json, false, false);\n if (val === tokenIgnoredUnknownEnum) {\n throw new Error(`cannot decode ${String(descEnum)} from JSON: ${formatVal(json)}`);\n }\n return val;\n}\n/**\n * Is the given value a JSON enum value?\n */\nexport function isEnumJson(descEnum, value) {\n return undefined !== descEnum.values.find((v) => v.name === value);\n}\nfunction readMessage(msg, json, opts) {\n var _a;\n if (tryWktFromJson(msg, json, opts)) {\n return;\n }\n if (json == null || Array.isArray(json) || typeof json != \"object\") {\n throw new Error(`cannot decode ${msg.desc} from JSON: ${formatVal(json)}`);\n }\n const oneofSeen = new Map();\n const jsonNames = new Map();\n for (const field of msg.desc.fields) {\n jsonNames.set(field.name, field).set(field.jsonName, field);\n }\n for (const [jsonKey, jsonValue] of Object.entries(json)) {\n const field = jsonNames.get(jsonKey);\n if (field) {\n if (field.oneof) {\n if (jsonValue === null && field.fieldKind == \"scalar\") {\n // see conformance test Required.Proto3.JsonInput.OneofFieldNull{First,Second}\n continue;\n }\n const seen = oneofSeen.get(field.oneof);\n if (seen !== undefined) {\n throw new FieldError(field.oneof, `oneof set multiple times by ${seen.name} and ${field.name}`);\n }\n oneofSeen.set(field.oneof, field);\n }\n readField(msg, field, jsonValue, opts);\n }\n else {\n let extension = undefined;\n if (jsonKey.startsWith(\"[\") &&\n jsonKey.endsWith(\"]\") &&\n (extension = (_a = opts.registry) === null || _a === void 0 ? void 0 : _a.getExtension(jsonKey.substring(1, jsonKey.length - 1))) &&\n extension.extendee.typeName === msg.desc.typeName) {\n const [container, field, get] = createExtensionContainer(extension);\n readField(container, field, jsonValue, opts);\n setExtension(msg.message, extension, get());\n }\n if (!extension && !opts.ignoreUnknownFields) {\n throw new Error(`cannot decode ${msg.desc} from JSON: key \"${jsonKey}\" is unknown`);\n }\n }\n }\n}\nfunction readField(msg, field, json, opts) {\n switch (field.fieldKind) {\n case \"scalar\":\n readScalarField(msg, field, json);\n break;\n case \"enum\":\n readEnumField(msg, field, json, opts);\n break;\n case \"message\":\n readMessageField(msg, field, json, opts);\n break;\n case \"list\":\n readListField(msg.get(field), json, opts);\n break;\n case \"map\":\n readMapField(msg.get(field), json, opts);\n break;\n }\n}\nfunction readMapField(map, json, opts) {\n if (json === null) {\n return;\n }\n const field = map.field();\n if (typeof json != \"object\" || Array.isArray(json)) {\n throw new FieldError(field, \"expected object, got \" + formatVal(json));\n }\n for (const [jsonMapKey, jsonMapValue] of Object.entries(json)) {\n if (jsonMapValue === null) {\n throw new FieldError(field, \"map value must not be null\");\n }\n let value;\n switch (field.mapKind) {\n case \"message\":\n const msgValue = reflect(field.message);\n readMessage(msgValue, jsonMapValue, opts);\n value = msgValue;\n break;\n case \"enum\":\n value = readEnum(field.enum, jsonMapValue, opts.ignoreUnknownFields, true);\n if (value === tokenIgnoredUnknownEnum) {\n return;\n }\n break;\n case \"scalar\":\n value = scalarFromJson(field, jsonMapValue, true);\n break;\n }\n const key = mapKeyFromJson(field.mapKey, jsonMapKey);\n map.set(key, value);\n }\n}\nfunction readListField(list, json, opts) {\n if (json === null) {\n return;\n }\n const field = list.field();\n if (!Array.isArray(json)) {\n throw new FieldError(field, \"expected Array, got \" + formatVal(json));\n }\n for (const jsonItem of json) {\n if (jsonItem === null) {\n throw new FieldError(field, \"list item must not be null\");\n }\n switch (field.listKind) {\n case \"message\":\n const msgValue = reflect(field.message);\n readMessage(msgValue, jsonItem, opts);\n list.add(msgValue);\n break;\n case \"enum\":\n const enumValue = readEnum(field.enum, jsonItem, opts.ignoreUnknownFields, true);\n if (enumValue !== tokenIgnoredUnknownEnum) {\n list.add(enumValue);\n }\n break;\n case \"scalar\":\n list.add(scalarFromJson(field, jsonItem, true));\n break;\n }\n }\n}\nfunction readMessageField(msg, field, json, opts) {\n if (json === null && field.message.typeName != \"google.protobuf.Value\") {\n msg.clear(field);\n return;\n }\n const msgValue = msg.isSet(field) ? msg.get(field) : reflect(field.message);\n readMessage(msgValue, json, opts);\n msg.set(field, msgValue);\n}\nfunction readEnumField(msg, field, json, opts) {\n const enumValue = readEnum(field.enum, json, opts.ignoreUnknownFields, false);\n if (enumValue === tokenNull) {\n msg.clear(field);\n }\n else if (enumValue !== tokenIgnoredUnknownEnum) {\n msg.set(field, enumValue);\n }\n}\nfunction readScalarField(msg, field, json) {\n const scalarValue = scalarFromJson(field, json, false);\n if (scalarValue === tokenNull) {\n msg.clear(field);\n }\n else {\n msg.set(field, scalarValue);\n }\n}\nconst tokenIgnoredUnknownEnum = Symbol();\nfunction readEnum(desc, json, ignoreUnknownFields, nullAsZeroValue) {\n if (json === null) {\n if (desc.typeName == \"google.protobuf.NullValue\") {\n return 0; // google.protobuf.NullValue.NULL_VALUE = 0\n }\n return nullAsZeroValue ? desc.values[0].number : tokenNull;\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 = desc.values.find((ev) => ev.name === json);\n if (value !== undefined) {\n return value.number;\n }\n if (ignoreUnknownFields) {\n return tokenIgnoredUnknownEnum;\n }\n break;\n }\n throw new Error(`cannot decode ${desc} from JSON: ${formatVal(json)}`);\n}\nconst tokenNull = Symbol();\nfunction scalarFromJson(field, json, nullAsZeroValue) {\n if (json === null) {\n if (nullAsZeroValue) {\n return scalarZeroValue(field.scalar, false);\n }\n return tokenNull;\n }\n // int64, sfixed64, sint64, fixed64, uint64: Reflect supports string and number.\n // string, bool: Supported by reflect.\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (field.scalar) {\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 === \"NaN\")\n return NaN;\n if (json === \"Infinity\")\n return Number.POSITIVE_INFINITY;\n if (json === \"-Infinity\")\n return Number.NEGATIVE_INFINITY;\n if (typeof json == \"number\") {\n if (isNaN(json)) {\n // NaN must be encoded with string constants\n throw new FieldError(field, \"unexpected NaN number\");\n }\n if (!isFinite(json)) {\n // Infinity must be encoded with string constants\n throw new FieldError(field, \"unexpected infinite number\");\n }\n break;\n }\n if (typeof json == \"string\") {\n if (json === \"\") {\n // empty string is not a number\n break;\n }\n if (json.trim().length !== json.length) {\n // extra whitespace\n break;\n }\n const float = Number(json);\n if (!isFinite(float)) {\n // Infinity and NaN must be encoded with string constants\n break;\n }\n return float;\n }\n break;\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 return int32FromJson(json);\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 (typeof json == \"string\") {\n if (json === \"\") {\n return new Uint8Array(0);\n }\n try {\n return base64Decode(json);\n }\n catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n throw new FieldError(field, message);\n }\n }\n break;\n }\n return json;\n}\n/**\n * Try to parse a JSON value to a map key for the reflect API.\n *\n * Returns the input if the JSON value cannot be converted.\n */\nfunction mapKeyFromJson(type, json) {\n switch (type) {\n case ScalarType.BOOL:\n // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n switch (json) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n }\n return json;\n case ScalarType.INT32:\n case ScalarType.FIXED32:\n case ScalarType.UINT32:\n case ScalarType.SFIXED32:\n case ScalarType.SINT32:\n return int32FromJson(json);\n default:\n return json;\n }\n}\n/**\n * Try to parse a JSON value to a 32-bit integer for the reflect API.\n *\n * Returns the input if the JSON value cannot be converted.\n */\nfunction int32FromJson(json) {\n if (typeof json == \"string\") {\n if (json === \"\") {\n // empty string is not a number\n return json;\n }\n if (json.trim().length !== json.length) {\n // extra whitespace\n return json;\n }\n const num = Number(json);\n if (Number.isNaN(num)) {\n // not a number\n return json;\n }\n return num;\n }\n return json;\n}\nfunction parseJsonString(jsonString, typeName) {\n try {\n return JSON.parse(jsonString);\n }\n catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n throw new Error(`cannot decode message ${typeName} from JSON: ${message}`, \n // @ts-expect-error we use the ES2022 error CTOR option \"cause\" for better stack traces\n { cause: e });\n }\n}\nfunction tryWktFromJson(msg, jsonValue, opts) {\n if (!msg.desc.typeName.startsWith(\"google.protobuf.\")) {\n return false;\n }\n switch (msg.desc.typeName) {\n case \"google.protobuf.Any\":\n anyFromJson(msg.message, jsonValue, opts);\n return true;\n case \"google.protobuf.Timestamp\":\n timestampFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.Duration\":\n durationFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.FieldMask\":\n fieldMaskFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.Struct\":\n structFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.Value\":\n valueFromJson(msg.message, jsonValue);\n return true;\n case \"google.protobuf.ListValue\":\n listValueFromJson(msg.message, jsonValue);\n return true;\n default:\n if (isWrapperDesc(msg.desc)) {\n const valueField = msg.desc.fields[0];\n if (jsonValue === null) {\n msg.clear(valueField);\n }\n else {\n msg.set(valueField, scalarFromJson(valueField, jsonValue, true));\n }\n return true;\n }\n return false;\n }\n}\nfunction anyFromJson(any, json, opts) {\n var _a;\n if (json === null || Array.isArray(json) || typeof json != \"object\") {\n throw new Error(`cannot decode message ${any.$typeName} from JSON: expected object but got ${formatVal(json)}`);\n }\n if (Object.keys(json).length == 0) {\n return;\n }\n const typeUrl = json[\"@type\"];\n if (typeof typeUrl != \"string\" || typeUrl == \"\") {\n throw new Error(`cannot decode message ${any.$typeName} from JSON: \"@type\" is empty`);\n }\n const typeName = typeUrl.includes(\"/\")\n ? typeUrl.substring(typeUrl.lastIndexOf(\"/\") + 1)\n : typeUrl;\n if (!typeName.length) {\n throw new Error(`cannot decode message ${any.$typeName} from JSON: \"@type\" is invalid`);\n }\n const desc = (_a = opts.registry) === null || _a === void 0 ? void 0 : _a.getMessage(typeName);\n if (!desc) {\n throw new Error(`cannot decode message ${any.$typeName} from JSON: ${typeUrl} is not in the type registry`);\n }\n const msg = reflect(desc);\n if (typeName.startsWith(\"google.protobuf.\") &&\n Object.prototype.hasOwnProperty.call(json, \"value\")) {\n const value = json[\"value\"];\n readMessage(msg, value, opts);\n }\n else {\n const copy = Object.assign({}, json);\n delete copy[\"@type\"];\n readMessage(msg, copy, opts);\n }\n anyPack(msg.desc, msg.message, any);\n}\nfunction timestampFromJson(timestamp, json) {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: ${formatVal(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 message ${timestamp.$typeName} from JSON: invalid RFC 3339 string`);\n }\n const ms = Date.parse(\n //prettier-ignore\n 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 message ${timestamp.$typeName} from JSON: invalid RFC 3339 string`);\n }\n if (ms < Date.parse(\"0001-01-01T00:00:00Z\") ||\n ms > Date.parse(\"9999-12-31T23:59:59Z\")) {\n throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);\n }\n timestamp.seconds = protoInt64.parse(ms / 1000);\n timestamp.nanos = 0;\n if (matches[7]) {\n timestamp.nanos =\n parseInt(\"1\" + matches[7] + \"0\".repeat(9 - matches[7].length)) -\n 1000000000;\n }\n}\nfunction durationFromJson(duration, json) {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal(json)}`);\n }\n const match = json.match(/^(-?[0-9]+)(?:\\.([0-9]+))?s/);\n if (match === null) {\n throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal(json)}`);\n }\n const longSeconds = Number(match[1]);\n if (longSeconds > 315576000000 || longSeconds < -315576000000) {\n throw new Error(`cannot decode message ${duration.$typeName} from JSON: ${formatVal(json)}`);\n }\n duration.seconds = protoInt64.parse(longSeconds);\n if (typeof match[2] !== \"string\") {\n return;\n }\n const nanosStr = match[2] + \"0\".repeat(9 - match[2].length);\n duration.nanos = parseInt(nanosStr);\n if (longSeconds < 0 || Object.is(longSeconds, -0)) {\n duration.nanos = -duration.nanos;\n }\n}\nfunction fieldMaskFromJson(fieldMask, json) {\n if (typeof json !== \"string\") {\n throw new Error(`cannot decode message ${fieldMask.$typeName} from JSON: ${formatVal(json)}`);\n }\n if (json === \"\") {\n return;\n }\n function camelToSnake(str) {\n if (str.includes(\"_\")) {\n throw new Error(`cannot decode message ${fieldMask.$typeName} 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 fieldMask.paths = json.split(\",\").map(camelToSnake);\n}\nfunction structFromJson(struct, json) {\n if (typeof json != \"object\" || json == null || Array.isArray(json)) {\n throw new Error(`cannot decode message ${struct.$typeName} from JSON ${formatVal(json)}`);\n }\n for (const [k, v] of Object.entries(json)) {\n const parsedV = create(ValueSchema);\n valueFromJson(parsedV, v);\n struct.fields[k] = parsedV;\n }\n}\nfunction valueFromJson(value, json) {\n switch (typeof json) {\n case \"number\":\n value.kind = { case: \"numberValue\", value: json };\n break;\n case \"string\":\n value.kind = { case: \"stringValue\", value: json };\n break;\n case \"boolean\":\n value.kind = { case: \"boolValue\", value: json };\n break;\n case \"object\":\n if (json === null) {\n value.kind = { case: \"nullValue\", value: NullValue.NULL_VALUE };\n }\n else if (Array.isArray(json)) {\n const listValue = create(ListValueSchema);\n listValueFromJson(listValue, json);\n value.kind = { case: \"listValue\", value: listValue };\n }\n else {\n const struct = create(StructSchema);\n structFromJson(struct, json);\n value.kind = { case: \"structValue\", value: struct };\n }\n break;\n default:\n throw new Error(`cannot decode message ${value.$typeName} from JSON ${formatVal(json)}`);\n }\n return value;\n}\nfunction listValueFromJson(listValue, json) {\n if (!Array.isArray(json)) {\n throw new Error(`cannot decode message ${listValue.$typeName} from JSON ${formatVal(json)}`);\n }\n for (const e of json) {\n const value = create(ValueSchema);\n valueFromJson(value, e);\n listValue.values.push(value);\n }\n}\n", "// Copyright 2023, mochabug AB\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 { toJsonString } from '@bufbuild/protobuf';\nimport chalk from 'chalk';\nimport { Command, program } from 'commander';\nimport figlet from 'figlet';\nimport fs from 'fs';\nimport path from 'path';\nimport semver from 'semver';\nimport updateNotifier from 'update-notifier';\nimport { add } from './add';\nimport { ManifestSchema } from './genproto/mochabugapis/adapt/plugins/v1/plugins_pb';\nimport { init } from './init';\nimport { waitForConsent } from './oauth2';\nimport { emulate, publish } from './publish';\nimport { readManifest } from './utils';\n\nasync function isValidUrl(urlString: string) {\n try {\n new URL(urlString);\n return true;\n } catch (error) {\n return false;\n }\n}\n\nfunction banner(): string {\n return chalk.yellowBright(figlet.textSync('Adaptkit'));\n}\n\nasync function handleInit(dir: string, cmd: Command) {\n // Check for unexpected arguments\n if (cmd.args.length >= 1) {\n console.error(\n chalk.red(`Error: Invalid sub-command or arguments provided.`)\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help init')}`\n );\n process.exit(1);\n }\n\n // Continue with the usual logic if no unexpected arguments are found\n await init(dir);\n}\n\nasync function handleAdd(cmd: Command) {\n if (cmd.args.length >= 1) {\n console.error(\n chalk.red(`Error: Invalid sub-command or arguments provided.`)\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help add')}`\n );\n process.exit(1);\n }\n\n const manifest = readManifest('manifest.json');\n if (!manifest) {\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help add')}`\n );\n process.exit(1);\n }\n await add(manifest);\n}\n\nasync function handlePublish(\n endpoint: string,\n authUrl: string,\n client: string,\n insecure: boolean,\n errorUrl: string,\n cmd: Command\n) {\n if (!(await isValidUrl(authUrl))) {\n console.error(\n chalk.red(\n `Error: The provided authority url is not a valid URL: ${authUrl}`\n )\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help publish')}`\n );\n process.exit(1);\n }\n if (!(await isValidUrl(endpoint))) {\n console.error(\n chalk.red(`Error: The provided endpoint is not valid: ${endpoint}`)\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help publish')}`\n );\n process.exit(1);\n }\n\n if (cmd.args.length >= 1) {\n console.error(\n chalk.red(`Error: Invalid sub-command or arguments provided.`)\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help publish')}`\n );\n process.exit(1);\n }\n\n const manifest = readManifest('manifest.json');\n if (!manifest) {\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help publish')}`\n );\n process.exit(1);\n }\n\n if (insecure) {\n process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';\n }\n\n const accessToken = await waitForConsent(authUrl, errorUrl, client);\n if (!accessToken) {\n console.log('Could not fetch the acccess token. Terminating...');\n process.exit(1);\n }\n await publish(manifest, endpoint, accessToken, insecure);\n}\n\nasync function handleEmulate(endpoint: string, cmd: Command) {\n if (!(await isValidUrl(endpoint))) {\n console.error(\n chalk.red(`Error: The provided endpoint is not valid: ${endpoint}`)\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help emulate')}`\n );\n process.exit(1);\n }\n if (cmd.args.length >= 1) {\n console.error(\n chalk.red(`Error: Invalid sub-command or arguments provided.`)\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help emulate')}`\n );\n process.exit(1);\n }\n\n const manifest = readManifest('manifest.json');\n if (!manifest) {\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help emulate')}`\n );\n process.exit(1);\n }\n await emulate(manifest, endpoint);\n}\n\nfunction handleVersion(bump: 'patch' | 'minor' | 'major' | null, cmd: Command) {\n if (cmd.args.length >= 1) {\n console.error(\n chalk.red(`Error: Invalid sub-command or arguments provided.`)\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help version')}`\n );\n process.exit(1);\n }\n\n const manifest = readManifest('manifest.json');\n if (!manifest) {\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help version')}`\n );\n process.exit(1);\n }\n\n const manVer = semver.parse(manifest.version);\n if (!manVer) {\n console.error(\n chalk.red(\n `Error: The version in the manifest is not a valid semver version: ${manifest.version}`\n )\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help version')}`\n );\n process.exit(1);\n }\n\n if (bump === null) {\n console.error(\n chalk.red(\n 'You must provide either --patch --minor or --major to bump the version.'\n )\n );\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help version')}`\n );\n process.exit(1);\n }\n\n const prevVersion = manifest.version;\n manifest.version = manVer.inc(bump).toString();\n fs.writeFileSync(\n path.join(process.cwd(), 'manifest.json'),\n toJsonString(ManifestSchema, manifest, {\n enumAsInteger: false,\n prettySpaces: 2\n })\n );\n console.log(\n chalk.green(`Bumped the version from ${prevVersion} to ${manifest.version}`)\n );\n}\n\nasync function main() {\n const notifier = updateNotifier({\n pkg: __PACKAGE_JSON__\n });\n notifier.notify({ isGlobal: true, defer: false });\n\n program\n .name('Adaptkit')\n .version('1.0.0')\n .description(\n 'Unleash the power of seamless plugin development with Adaptkit, your premier CLI companion for Mochabug Adapt. Effortlessly create, manage and deploy plugins with finesse. Explore the full potential of Adaptkit at ' +\n chalk.underline.blue('https://www.mochabug.com')\n )\n .configureHelp({\n sortSubcommands: true,\n sortOptions: true,\n showGlobalOptions: true,\n helpWidth: 140\n });\n\n const DEFAULT_INIT_DIRECTORY = './';\n program\n .command('init')\n .option(\n '-d, --dir <dir>',\n `Choose the directory to initiate your plugin's journey. Default: '${DEFAULT_INIT_DIRECTORY}'`,\n DEFAULT_INIT_DIRECTORY\n )\n .description(\n 'Kickstart your plugin adventure. This command scaffolds a ready-to-go project structure.'\n )\n .action(({ dir }, cmd) => handleInit(dir, cmd));\n\n program\n .command('add')\n .description(\"Expand your plugin's capabilities\")\n .action((_, cmd) => handleAdd(cmd));\n\n program\n .command('publish')\n .option(\n '-e, --endpoint <url>',\n 'URL of the gRPC server (including protocol)',\n 'https://adapt-grpc-dev.mochabugapis.com'\n )\n .option(\n '-a, --authority <authority>',\n chalk.yellow('Warning: Primarily for development purposes'),\n 'https://auth-dev.mochabugapis.com'\n )\n .option(\n '-c, --client <client>',\n chalk.yellow('Warning: Primarily for development purposes'),\n '2d711bbb-4b57-4ad5-8bf0-f2269de5b71d'\n )\n .option(\n '--error-url <errorUrl>',\n chalk.yellow('Warning: Primarily for development purposes'),\n 'https://accounts-dev.mochabug.com/services/error'\n )\n .option('--insecure', chalk.red('Ignore SSL certificate errors (insecure)'))\n .description(\n 'Ready for liftoff? Publish your plugin to your organization with this command.'\n )\n .action(({ endpoint, authority, client, insecure, errorUrl }, cmd) =>\n handlePublish(endpoint, authority, client, insecure, errorUrl, cmd)\n );\n\n program\n .command('emulate')\n .option(\n '-e, --endpoint <url>',\n 'URL of the emulator server (including protocol)',\n 'http://localhost:51001'\n )\n .description(\n 'Take your plugin for a test drive. Best used in conjunction with your build pipeline.'\n )\n .action(({ endpoint }, cmd) => handleEmulate(endpoint, cmd));\n\n program\n .command('version')\n .option('--patch', 'Bump the manifest version to the next patch version')\n .option('--minor', 'Bump the manifest version to the next minor version')\n .option('--major', 'Bump the manifest version to the next major version')\n .description(\n 'The version command can manipulate the version of the plugin manifest.'\n )\n .action(({ major, minor, patch }, cmd) =>\n handleVersion(\n major ? 'major' : minor ? 'minor' : patch ? 'patch' : null,\n cmd\n )\n );\n\n // Set a custom help action\n program.addHelpText('beforeAll', banner() + '\\n');\n program.showHelpAfterError();\n\n try {\n await program.parseAsync(process.argv);\n } catch (error: any) {\n console.error(error);\n console.error('An error occurred:', error.message);\n }\n}\n\nmain();\n", "// Copyright 2023, mochabug AB\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 { fromJson, toJson, toJsonString } from '@bufbuild/protobuf';\nimport { confirm, input, select } from '@inquirer/prompts';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport {\n Manifest,\n ManifestSchema,\n VertexSchema\n} from './genproto/mochabugapis/adapt/plugins/v1/plugins_pb';\nimport { addVertex } from './vertices';\n\nexport async function add(manifest: Manifest) {\n const vertexName = await input({\n message: 'Type a new unused vertex name',\n transformer: (val: string): string => {\n return val.trim();\n },\n validate: (val: string): boolean => {\n val = val.trim();\n if (manifest.vertices.filter((item) => item.name === val).length > 0) {\n return false;\n }\n return /^[_a-z][_a-z0-9]*$/.test(val);\n }\n });\n const vertexType = await select({\n message: 'Choose your vertex type',\n choices: [\n {\n name: 'action',\n value: 'action',\n description:\n 'An action is a vertex that performs a task, such as sending an email or updating a database.'\n },\n {\n name: 'browser',\n value: 'browser',\n description:\n 'A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button.'\n },\n {\n name: 'cron-trigger',\n value: 'cron-trigger',\n description:\n 'A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM.'\n },\n {\n name: 'external-trigger',\n value: 'external-trigger',\n description:\n 'An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue.'\n }\n ]\n });\n const hasConfigurator = await confirm({\n message: 'Need a configurator for the vertex?'\n });\n\n // Check which frontend to use, if any\n let frontendLib: 'none' | 'react' | undefined;\n if (hasConfigurator || vertexType === 'browser') {\n frontendLib = await select({\n message: 'Choose frontend library',\n choices: [\n {\n name: 'React',\n value: 'react',\n description: 'React with TypeScript'\n },\n {\n name: 'None',\n value: 'none',\n description: 'I do it myself'\n }\n ]\n });\n }\n\n console.log(chalk.magenta('Creating new vertex templates...'));\n\n const vertex = addVertex(\n '.',\n vertexName,\n vertexType,\n hasConfigurator,\n manifest.vertices.map((item) => toJson(VertexSchema, item)),\n frontendLib\n );\n manifest.vertices.push(fromJson(VertexSchema, vertex));\n if (!manifest.configurators && vertex.configurator) {\n manifest.configurators = 'dist/configurators.js';\n }\n\n console.log(chalk.magenta('Updating manifest...'));\n fs.writeFileSync(\n 'manifest.json',\n toJsonString(ManifestSchema, manifest, {\n enumAsInteger: false,\n prettySpaces: 2\n })\n );\n console.log(chalk.bgGreen('Success'));\n}\n", "// Copyright 2021-2024 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 * Hydrate a service descriptor.\n *\n * @private\n */\nexport function serviceDesc(file, path, ...paths) {\n if (paths.length > 0) {\n throw new Error();\n }\n return file.services[path];\n}\n", "// Copyright 2023 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 v2.2.3 with parameter \"target=ts,json_types=true,ts_nocheck=true\"\n// @generated from file buf/validate/validate.proto (package buf.validate, syntax proto2)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv1\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv1\";\nimport type { Duration, DurationJson, FieldDescriptorProto_Type, FieldDescriptorProto_TypeJson, FieldOptions, MessageOptions, OneofOptions, Timestamp, TimestampJson } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file buf/validate/validate.proto.\n */\nexport const file_buf_validate_validate: GenFile = /*@__PURE__*/\n fileDesc(\"ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI9CgpDb25zdHJhaW50EgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJNChJNZXNzYWdlQ29uc3RyYWludHMSEAoIZGlzYWJsZWQYASABKAgSJQoDY2VsGAMgAygLMhguYnVmLnZhbGlkYXRlLkNvbnN0cmFpbnQiJAoQT25lb2ZDb25zdHJhaW50cxIQCghyZXF1aXJlZBgBIAEoCCKoCAoQRmllbGRDb25zdHJhaW50cxIlCgNjZWwYFyADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludBIQCghyZXF1aXJlZBgZIAEoCBIkCgZpZ25vcmUYGyABKA4yFC5idWYudmFsaWRhdGUuSWdub3JlEikKBWZsb2F0GAEgASgLMhguYnVmLnZhbGlkYXRlLkZsb2F0UnVsZXNIABIrCgZkb3VibGUYAiABKAsyGS5idWYudmFsaWRhdGUuRG91YmxlUnVsZXNIABIpCgVpbnQzMhgDIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQzMlJ1bGVzSAASKQoFaW50NjQYBCABKAsyGC5idWYudmFsaWRhdGUuSW50NjRSdWxlc0gAEisKBnVpbnQzMhgFIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50MzJSdWxlc0gAEisKBnVpbnQ2NBgGIAEoCzIZLmJ1Zi52YWxpZGF0ZS5VSW50NjRSdWxlc0gAEisKBnNpbnQzMhgHIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50MzJSdWxlc0gAEisKBnNpbnQ2NBgIIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TSW50NjRSdWxlc0gAEi0KB2ZpeGVkMzIYCSABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQzMlJ1bGVzSAASLQoHZml4ZWQ2NBgKIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDY0UnVsZXNIABIvCghzZml4ZWQzMhgLIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQzMlJ1bGVzSAASLwoIc2ZpeGVkNjQYDCABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkNjRSdWxlc0gAEicKBGJvb2wYDSABKAsyFy5idWYudmFsaWRhdGUuQm9vbFJ1bGVzSAASKwoGc3RyaW5nGA4gASgLMhkuYnVmLnZhbGlkYXRlLlN0cmluZ1J1bGVzSAASKQoFYnl0ZXMYDyABKAsyGC5idWYudmFsaWRhdGUuQnl0ZXNSdWxlc0gAEicKBGVudW0YECABKAsyFy5idWYudmFsaWRhdGUuRW51bVJ1bGVzSAASLwoIcmVwZWF0ZWQYEiABKAsyGy5idWYudmFsaWRhdGUuUmVwZWF0ZWRSdWxlc0gAEiUKA21hcBgTIAEoCzIWLmJ1Zi52YWxpZGF0ZS5NYXBSdWxlc0gAEiUKA2FueRgUIAEoCzIWLmJ1Zi52YWxpZGF0ZS5BbnlSdWxlc0gAEi8KCGR1cmF0aW9uGBUgASgLMhsuYnVmLnZhbGlkYXRlLkR1cmF0aW9uUnVsZXNIABIxCgl0aW1lc3RhbXAYFiABKAsyHC5idWYudmFsaWRhdGUuVGltZXN0YW1wUnVsZXNIAEIGCgR0eXBlIl8KFVByZWRlZmluZWRDb25zdHJhaW50cxIlCgNjZWwYASADKAsyGC5idWYudmFsaWRhdGUuQ29uc3RyYWludEoECBgQGUoECBoQG1ITc2tpcHBlZGlnbm9yZV9lbXB0eSK1FwoKRmxvYXRSdWxlcxJpCgVjb25zdBgBIAEoAkJawkhXClUKC2Zsb2F0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdQoCaW4YBiADKAJCacJIZgpkCghmbG9hdC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YByADKAJCZsJIYwphCgxmbG9hdC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJ1CgZmaW5pdGUYCCABKAhCZcJIYgpgCgxmbG9hdC5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEisKB2V4YW1wbGUYCSADKAJCGsJIFwoVCg1mbG9hdC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLHFwoLRG91YmxlUnVsZXMSagoFY29uc3QYASABKAFCW8JIWApWCgxkb3VibGUuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSoAEKAmx0GAIgASgBQpEBwkiNAQqKAQoJZG91YmxlLmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErABCgNsdGUYAyABKAFCoAHCSJwBCpkBCgpkb3VibGUubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS9AcKAmd0GAQgASgBQuUHwkjhBwqOAQoJZG91YmxlLmd0GoABIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKxAEKDGRvdWJsZS5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs4BChZkb3VibGUuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK1AEKDWRvdWJsZS5ndF9sdGUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwreAQoXZG91YmxlLmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEr8ICgNndGUYBSABKAFCrwjCSKsICpwBCgpkb3VibGUuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtMBCg1kb3VibGUuZ3RlX2x0GsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrdAQoXZG91YmxlLmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuMBCg5kb3VibGUuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7QEKGGRvdWJsZS5ndGVfbHRlX2V4Y2x1c2l2ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ2CgJpbhgGIAMoAUJqwkhnCmUKCWRvdWJsZS5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLnFAoKSW50MzJSdWxlcxJpCgVjb25zdBgBIAEoBUJawkhXClUKC2ludDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnUKAmluGAYgAygFQmnCSGYKZAoIaW50MzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdgoGbm90X2luGAcgAygFQmbCSGMKYQoMaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKwoHZXhhbXBsZRgIIAMoBUIawkgXChUKDWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIucUCgpJbnQ2NFJ1bGVzEmkKBWNvbnN0GAEgASgDQlrCSFcKVQoLaW50NjQuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSigEKAmx0GAIgASgDQnzCSHkKdwoIaW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnAEKA2x0ZRgDIAEoA0KMAcJIiAEKhQEKCWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASlwcKAmd0GAQgASgDQogHwkiEBwp6CghpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKswEKC2ludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq7AQoVaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwwEKDGludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKywEKFmludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEuMHCgNndGUYBSABKANC0wfCSM8HCogBCglpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrCAQoMaW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsoBChZpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrSAQoNaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwraAQoXaW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdQoCaW4YBiADKANCacJIZgpkCghpbnQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i+BQKC1VJbnQzMlJ1bGVzEmoKBWNvbnN0GAEgASgNQlvCSFgKVgoMdWludDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygNQmrCSGcKZQoJdWludDMyLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoDUJnwkhkCmIKDXVpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygNQhvCSBgKFgoOdWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIvgUCgtVSW50NjRSdWxlcxJqCgVjb25zdBgBIAEoBEJbwkhYClYKDHVpbnQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKLAQoCbHQYAiABKARCfcJIegp4Cgl1aW50NjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnQEKA2x0ZRgDIAEoBEKNAcJIiQEKhgEKCnVpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpwHCgJndBgEIAEoBEKNB8JIiQcKewoJdWludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMdWludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWdWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg11aW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXdWludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEugHCgNndGUYBSABKARC2AfCSNQHCokBCgp1aW50NjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwwEKDXVpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKywEKF3VpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrTAQoOdWludDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2wEKGHVpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ2CgJpbhgGIAMoBEJqwkhnCmUKCXVpbnQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ3CgZub3RfaW4YByADKARCZ8JIZApiCg11aW50NjQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoBEIbwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiL4FAoLU0ludDMyUnVsZXMSagoFY29uc3QYASABKBFCW8JIWApWCgxzaW50MzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESdgoCaW4YBiADKBFCasJIZwplCglzaW50MzIuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i+BQKC1NJbnQ2NFJ1bGVzEmoKBWNvbnN0GAEgASgSQlvCSFgKVgoMc2ludDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnYKAmluGAYgAygSQmrCSGcKZQoJc2ludDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEncKBm5vdF9pbhgHIAMoEkJnwkhkCmIKDXNpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygSQhvCSBgKFgoOc2ludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIokVCgxGaXhlZDMyUnVsZXMSawoFY29uc3QYASABKAdCXMJIWQpXCg1maXhlZDMyLmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEowBCgJsdBgCIAEoB0J+wkh7CnkKCmZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoB0KOAcJIigEKhwEKC2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAdCkgfCSI4HCnwKCmZpeGVkMzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAdC3QfCSNkHCooBCgtmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEncKAmluGAYgAygHQmvCSGgKZgoKZml4ZWQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ4CgZub3RfaW4YByADKAdCaMJIZQpjCg5maXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAdCHMJIGQoXCg9maXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIokVCgxGaXhlZDY0UnVsZXMSawoFY29uc3QYASABKAZCXMJIWQpXCg1maXhlZDY0LmNvbnN0GkZ0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbcnVsZXMuY29uc3RdKSA6ICcnEowBCgJsdBgCIAEoBkJ+wkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASngEKA2x0ZRgDIAEoBkKOAcJIigEKhwEKC2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKhBwoCZ3QYBCABKAZCkgfCSI4HCnwKCmZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrUBCg1maXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq9AQoXZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrFAQoOZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs0BChhmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu0HCgNndGUYBSABKAZC3QfCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEncKAmluGAYgAygGQmvCSGgKZgoKZml4ZWQ2NC5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIpoVCg1TRml4ZWQzMlJ1bGVzEmwKBWNvbnN0GAEgASgPQl3CSFoKWAoOc2ZpeGVkMzIuY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeAoCaW4YBiADKA9CbMJIaQpnCgtzZml4ZWQzMi5pbhpYISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ5CgZub3RfaW4YByADKA9CacJIZgpkCg9zZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygPQh3CSBoKGAoQc2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4imhUKDVNGaXhlZDY0UnVsZXMSbAoFY29uc3QYASABKBBCXcJIWgpYCg5zZml4ZWQ2NC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKNAQoCbHQYAiABKBBCf8JIfAp6CgtzZml4ZWQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgQQo8BwkiLAQqIAQoMc2ZpeGVkNjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKBBClwfCSJMHCn0KC3NmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkNjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoEELiB8JI3gcKiwEKDHNmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ4CgJpbhgGIAMoEEJswkhpCmcKC3NmaXhlZDY0LmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnkKBm5vdF9pbhgHIAMoEEJpwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKBBCHcJIGgoYChBzZml4ZWQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKsAQoJQm9vbFJ1bGVzEmgKBWNvbnN0GAEgASgIQlnCSFYKVAoKYm9vbC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi4DYKC1N0cmluZ1J1bGVzEmwKBWNvbnN0GAEgASgJQl3CSFoKWAoMc3RyaW5nLmNvbnN0Gkh0aGlzICE9IHJ1bGVzLmNvbnN0ID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSfgoDbGVuGBMgASgEQnHCSG4KbAoKc3RyaW5nLmxlbhpedWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKZAQoHbWluX2xlbhgCIAEoBEKHAcJIgwEKgAEKDnN0cmluZy5taW5fbGVuGm51aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKXAQoHbWF4X2xlbhgDIAEoBEKFAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSmwEKCWxlbl9ieXRlcxgUIAEoBEKHAcJIgwEKgAEKEHN0cmluZy5sZW5fYnl0ZXMabHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSAhPSBydWxlcy5sZW5fYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKjAQoJbWluX2J5dGVzGAQgASgEQo8BwkiLAQqIAQoQc3RyaW5nLm1pbl9ieXRlcxp0dWludChieXRlcyh0aGlzKS5zaXplKCkpIDwgcnVsZXMubWluX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSogEKCW1heF9ieXRlcxgFIAEoBEKOAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSdgoCaW4YCiADKAlCasJIZwplCglzdHJpbmcuaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEmYKB3VyaV9yZWYYEiABKAhCU8JIUApOCg5zdHJpbmcudXJpX3JlZhIZdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEqgFChB3ZWxsX2tub3duX3JlZ2V4GBggASgOMhguYnVmLnZhbGlkYXRlLktub3duUmVnZXhC8QTCSO0ECvABCiNzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfbmFtZRImdmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIG5hbWUaoAFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0cmljdCA/J146P1swLTlhLXpBLVohIyQlJlwnKistLl5ffH5ceDYwXSskJyA6J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0rJCcpCo0BCilzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfbmFtZV9lbXB0eRI1dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIEhUVFAgaGVhZGVyIG5hbWUaKXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzICE9ICcnCucBCiRzdHJpbmcud2VsbF9rbm93bl9yZWdleC5oZWFkZXJfdmFsdWUSJ3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciB2YWx1ZRqVAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMiB8fCB0aGlzLm1hdGNoZXMoIWhhcyhydWxlcy5zdHJpY3QpIHx8IHJ1bGVzLnN0cmljdCA/J15bXlx1MDAwMC1cdTAwMDhcdTAwMEEtXHUwMDFGXHUwMDdGXSokJyA6J15bXlx1MDAwMFx1MDAwQVx1MDAwRF0qJCcpSAASDgoGc3RyaWN0GBkgASgIEiwKB2V4YW1wbGUYIiADKAlCG8JIGAoWCg5zdHJpbmcuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgwKCndlbGxfa25vd24ivxAKCkJ5dGVzUnVsZXMSZgoFY29uc3QYASABKAxCV8JIVApSCgtieXRlcy5jb25zdBpDdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxJ4CgNsZW4YDSABKARCa8JIaApmCglieXRlcy5sZW4aWXVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEpABCgdtaW5fbGVuGAIgASgEQn/CSHwKegoNYnl0ZXMubWluX2xlbhppdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9sZW5dKSA6ICcnEogBCgdtYXhfbGVuGAMgASgEQnfCSHQKcgoNYnl0ZXMubWF4X2xlbhphdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ3ZhbHVlIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfbGVuXSkgOiAnJxKQAQoHcGF0dGVybhgEIAEoCUJ/wkh8CnoKDWJ5dGVzLnBhdHRlcm4aaSFzdHJpbmcodGhpcykubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBtdXN0IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxKBAQoGcHJlZml4GAUgASgMQnHCSG4KbAoMYnl0ZXMucHJlZml4GlwhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ/CgZzdWZmaXgYBiABKAxCb8JIbApqCgxieXRlcy5zdWZmaXgaWiF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKDAQoIY29udGFpbnMYByABKAxCccJIbgpsCg5ieXRlcy5jb250YWlucxpaIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gJXgnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpcBCgJpbhgIIAMoDEKKAcJIhgEKgwEKCGJ5dGVzLmluGndkeW4ocnVsZXMpWydpbiddLnNpemUoKSA+IDAgJiYgISh0aGlzIGluIGR5bihydWxlcylbJ2luJ10pID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtkeW4ocnVsZXMpWydpbiddXSkgOiAnJxJ2CgZub3RfaW4YCSADKAxCZsJIYwphCgxieXRlcy5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLrAQoCaXAYCiABKAhC3AHCSNgBCnQKCGJ5dGVzLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5AEKBGlwdjQYCyABKAhC0wHCSM8BCmUKCmJ5dGVzLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS5QEKBGlwdjYYDCABKAhC1AHCSNABCmYKCmJ5dGVzLmlwdjYSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biKvAwoJRW51bVJ1bGVzEmgKBWNvbnN0GAEgASgFQlnCSFYKVAoKZW51bS5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxIUCgxkZWZpbmVkX29ubHkYAiABKAgSdAoCaW4YAyADKAVCaMJIZQpjCgdlbnVtLmluGlghKHRoaXMgaW4gZHluKHJ1bGVzKVsnaW4nXSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2R5bihydWxlcylbJ2luJ11dKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIoEECg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSLQoFaXRlbXMYBCABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50cyoJCOgHEICAgIACIpYDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxIsCgRrZXlzGAQgASgLMh4uYnVmLnZhbGlkYXRlLkZpZWxkQ29uc3RyYWludHMSLgoGdmFsdWVzGAUgASgLMh4uYnVmLnZhbGlkYXRlLkZpZWxkQ29uc3RyYWludHMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAki9RYKDUR1cmF0aW9uUnVsZXMShwEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQl3CSFoKWAoOZHVyYXRpb24uY29uc3QaRnRoaXMgIT0gcnVsZXMuY29uc3QgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtydWxlcy5jb25zdF0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESkwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQmzCSGkKZwoLZHVyYXRpb24uaW4aWCEodGhpcyBpbiBkeW4ocnVsZXMpWydpbiddKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZHluKHJ1bGVzKVsnaW4nXV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiL4FwoOVGltZXN0YW1wUnVsZXMSiQEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJewkhbClkKD3RpbWVzdGFtcC5jb25zdBpGdGhpcyAhPSBydWxlcy5jb25zdCA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW3J1bGVzLmNvbnN0XSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKlAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIVCg1jb25zdHJhaW50X2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCLpAgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSDwoFaW5kZXgYBiABKARIABISCghib29sX2tleRgHIAEoCEgAEhEKB2ludF9rZXkYCCABKANIABISCgh1aW50X2tleRgJIAEoBEgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqhwEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIZChVJR05PUkVfSUZfVU5QT1BVTEFURUQQARIbChdJR05PUkVfSUZfREVGQVVMVF9WQUxVRRACEhEKDUlHTk9SRV9BTFdBWVMQAyoaSUdOT1JFX0VNUFRZSUdOT1JFX0RFRkFVTFQqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlwKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMiAuYnVmLnZhbGlkYXRlLk1lc3NhZ2VDb25zdHJhaW50c1IHbWVzc2FnZTpUCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMh4uYnVmLnZhbGlkYXRlLk9uZW9mQ29uc3RyYWludHNSBW9uZW9mOlQKBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyHi5idWYudmFsaWRhdGUuRmllbGRDb25zdHJhaW50c1IFZmllbGQ6YwoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMiMuYnVmLnZhbGlkYXRlLlByZWRlZmluZWRDb25zdHJhaW50c1IKcHJlZGVmaW5lZEJuChJidWlsZC5idWYudmFsaWRhdGVCDVZhbGlkYXRlUHJvdG9QAVpHYnVmLmJ1aWxkL2dlbi9nby9idWZidWlsZC9wcm90b3ZhbGlkYXRlL3Byb3RvY29sYnVmZmVycy9nby9idWYvdmFsaWRhdGU\", [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp]);\n\n/**\n * `Constraint` represents a validation rule written in the Common Expression\n * Language (CEL) syntax. Each Constraint includes a unique identifier, an\n * optional error message, and the CEL expression to evaluate. For more\n * information on CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).\n *\n * ```proto\n * message Foo {\n * option (buf.validate.message).cel = {\n * id: \"foo.bar\"\n * message: \"bar must be greater than 0\"\n * expression: \"this.bar > 0\"\n * };\n * int32 bar = 1;\n * }\n * ```\n *\n * @generated from message buf.validate.Constraint\n */\nexport type Constraint = Message<\"buf.validate.Constraint\"> & {\n /**\n * `id` is a string that serves as a machine-readable name for this Constraint.\n * It should be unique within its scope, which could be either a message or a field.\n *\n * @generated from field: optional string id = 1;\n */\n id: string;\n\n /**\n * `message` is an optional field that provides a human-readable error message\n * for this Constraint when the CEL expression evaluates to false. If a\n * non-empty message is provided, any strings resulting from the CEL\n * expression evaluation are ignored.\n *\n * @generated from field: optional string message = 2;\n */\n message: string;\n\n /**\n * `expression` is the actual CEL expression that will be evaluated for\n * validation. This string must resolve to either a boolean or a string\n * value. If the expression evaluates to false or a non-empty string, the\n * validation is considered failed, and the message is rejected.\n *\n * @generated from field: optional string expression = 3;\n */\n expression: string;\n};\n\n/**\n * `Constraint` represents a validation rule written in the Common Expression\n * Language (CEL) syntax. Each Constraint includes a unique identifier, an\n * optional error message, and the CEL expression to evaluate. For more\n * information on CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).\n *\n * ```proto\n * message Foo {\n * option (buf.validate.message).cel = {\n * id: \"foo.bar\"\n * message: \"bar must be greater than 0\"\n * expression: \"this.bar > 0\"\n * };\n * int32 bar = 1;\n * }\n * ```\n *\n * @generated from message buf.validate.Constraint\n */\nexport type ConstraintJson = {\n /**\n * `id` is a string that serves as a machine-readable name for this Constraint.\n * It should be unique within its scope, which could be either a message or a field.\n *\n * @generated from field: optional string id = 1;\n */\n id?: string;\n\n /**\n * `message` is an optional field that provides a human-readable error message\n * for this Constraint when the CEL expression evaluates to false. If a\n * non-empty message is provided, any strings resulting from the CEL\n * expression evaluation are ignored.\n *\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * `expression` is the actual CEL expression that will be evaluated for\n * validation. This string must resolve to either a boolean or a string\n * value. If the expression evaluates to false or a non-empty string, the\n * validation is considered failed, and the message is rejected.\n *\n * @generated from field: optional string expression = 3;\n */\n expression?: string;\n};\n\n/**\n * Describes the message buf.validate.Constraint.\n * Use `create(ConstraintSchema)` to create a new message.\n */\nexport const ConstraintSchema: GenMessage<Constraint, ConstraintJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 0);\n\n/**\n * MessageConstraints represents validation rules that are applied to the entire message.\n * It includes disabling options and a list of Constraint messages representing Common Expression Language (CEL) validation rules.\n *\n * @generated from message buf.validate.MessageConstraints\n */\nexport type MessageConstraints = Message<\"buf.validate.MessageConstraints\"> & {\n /**\n * `disabled` is a boolean flag that, when set to true, nullifies any validation rules for this message.\n * This includes any fields within the message that would otherwise support validation.\n *\n * ```proto\n * message MyMessage {\n * // validation will be bypassed for this message\n * option (buf.validate.message).disabled = true;\n * }\n * ```\n *\n * @generated from field: optional bool disabled = 1;\n */\n disabled: boolean;\n\n /**\n * `cel` is a repeated field of type Constraint. Each Constraint specifies a validation rule to be applied to this message.\n * These constraints are written in Common Expression Language (CEL) syntax. For more information on\n * CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).\n *\n *\n * ```proto\n * message MyMessage {\n * // The field `foo` must be greater than 42.\n * option (buf.validate.message).cel = {\n * id: \"my_message.value\",\n * message: \"value must be greater than 42\",\n * expression: \"this.foo > 42\",\n * };\n * optional int32 foo = 1;\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Constraint cel = 3;\n */\n cel: Constraint[];\n};\n\n/**\n * MessageConstraints represents validation rules that are applied to the entire message.\n * It includes disabling options and a list of Constraint messages representing Common Expression Language (CEL) validation rules.\n *\n * @generated from message buf.validate.MessageConstraints\n */\nexport type MessageConstraintsJson = {\n /**\n * `disabled` is a boolean flag that, when set to true, nullifies any validation rules for this message.\n * This includes any fields within the message that would otherwise support validation.\n *\n * ```proto\n * message MyMessage {\n * // validation will be bypassed for this message\n * option (buf.validate.message).disabled = true;\n * }\n * ```\n *\n * @generated from field: optional bool disabled = 1;\n */\n disabled?: boolean;\n\n /**\n * `cel` is a repeated field of type Constraint. Each Constraint specifies a validation rule to be applied to this message.\n * These constraints are written in Common Expression Language (CEL) syntax. For more information on\n * CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).\n *\n *\n * ```proto\n * message MyMessage {\n * // The field `foo` must be greater than 42.\n * option (buf.validate.message).cel = {\n * id: \"my_message.value\",\n * message: \"value must be greater than 42\",\n * expression: \"this.foo > 42\",\n * };\n * optional int32 foo = 1;\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Constraint cel = 3;\n */\n cel?: ConstraintJson[];\n};\n\n/**\n * Describes the message buf.validate.MessageConstraints.\n * Use `create(MessageConstraintsSchema)` to create a new message.\n */\nexport const MessageConstraintsSchema: GenMessage<MessageConstraints, MessageConstraintsJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 1);\n\n/**\n * The `OneofConstraints` message type enables you to manage constraints for\n * oneof fields in your protobuf messages.\n *\n * @generated from message buf.validate.OneofConstraints\n */\nexport type OneofConstraints = Message<\"buf.validate.OneofConstraints\"> & {\n /**\n * If `required` is true, exactly one field of the oneof must be present. A\n * validation error is returned if no fields in the oneof are present. The\n * field itself may still be a default value; further constraints\n * should be placed on the fields themselves to ensure they are valid values,\n * such as `min_len` or `gt`.\n *\n * ```proto\n * message MyMessage {\n * oneof value {\n * // Either `a` or `b` must be set. If `a` is set, it must also be\n * // non-empty; whereas if `b` is set, it can still be an empty string.\n * option (buf.validate.oneof).required = true;\n * string a = 1 [(buf.validate.field).string.min_len = 1];\n * string b = 2;\n * }\n * }\n * ```\n *\n * @generated from field: optional bool required = 1;\n */\n required: boolean;\n};\n\n/**\n * The `OneofConstraints` message type enables you to manage constraints for\n * oneof fields in your protobuf messages.\n *\n * @generated from message buf.validate.OneofConstraints\n */\nexport type OneofConstraintsJson = {\n /**\n * If `required` is true, exactly one field of the oneof must be present. A\n * validation error is returned if no fields in the oneof are present. The\n * field itself may still be a default value; further constraints\n * should be placed on the fields themselves to ensure they are valid values,\n * such as `min_len` or `gt`.\n *\n * ```proto\n * message MyMessage {\n * oneof value {\n * // Either `a` or `b` must be set. If `a` is set, it must also be\n * // non-empty; whereas if `b` is set, it can still be an empty string.\n * option (buf.validate.oneof).required = true;\n * string a = 1 [(buf.validate.field).string.min_len = 1];\n * string b = 2;\n * }\n * }\n * ```\n *\n * @generated from field: optional bool required = 1;\n */\n required?: boolean;\n};\n\n/**\n * Describes the message buf.validate.OneofConstraints.\n * Use `create(OneofConstraintsSchema)` to create a new message.\n */\nexport const OneofConstraintsSchema: GenMessage<OneofConstraints, OneofConstraintsJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 2);\n\n/**\n * FieldConstraints encapsulates the rules for each type of field. Depending on\n * the field, the correct set should be used to ensure proper validations.\n *\n * @generated from message buf.validate.FieldConstraints\n */\nexport type FieldConstraints = Message<\"buf.validate.FieldConstraints\"> & {\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information on\n * CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.field).cel = {\n * id: \"my_message.value\",\n * message: \"value must be greater than 42\",\n * expression: \"this > 42\",\n * }];\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Constraint cel = 23;\n */\n cel: Constraint[];\n\n /**\n * If `required` is true, the field must be populated. A populated field can be\n * described as \"serialized in the wire format,\" which includes:\n *\n * - the following \"nullable\" fields must be explicitly set to be considered populated:\n * - singular message fields (whose fields may be unpopulated/default values)\n * - member fields of a oneof (may be their default value)\n * - proto3 optional fields (may be their default value)\n * - proto2 scalar fields (both optional and required)\n * - proto3 scalar fields must be non-zero to be considered populated\n * - repeated and map fields must be non-empty to be considered populated\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be set to a non-null value.\n * optional MyOtherMessage value = 1 [(buf.validate.field).required = true];\n * }\n * ```\n *\n * @generated from field: optional bool required = 25;\n */\n required: boolean;\n\n /**\n * Skip validation on the field if its value matches the specified criteria.\n * See Ignore enum for details.\n *\n * ```proto\n * message UpdateRequest {\n * // The uri rule only applies if the field is populated and not an empty\n * // string.\n * optional string url = 1 [\n * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE,\n * (buf.validate.field).string.uri = true,\n * ];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.Ignore ignore = 27;\n */\n ignore: Ignore;\n\n /**\n * @generated from oneof buf.validate.FieldConstraints.type\n */\n type: {\n /**\n * Scalar Field Types\n *\n * @generated from field: buf.validate.FloatRules float = 1;\n */\n value: FloatRules;\n case: \"float\";\n } | {\n /**\n * @generated from field: buf.validate.DoubleRules double = 2;\n */\n value: DoubleRules;\n case: \"double\";\n } | {\n /**\n * @generated from field: buf.validate.Int32Rules int32 = 3;\n */\n value: Int32Rules;\n case: \"int32\";\n } | {\n /**\n * @generated from field: buf.validate.Int64Rules int64 = 4;\n */\n value: Int64Rules;\n case: \"int64\";\n } | {\n /**\n * @generated from field: buf.validate.UInt32Rules uint32 = 5;\n */\n value: UInt32Rules;\n case: \"uint32\";\n } | {\n /**\n * @generated from field: buf.validate.UInt64Rules uint64 = 6;\n */\n value: UInt64Rules;\n case: \"uint64\";\n } | {\n /**\n * @generated from field: buf.validate.SInt32Rules sint32 = 7;\n */\n value: SInt32Rules;\n case: \"sint32\";\n } | {\n /**\n * @generated from field: buf.validate.SInt64Rules sint64 = 8;\n */\n value: SInt64Rules;\n case: \"sint64\";\n } | {\n /**\n * @generated from field: buf.validate.Fixed32Rules fixed32 = 9;\n */\n value: Fixed32Rules;\n case: \"fixed32\";\n } | {\n /**\n * @generated from field: buf.validate.Fixed64Rules fixed64 = 10;\n */\n value: Fixed64Rules;\n case: \"fixed64\";\n } | {\n /**\n * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11;\n */\n value: SFixed32Rules;\n case: \"sfixed32\";\n } | {\n /**\n * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12;\n */\n value: SFixed64Rules;\n case: \"sfixed64\";\n } | {\n /**\n * @generated from field: buf.validate.BoolRules bool = 13;\n */\n value: BoolRules;\n case: \"bool\";\n } | {\n /**\n * @generated from field: buf.validate.StringRules string = 14;\n */\n value: StringRules;\n case: \"string\";\n } | {\n /**\n * @generated from field: buf.validate.BytesRules bytes = 15;\n */\n value: BytesRules;\n case: \"bytes\";\n } | {\n /**\n * Complex Field Types\n *\n * @generated from field: buf.validate.EnumRules enum = 16;\n */\n value: EnumRules;\n case: \"enum\";\n } | {\n /**\n * @generated from field: buf.validate.RepeatedRules repeated = 18;\n */\n value: RepeatedRules;\n case: \"repeated\";\n } | {\n /**\n * @generated from field: buf.validate.MapRules map = 19;\n */\n value: MapRules;\n case: \"map\";\n } | {\n /**\n * Well-Known Field Types\n *\n * @generated from field: buf.validate.AnyRules any = 20;\n */\n value: AnyRules;\n case: \"any\";\n } | {\n /**\n * @generated from field: buf.validate.DurationRules duration = 21;\n */\n value: DurationRules;\n case: \"duration\";\n } | {\n /**\n * @generated from field: buf.validate.TimestampRules timestamp = 22;\n */\n value: TimestampRules;\n case: \"timestamp\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * FieldConstraints encapsulates the rules for each type of field. Depending on\n * the field, the correct set should be used to ensure proper validations.\n *\n * @generated from message buf.validate.FieldConstraints\n */\nexport type FieldConstraintsJson = {\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information on\n * CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.field).cel = {\n * id: \"my_message.value\",\n * message: \"value must be greater than 42\",\n * expression: \"this > 42\",\n * }];\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Constraint cel = 23;\n */\n cel?: ConstraintJson[];\n\n /**\n * If `required` is true, the field must be populated. A populated field can be\n * described as \"serialized in the wire format,\" which includes:\n *\n * - the following \"nullable\" fields must be explicitly set to be considered populated:\n * - singular message fields (whose fields may be unpopulated/default values)\n * - member fields of a oneof (may be their default value)\n * - proto3 optional fields (may be their default value)\n * - proto2 scalar fields (both optional and required)\n * - proto3 scalar fields must be non-zero to be considered populated\n * - repeated and map fields must be non-empty to be considered populated\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be set to a non-null value.\n * optional MyOtherMessage value = 1 [(buf.validate.field).required = true];\n * }\n * ```\n *\n * @generated from field: optional bool required = 25;\n */\n required?: boolean;\n\n /**\n * Skip validation on the field if its value matches the specified criteria.\n * See Ignore enum for details.\n *\n * ```proto\n * message UpdateRequest {\n * // The uri rule only applies if the field is populated and not an empty\n * // string.\n * optional string url = 1 [\n * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE,\n * (buf.validate.field).string.uri = true,\n * ];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.Ignore ignore = 27;\n */\n ignore?: IgnoreJson;\n\n /**\n * Scalar Field Types\n *\n * @generated from field: buf.validate.FloatRules float = 1;\n */\n float?: FloatRulesJson;\n\n /**\n * @generated from field: buf.validate.DoubleRules double = 2;\n */\n double?: DoubleRulesJson;\n\n /**\n * @generated from field: buf.validate.Int32Rules int32 = 3;\n */\n int32?: Int32RulesJson;\n\n /**\n * @generated from field: buf.validate.Int64Rules int64 = 4;\n */\n int64?: Int64RulesJson;\n\n /**\n * @generated from field: buf.validate.UInt32Rules uint32 = 5;\n */\n uint32?: UInt32RulesJson;\n\n /**\n * @generated from field: buf.validate.UInt64Rules uint64 = 6;\n */\n uint64?: UInt64RulesJson;\n\n /**\n * @generated from field: buf.validate.SInt32Rules sint32 = 7;\n */\n sint32?: SInt32RulesJson;\n\n /**\n * @generated from field: buf.validate.SInt64Rules sint64 = 8;\n */\n sint64?: SInt64RulesJson;\n\n /**\n * @generated from field: buf.validate.Fixed32Rules fixed32 = 9;\n */\n fixed32?: Fixed32RulesJson;\n\n /**\n * @generated from field: buf.validate.Fixed64Rules fixed64 = 10;\n */\n fixed64?: Fixed64RulesJson;\n\n /**\n * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11;\n */\n sfixed32?: SFixed32RulesJson;\n\n /**\n * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12;\n */\n sfixed64?: SFixed64RulesJson;\n\n /**\n * @generated from field: buf.validate.BoolRules bool = 13;\n */\n bool?: BoolRulesJson;\n\n /**\n * @generated from field: buf.validate.StringRules string = 14;\n */\n string?: StringRulesJson;\n\n /**\n * @generated from field: buf.validate.BytesRules bytes = 15;\n */\n bytes?: BytesRulesJson;\n\n /**\n * Complex Field Types\n *\n * @generated from field: buf.validate.EnumRules enum = 16;\n */\n enum?: EnumRulesJson;\n\n /**\n * @generated from field: buf.validate.RepeatedRules repeated = 18;\n */\n repeated?: RepeatedRulesJson;\n\n /**\n * @generated from field: buf.validate.MapRules map = 19;\n */\n map?: MapRulesJson;\n\n /**\n * Well-Known Field Types\n *\n * @generated from field: buf.validate.AnyRules any = 20;\n */\n any?: AnyRulesJson;\n\n /**\n * @generated from field: buf.validate.DurationRules duration = 21;\n */\n duration?: DurationRulesJson;\n\n /**\n * @generated from field: buf.validate.TimestampRules timestamp = 22;\n */\n timestamp?: TimestampRulesJson;\n};\n\n/**\n * Describes the message buf.validate.FieldConstraints.\n * Use `create(FieldConstraintsSchema)` to create a new message.\n */\nexport const FieldConstraintsSchema: GenMessage<FieldConstraints, FieldConstraintsJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 3);\n\n/**\n * PredefinedConstraints are custom constraints that can be re-used with\n * multiple fields.\n *\n * @generated from message buf.validate.PredefinedConstraints\n */\nexport type PredefinedConstraints = Message<\"buf.validate.PredefinedConstraints\"> & {\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information on\n * CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.predefined).cel = {\n * id: \"my_message.value\",\n * message: \"value must be greater than 42\",\n * expression: \"this > 42\",\n * }];\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Constraint cel = 1;\n */\n cel: Constraint[];\n};\n\n/**\n * PredefinedConstraints are custom constraints that can be re-used with\n * multiple fields.\n *\n * @generated from message buf.validate.PredefinedConstraints\n */\nexport type PredefinedConstraintsJson = {\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information on\n * CEL, [see our documentation](https://github.com/bufbuild/protovalidate/blob/main/docs/cel.md).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.predefined).cel = {\n * id: \"my_message.value\",\n * message: \"value must be greater than 42\",\n * expression: \"this > 42\",\n * }];\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.Constraint cel = 1;\n */\n cel?: ConstraintJson[];\n};\n\n/**\n * Describes the message buf.validate.PredefinedConstraints.\n * Use `create(PredefinedConstraintsSchema)` to create a new message.\n */\nexport const PredefinedConstraintsSchema: GenMessage<PredefinedConstraints, PredefinedConstraintsJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 4);\n\n/**\n * FloatRules describes the constraints applied to `float` values. These\n * rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type.\n *\n * @generated from message buf.validate.FloatRules\n */\nexport type FloatRules = Message<\"buf.validate.FloatRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must equal 42.0\n * float value = 1 [(buf.validate.field).float.const = 42.0];\n * }\n * ```\n *\n * @generated from field: optional float const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.FloatRules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be less than 10.0\n * float value = 1 [(buf.validate.field).float.lt = 10.0];\n * }\n * ```\n *\n * @generated from field: float lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be less than or equal to 10.0\n * float value = 1 [(buf.validate.field).float.lte = 10.0];\n * }\n * ```\n *\n * @generated from field: float lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.FloatRules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be greater than 5.0 [float.gt]\n * float value = 1 [(buf.validate.field).float.gt = 5.0];\n *\n * // value must be greater than 5 and less than 10.0 [float.gt_lt]\n * float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }];\n *\n * // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive]\n * float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: float gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be greater than or equal to 5.0 [float.gte]\n * float value = 1 [(buf.validate.field).float.gte = 5.0];\n *\n * // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt]\n * float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }];\n *\n * // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive]\n * float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: float gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be in list [1.0, 2.0, 3.0]\n * repeated float value = 1 (buf.validate.field).float = { in: [1.0, 2.0, 3.0] };\n * }\n * ```\n *\n * @generated from field: repeated float in = 6;\n */\n in: number[];\n\n /**\n * `in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must not be in list [1.0, 2.0, 3.0]\n * repeated float value = 1 (buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] };\n * }\n * ```\n *\n * @generated from field: repeated float not_in = 7;\n */\n notIn: number[];\n\n /**\n * `finite` requires the field value to be finite. If the field value is\n * infinite or NaN, an error message is generated.\n *\n * @generated from field: optional bool finite = 8;\n */\n finite: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFloat {\n * float value = 1 [\n * (buf.validate.field).float.example = 1.0,\n * (buf.validate.field).float.example = \"Infinity\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated float example = 9;\n */\n example: number[];\n};\n\n/**\n * FloatRules describes the constraints applied to `float` values. These\n * rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type.\n *\n * @generated from message buf.validate.FloatRules\n */\nexport type FloatRulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must equal 42.0\n * float value = 1 [(buf.validate.field).float.const = 42.0];\n * }\n * ```\n *\n * @generated from field: optional float const = 1;\n */\n const?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be less than 10.0\n * float value = 1 [(buf.validate.field).float.lt = 10.0];\n * }\n * ```\n *\n * @generated from field: float lt = 2;\n */\n lt?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be less than or equal to 10.0\n * float value = 1 [(buf.validate.field).float.lte = 10.0];\n * }\n * ```\n *\n * @generated from field: float lte = 3;\n */\n lte?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be greater than 5.0 [float.gt]\n * float value = 1 [(buf.validate.field).float.gt = 5.0];\n *\n * // value must be greater than 5 and less than 10.0 [float.gt_lt]\n * float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }];\n *\n * // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive]\n * float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: float gt = 4;\n */\n gt?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be greater than or equal to 5.0 [float.gte]\n * float value = 1 [(buf.validate.field).float.gte = 5.0];\n *\n * // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt]\n * float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }];\n *\n * // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive]\n * float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: float gte = 5;\n */\n gte?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must be in list [1.0, 2.0, 3.0]\n * repeated float value = 1 (buf.validate.field).float = { in: [1.0, 2.0, 3.0] };\n * }\n * ```\n *\n * @generated from field: repeated float in = 6;\n */\n in?: (number | \"NaN\" | \"Infinity\" | \"-Infinity\")[];\n\n /**\n * `in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFloat {\n * // value must not be in list [1.0, 2.0, 3.0]\n * repeated float value = 1 (buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] };\n * }\n * ```\n *\n * @generated from field: repeated float not_in = 7;\n */\n notIn?: (number | \"NaN\" | \"Infinity\" | \"-Infinity\")[];\n\n /**\n * `finite` requires the field value to be finite. If the field value is\n * infinite or NaN, an error message is generated.\n *\n * @generated from field: optional bool finite = 8;\n */\n finite?: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFloat {\n * float value = 1 [\n * (buf.validate.field).float.example = 1.0,\n * (buf.validate.field).float.example = \"Infinity\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated float example = 9;\n */\n example?: (number | \"NaN\" | \"Infinity\" | \"-Infinity\")[];\n};\n\n/**\n * Describes the message buf.validate.FloatRules.\n * Use `create(FloatRulesSchema)` to create a new message.\n */\nexport const FloatRulesSchema: GenMessage<FloatRules, FloatRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 5);\n\n/**\n * DoubleRules describes the constraints applied to `double` values. These\n * rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type.\n *\n * @generated from message buf.validate.DoubleRules\n */\nexport type DoubleRules = Message<\"buf.validate.DoubleRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must equal 42.0\n * double value = 1 [(buf.validate.field).double.const = 42.0];\n * }\n * ```\n *\n * @generated from field: optional double const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.DoubleRules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be less than 10.0\n * double value = 1 [(buf.validate.field).double.lt = 10.0];\n * }\n * ```\n *\n * @generated from field: double lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified value\n * (field <= value). If the field value is greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be less than or equal to 10.0\n * double value = 1 [(buf.validate.field).double.lte = 10.0];\n * }\n * ```\n *\n * @generated from field: double lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.DoubleRules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`,\n * the range is reversed, and the field value must be outside the specified\n * range. If the field value doesn't meet the required conditions, an error\n * message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be greater than 5.0 [double.gt]\n * double value = 1 [(buf.validate.field).double.gt = 5.0];\n *\n * // value must be greater than 5 and less than 10.0 [double.gt_lt]\n * double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }];\n *\n * // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive]\n * double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: double gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be greater than or equal to 5.0 [double.gte]\n * double value = 1 [(buf.validate.field).double.gte = 5.0];\n *\n * // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt]\n * double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }];\n *\n * // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive]\n * double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: double gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be in list [1.0, 2.0, 3.0]\n * repeated double value = 1 (buf.validate.field).double = { in: [1.0, 2.0, 3.0] };\n * }\n * ```\n *\n * @generated from field: repeated double in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must not be in list [1.0, 2.0, 3.0]\n * repeated double value = 1 (buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] };\n * }\n * ```\n *\n * @generated from field: repeated double not_in = 7;\n */\n notIn: number[];\n\n /**\n * `finite` requires the field value to be finite. If the field value is\n * infinite or NaN, an error message is generated.\n *\n * @generated from field: optional bool finite = 8;\n */\n finite: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyDouble {\n * double value = 1 [\n * (buf.validate.field).double.example = 1.0,\n * (buf.validate.field).double.example = \"Infinity\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated double example = 9;\n */\n example: number[];\n};\n\n/**\n * DoubleRules describes the constraints applied to `double` values. These\n * rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type.\n *\n * @generated from message buf.validate.DoubleRules\n */\nexport type DoubleRulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must equal 42.0\n * double value = 1 [(buf.validate.field).double.const = 42.0];\n * }\n * ```\n *\n * @generated from field: optional double const = 1;\n */\n const?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be less than 10.0\n * double value = 1 [(buf.validate.field).double.lt = 10.0];\n * }\n * ```\n *\n * @generated from field: double lt = 2;\n */\n lt?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `lte` requires the field value to be less than or equal to the specified value\n * (field <= value). If the field value is greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be less than or equal to 10.0\n * double value = 1 [(buf.validate.field).double.lte = 10.0];\n * }\n * ```\n *\n * @generated from field: double lte = 3;\n */\n lte?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`,\n * the range is reversed, and the field value must be outside the specified\n * range. If the field value doesn't meet the required conditions, an error\n * message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be greater than 5.0 [double.gt]\n * double value = 1 [(buf.validate.field).double.gt = 5.0];\n *\n * // value must be greater than 5 and less than 10.0 [double.gt_lt]\n * double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }];\n *\n * // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive]\n * double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: double gt = 4;\n */\n gt?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be greater than or equal to 5.0 [double.gte]\n * double value = 1 [(buf.validate.field).double.gte = 5.0];\n *\n * // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt]\n * double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }];\n *\n * // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive]\n * double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }];\n * }\n * ```\n *\n * @generated from field: double gte = 5;\n */\n gte?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyDouble {\n * // value must be in list [1.0, 2.0, 3.0]\n * repeated double value = 1 (buf.validate.field).double = { in: [1.0, 2.0, 3.0] };\n * }\n * ```\n *\n * @generated from field: repeated double in = 6;\n */\n in?: (number | \"NaN\" | \"Infinity\" | \"-Infinity\")[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyDouble {\n * // value must not be in list [1.0, 2.0, 3.0]\n * repeated double value = 1 (buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] };\n * }\n * ```\n *\n * @generated from field: repeated double not_in = 7;\n */\n notIn?: (number | \"NaN\" | \"Infinity\" | \"-Infinity\")[];\n\n /**\n * `finite` requires the field value to be finite. If the field value is\n * infinite or NaN, an error message is generated.\n *\n * @generated from field: optional bool finite = 8;\n */\n finite?: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyDouble {\n * double value = 1 [\n * (buf.validate.field).double.example = 1.0,\n * (buf.validate.field).double.example = \"Infinity\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated double example = 9;\n */\n example?: (number | \"NaN\" | \"Infinity\" | \"-Infinity\")[];\n};\n\n/**\n * Describes the message buf.validate.DoubleRules.\n * Use `create(DoubleRulesSchema)` to create a new message.\n */\nexport const DoubleRulesSchema: GenMessage<DoubleRules, DoubleRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 6);\n\n/**\n * Int32Rules describes the constraints applied to `int32` values. These\n * rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type.\n *\n * @generated from message buf.validate.Int32Rules\n */\nexport type Int32Rules = Message<\"buf.validate.Int32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must equal 42\n * int32 value = 1 [(buf.validate.field).int32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional int32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.Int32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be less than 10\n * int32 value = 1 [(buf.validate.field).int32.lt = 10];\n * }\n * ```\n *\n * @generated from field: int32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be less than or equal to 10\n * int32 value = 1 [(buf.validate.field).int32.lte = 10];\n * }\n * ```\n *\n * @generated from field: int32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.Int32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be greater than 5 [int32.gt]\n * int32 value = 1 [(buf.validate.field).int32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [int32.gt_lt]\n * int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive]\n * int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified value\n * (exclusive). If the value of `gte` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be greater than or equal to 5 [int32.gte]\n * int32 value = 1 [(buf.validate.field).int32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [int32.gte_lt]\n * int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive]\n * int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be in list [1, 2, 3]\n * repeated int32 value = 1 (buf.validate.field).int32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated int32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must not be in list [1, 2, 3]\n * repeated int32 value = 1 (buf.validate.field).int32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated int32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyInt32 {\n * int32 value = 1 [\n * (buf.validate.field).int32.example = 1,\n * (buf.validate.field).int32.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated int32 example = 8;\n */\n example: number[];\n};\n\n/**\n * Int32Rules describes the constraints applied to `int32` values. These\n * rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type.\n *\n * @generated from message buf.validate.Int32Rules\n */\nexport type Int32RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must equal 42\n * int32 value = 1 [(buf.validate.field).int32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional int32 const = 1;\n */\n const?: number;\n\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be less than 10\n * int32 value = 1 [(buf.validate.field).int32.lt = 10];\n * }\n * ```\n *\n * @generated from field: int32 lt = 2;\n */\n lt?: number;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be less than or equal to 10\n * int32 value = 1 [(buf.validate.field).int32.lte = 10];\n * }\n * ```\n *\n * @generated from field: int32 lte = 3;\n */\n lte?: number;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be greater than 5 [int32.gt]\n * int32 value = 1 [(buf.validate.field).int32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [int32.gt_lt]\n * int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive]\n * int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int32 gt = 4;\n */\n gt?: number;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified value\n * (exclusive). If the value of `gte` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be greater than or equal to 5 [int32.gte]\n * int32 value = 1 [(buf.validate.field).int32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [int32.gte_lt]\n * int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive]\n * int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int32 gte = 5;\n */\n gte?: number;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must be in list [1, 2, 3]\n * repeated int32 value = 1 (buf.validate.field).int32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated int32 in = 6;\n */\n in?: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyInt32 {\n * // value must not be in list [1, 2, 3]\n * repeated int32 value = 1 (buf.validate.field).int32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated int32 not_in = 7;\n */\n notIn?: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyInt32 {\n * int32 value = 1 [\n * (buf.validate.field).int32.example = 1,\n * (buf.validate.field).int32.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated int32 example = 8;\n */\n example?: number[];\n};\n\n/**\n * Describes the message buf.validate.Int32Rules.\n * Use `create(Int32RulesSchema)` to create a new message.\n */\nexport const Int32RulesSchema: GenMessage<Int32Rules, Int32RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 7);\n\n/**\n * Int64Rules describes the constraints applied to `int64` values. These\n * rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type.\n *\n * @generated from message buf.validate.Int64Rules\n */\nexport type Int64Rules = Message<\"buf.validate.Int64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must equal 42\n * int64 value = 1 [(buf.validate.field).int64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional int64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.Int64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be less than 10\n * int64 value = 1 [(buf.validate.field).int64.lt = 10];\n * }\n * ```\n *\n * @generated from field: int64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be less than or equal to 10\n * int64 value = 1 [(buf.validate.field).int64.lte = 10];\n * }\n * ```\n *\n * @generated from field: int64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.Int64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be greater than 5 [int64.gt]\n * int64 value = 1 [(buf.validate.field).int64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [int64.gt_lt]\n * int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive]\n * int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be greater than or equal to 5 [int64.gte]\n * int64 value = 1 [(buf.validate.field).int64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [int64.gte_lt]\n * int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive]\n * int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be in list [1, 2, 3]\n * repeated int64 value = 1 (buf.validate.field).int64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated int64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must not be in list [1, 2, 3]\n * repeated int64 value = 1 (buf.validate.field).int64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated int64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyInt64 {\n * int64 value = 1 [\n * (buf.validate.field).int64.example = 1,\n * (buf.validate.field).int64.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated int64 example = 9;\n */\n example: bigint[];\n};\n\n/**\n * Int64Rules describes the constraints applied to `int64` values. These\n * rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type.\n *\n * @generated from message buf.validate.Int64Rules\n */\nexport type Int64RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must equal 42\n * int64 value = 1 [(buf.validate.field).int64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional int64 const = 1;\n */\n const?: string;\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be less than 10\n * int64 value = 1 [(buf.validate.field).int64.lt = 10];\n * }\n * ```\n *\n * @generated from field: int64 lt = 2;\n */\n lt?: string;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be less than or equal to 10\n * int64 value = 1 [(buf.validate.field).int64.lte = 10];\n * }\n * ```\n *\n * @generated from field: int64 lte = 3;\n */\n lte?: string;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be greater than 5 [int64.gt]\n * int64 value = 1 [(buf.validate.field).int64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [int64.gt_lt]\n * int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive]\n * int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int64 gt = 4;\n */\n gt?: string;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be greater than or equal to 5 [int64.gte]\n * int64 value = 1 [(buf.validate.field).int64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [int64.gte_lt]\n * int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive]\n * int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: int64 gte = 5;\n */\n gte?: string;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must be in list [1, 2, 3]\n * repeated int64 value = 1 (buf.validate.field).int64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated int64 in = 6;\n */\n in?: string[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyInt64 {\n * // value must not be in list [1, 2, 3]\n * repeated int64 value = 1 (buf.validate.field).int64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated int64 not_in = 7;\n */\n notIn?: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyInt64 {\n * int64 value = 1 [\n * (buf.validate.field).int64.example = 1,\n * (buf.validate.field).int64.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated int64 example = 9;\n */\n example?: string[];\n};\n\n/**\n * Describes the message buf.validate.Int64Rules.\n * Use `create(Int64RulesSchema)` to create a new message.\n */\nexport const Int64RulesSchema: GenMessage<Int64Rules, Int64RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 8);\n\n/**\n * UInt32Rules describes the constraints applied to `uint32` values. These\n * rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type.\n *\n * @generated from message buf.validate.UInt32Rules\n */\nexport type UInt32Rules = Message<\"buf.validate.UInt32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must equal 42\n * uint32 value = 1 [(buf.validate.field).uint32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional uint32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.UInt32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be less than 10\n * uint32 value = 1 [(buf.validate.field).uint32.lt = 10];\n * }\n * ```\n *\n * @generated from field: uint32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be less than or equal to 10\n * uint32 value = 1 [(buf.validate.field).uint32.lte = 10];\n * }\n * ```\n *\n * @generated from field: uint32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.UInt32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be greater than 5 [uint32.gt]\n * uint32 value = 1 [(buf.validate.field).uint32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [uint32.gt_lt]\n * uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive]\n * uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be greater than or equal to 5 [uint32.gte]\n * uint32 value = 1 [(buf.validate.field).uint32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt]\n * uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive]\n * uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be in list [1, 2, 3]\n * repeated uint32 value = 1 (buf.validate.field).uint32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated uint32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must not be in list [1, 2, 3]\n * repeated uint32 value = 1 (buf.validate.field).uint32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated uint32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyUInt32 {\n * uint32 value = 1 [\n * (buf.validate.field).uint32.example = 1,\n * (buf.validate.field).uint32.example = 10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated uint32 example = 8;\n */\n example: number[];\n};\n\n/**\n * UInt32Rules describes the constraints applied to `uint32` values. These\n * rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type.\n *\n * @generated from message buf.validate.UInt32Rules\n */\nexport type UInt32RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must equal 42\n * uint32 value = 1 [(buf.validate.field).uint32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional uint32 const = 1;\n */\n const?: number;\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be less than 10\n * uint32 value = 1 [(buf.validate.field).uint32.lt = 10];\n * }\n * ```\n *\n * @generated from field: uint32 lt = 2;\n */\n lt?: number;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be less than or equal to 10\n * uint32 value = 1 [(buf.validate.field).uint32.lte = 10];\n * }\n * ```\n *\n * @generated from field: uint32 lte = 3;\n */\n lte?: number;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be greater than 5 [uint32.gt]\n * uint32 value = 1 [(buf.validate.field).uint32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [uint32.gt_lt]\n * uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive]\n * uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint32 gt = 4;\n */\n gt?: number;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be greater than or equal to 5 [uint32.gte]\n * uint32 value = 1 [(buf.validate.field).uint32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt]\n * uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive]\n * uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint32 gte = 5;\n */\n gte?: number;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must be in list [1, 2, 3]\n * repeated uint32 value = 1 (buf.validate.field).uint32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated uint32 in = 6;\n */\n in?: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyUInt32 {\n * // value must not be in list [1, 2, 3]\n * repeated uint32 value = 1 (buf.validate.field).uint32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated uint32 not_in = 7;\n */\n notIn?: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyUInt32 {\n * uint32 value = 1 [\n * (buf.validate.field).uint32.example = 1,\n * (buf.validate.field).uint32.example = 10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated uint32 example = 8;\n */\n example?: number[];\n};\n\n/**\n * Describes the message buf.validate.UInt32Rules.\n * Use `create(UInt32RulesSchema)` to create a new message.\n */\nexport const UInt32RulesSchema: GenMessage<UInt32Rules, UInt32RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 9);\n\n/**\n * UInt64Rules describes the constraints applied to `uint64` values. These\n * rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type.\n *\n * @generated from message buf.validate.UInt64Rules\n */\nexport type UInt64Rules = Message<\"buf.validate.UInt64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must equal 42\n * uint64 value = 1 [(buf.validate.field).uint64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional uint64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.UInt64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be less than 10\n * uint64 value = 1 [(buf.validate.field).uint64.lt = 10];\n * }\n * ```\n *\n * @generated from field: uint64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be less than or equal to 10\n * uint64 value = 1 [(buf.validate.field).uint64.lte = 10];\n * }\n * ```\n *\n * @generated from field: uint64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.UInt64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be greater than 5 [uint64.gt]\n * uint64 value = 1 [(buf.validate.field).uint64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [uint64.gt_lt]\n * uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive]\n * uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be greater than or equal to 5 [uint64.gte]\n * uint64 value = 1 [(buf.validate.field).uint64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt]\n * uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive]\n * uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be in list [1, 2, 3]\n * repeated uint64 value = 1 (buf.validate.field).uint64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated uint64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must not be in list [1, 2, 3]\n * repeated uint64 value = 1 (buf.validate.field).uint64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated uint64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyUInt64 {\n * uint64 value = 1 [\n * (buf.validate.field).uint64.example = 1,\n * (buf.validate.field).uint64.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated uint64 example = 8;\n */\n example: bigint[];\n};\n\n/**\n * UInt64Rules describes the constraints applied to `uint64` values. These\n * rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type.\n *\n * @generated from message buf.validate.UInt64Rules\n */\nexport type UInt64RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must equal 42\n * uint64 value = 1 [(buf.validate.field).uint64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional uint64 const = 1;\n */\n const?: string;\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be less than 10\n * uint64 value = 1 [(buf.validate.field).uint64.lt = 10];\n * }\n * ```\n *\n * @generated from field: uint64 lt = 2;\n */\n lt?: string;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be less than or equal to 10\n * uint64 value = 1 [(buf.validate.field).uint64.lte = 10];\n * }\n * ```\n *\n * @generated from field: uint64 lte = 3;\n */\n lte?: string;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be greater than 5 [uint64.gt]\n * uint64 value = 1 [(buf.validate.field).uint64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [uint64.gt_lt]\n * uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive]\n * uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint64 gt = 4;\n */\n gt?: string;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be greater than or equal to 5 [uint64.gte]\n * uint64 value = 1 [(buf.validate.field).uint64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt]\n * uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive]\n * uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: uint64 gte = 5;\n */\n gte?: string;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must be in list [1, 2, 3]\n * repeated uint64 value = 1 (buf.validate.field).uint64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated uint64 in = 6;\n */\n in?: string[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyUInt64 {\n * // value must not be in list [1, 2, 3]\n * repeated uint64 value = 1 (buf.validate.field).uint64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated uint64 not_in = 7;\n */\n notIn?: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyUInt64 {\n * uint64 value = 1 [\n * (buf.validate.field).uint64.example = 1,\n * (buf.validate.field).uint64.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated uint64 example = 8;\n */\n example?: string[];\n};\n\n/**\n * Describes the message buf.validate.UInt64Rules.\n * Use `create(UInt64RulesSchema)` to create a new message.\n */\nexport const UInt64RulesSchema: GenMessage<UInt64Rules, UInt64RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 10);\n\n/**\n * SInt32Rules describes the constraints applied to `sint32` values.\n *\n * @generated from message buf.validate.SInt32Rules\n */\nexport type SInt32Rules = Message<\"buf.validate.SInt32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must equal 42\n * sint32 value = 1 [(buf.validate.field).sint32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sint32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.SInt32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be less than 10\n * sint32 value = 1 [(buf.validate.field).sint32.lt = 10];\n * }\n * ```\n *\n * @generated from field: sint32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be less than or equal to 10\n * sint32 value = 1 [(buf.validate.field).sint32.lte = 10];\n * }\n * ```\n *\n * @generated from field: sint32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.SInt32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be greater than 5 [sint32.gt]\n * sint32 value = 1 [(buf.validate.field).sint32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [sint32.gt_lt]\n * sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive]\n * sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be greater than or equal to 5 [sint32.gte]\n * sint32 value = 1 [(buf.validate.field).sint32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt]\n * sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive]\n * sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be in list [1, 2, 3]\n * repeated sint32 value = 1 (buf.validate.field).sint32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sint32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must not be in list [1, 2, 3]\n * repeated sint32 value = 1 (buf.validate.field).sint32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sint32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySInt32 {\n * sint32 value = 1 [\n * (buf.validate.field).sint32.example = 1,\n * (buf.validate.field).sint32.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sint32 example = 8;\n */\n example: number[];\n};\n\n/**\n * SInt32Rules describes the constraints applied to `sint32` values.\n *\n * @generated from message buf.validate.SInt32Rules\n */\nexport type SInt32RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must equal 42\n * sint32 value = 1 [(buf.validate.field).sint32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sint32 const = 1;\n */\n const?: number;\n\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be less than 10\n * sint32 value = 1 [(buf.validate.field).sint32.lt = 10];\n * }\n * ```\n *\n * @generated from field: sint32 lt = 2;\n */\n lt?: number;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be less than or equal to 10\n * sint32 value = 1 [(buf.validate.field).sint32.lte = 10];\n * }\n * ```\n *\n * @generated from field: sint32 lte = 3;\n */\n lte?: number;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be greater than 5 [sint32.gt]\n * sint32 value = 1 [(buf.validate.field).sint32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [sint32.gt_lt]\n * sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive]\n * sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint32 gt = 4;\n */\n gt?: number;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be greater than or equal to 5 [sint32.gte]\n * sint32 value = 1 [(buf.validate.field).sint32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt]\n * sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive]\n * sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint32 gte = 5;\n */\n gte?: number;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must be in list [1, 2, 3]\n * repeated sint32 value = 1 (buf.validate.field).sint32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sint32 in = 6;\n */\n in?: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySInt32 {\n * // value must not be in list [1, 2, 3]\n * repeated sint32 value = 1 (buf.validate.field).sint32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sint32 not_in = 7;\n */\n notIn?: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySInt32 {\n * sint32 value = 1 [\n * (buf.validate.field).sint32.example = 1,\n * (buf.validate.field).sint32.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sint32 example = 8;\n */\n example?: number[];\n};\n\n/**\n * Describes the message buf.validate.SInt32Rules.\n * Use `create(SInt32RulesSchema)` to create a new message.\n */\nexport const SInt32RulesSchema: GenMessage<SInt32Rules, SInt32RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 11);\n\n/**\n * SInt64Rules describes the constraints applied to `sint64` values.\n *\n * @generated from message buf.validate.SInt64Rules\n */\nexport type SInt64Rules = Message<\"buf.validate.SInt64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must equal 42\n * sint64 value = 1 [(buf.validate.field).sint64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sint64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.SInt64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be less than 10\n * sint64 value = 1 [(buf.validate.field).sint64.lt = 10];\n * }\n * ```\n *\n * @generated from field: sint64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be less than or equal to 10\n * sint64 value = 1 [(buf.validate.field).sint64.lte = 10];\n * }\n * ```\n *\n * @generated from field: sint64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.SInt64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be greater than 5 [sint64.gt]\n * sint64 value = 1 [(buf.validate.field).sint64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [sint64.gt_lt]\n * sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive]\n * sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be greater than or equal to 5 [sint64.gte]\n * sint64 value = 1 [(buf.validate.field).sint64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt]\n * sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive]\n * sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be in list [1, 2, 3]\n * repeated sint64 value = 1 (buf.validate.field).sint64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sint64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must not be in list [1, 2, 3]\n * repeated sint64 value = 1 (buf.validate.field).sint64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sint64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySInt64 {\n * sint64 value = 1 [\n * (buf.validate.field).sint64.example = 1,\n * (buf.validate.field).sint64.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sint64 example = 8;\n */\n example: bigint[];\n};\n\n/**\n * SInt64Rules describes the constraints applied to `sint64` values.\n *\n * @generated from message buf.validate.SInt64Rules\n */\nexport type SInt64RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must equal 42\n * sint64 value = 1 [(buf.validate.field).sint64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sint64 const = 1;\n */\n const?: string;\n\n /**\n * `lt` requires the field value to be less than the specified value (field\n * < value). If the field value is equal to or greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be less than 10\n * sint64 value = 1 [(buf.validate.field).sint64.lt = 10];\n * }\n * ```\n *\n * @generated from field: sint64 lt = 2;\n */\n lt?: string;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be less than or equal to 10\n * sint64 value = 1 [(buf.validate.field).sint64.lte = 10];\n * }\n * ```\n *\n * @generated from field: sint64 lte = 3;\n */\n lte?: string;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be greater than 5 [sint64.gt]\n * sint64 value = 1 [(buf.validate.field).sint64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [sint64.gt_lt]\n * sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive]\n * sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint64 gt = 4;\n */\n gt?: string;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be greater than or equal to 5 [sint64.gte]\n * sint64 value = 1 [(buf.validate.field).sint64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt]\n * sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive]\n * sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sint64 gte = 5;\n */\n gte?: string;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must be in list [1, 2, 3]\n * repeated sint64 value = 1 (buf.validate.field).sint64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sint64 in = 6;\n */\n in?: string[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySInt64 {\n * // value must not be in list [1, 2, 3]\n * repeated sint64 value = 1 (buf.validate.field).sint64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sint64 not_in = 7;\n */\n notIn?: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySInt64 {\n * sint64 value = 1 [\n * (buf.validate.field).sint64.example = 1,\n * (buf.validate.field).sint64.example = -10\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sint64 example = 8;\n */\n example?: string[];\n};\n\n/**\n * Describes the message buf.validate.SInt64Rules.\n * Use `create(SInt64RulesSchema)` to create a new message.\n */\nexport const SInt64RulesSchema: GenMessage<SInt64Rules, SInt64RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 12);\n\n/**\n * Fixed32Rules describes the constraints applied to `fixed32` values.\n *\n * @generated from message buf.validate.Fixed32Rules\n */\nexport type Fixed32Rules = Message<\"buf.validate.Fixed32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must equal 42\n * fixed32 value = 1 [(buf.validate.field).fixed32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional fixed32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.Fixed32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be less than 10\n * fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10];\n * }\n * ```\n *\n * @generated from field: fixed32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be less than or equal to 10\n * fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10];\n * }\n * ```\n *\n * @generated from field: fixed32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.Fixed32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be greater than 5 [fixed32.gt]\n * fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [fixed32.gt_lt]\n * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive]\n * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be greater than or equal to 5 [fixed32.gte]\n * fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt]\n * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive]\n * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be in list [1, 2, 3]\n * repeated fixed32 value = 1 (buf.validate.field).fixed32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated fixed32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must not be in list [1, 2, 3]\n * repeated fixed32 value = 1 (buf.validate.field).fixed32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated fixed32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFixed32 {\n * fixed32 value = 1 [\n * (buf.validate.field).fixed32.example = 1,\n * (buf.validate.field).fixed32.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated fixed32 example = 8;\n */\n example: number[];\n};\n\n/**\n * Fixed32Rules describes the constraints applied to `fixed32` values.\n *\n * @generated from message buf.validate.Fixed32Rules\n */\nexport type Fixed32RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must equal 42\n * fixed32 value = 1 [(buf.validate.field).fixed32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional fixed32 const = 1;\n */\n const?: number;\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be less than 10\n * fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10];\n * }\n * ```\n *\n * @generated from field: fixed32 lt = 2;\n */\n lt?: number;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be less than or equal to 10\n * fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10];\n * }\n * ```\n *\n * @generated from field: fixed32 lte = 3;\n */\n lte?: number;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be greater than 5 [fixed32.gt]\n * fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [fixed32.gt_lt]\n * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive]\n * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed32 gt = 4;\n */\n gt?: number;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be greater than or equal to 5 [fixed32.gte]\n * fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt]\n * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive]\n * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed32 gte = 5;\n */\n gte?: number;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message\n * is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must be in list [1, 2, 3]\n * repeated fixed32 value = 1 (buf.validate.field).fixed32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated fixed32 in = 6;\n */\n in?: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFixed32 {\n * // value must not be in list [1, 2, 3]\n * repeated fixed32 value = 1 (buf.validate.field).fixed32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated fixed32 not_in = 7;\n */\n notIn?: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFixed32 {\n * fixed32 value = 1 [\n * (buf.validate.field).fixed32.example = 1,\n * (buf.validate.field).fixed32.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated fixed32 example = 8;\n */\n example?: number[];\n};\n\n/**\n * Describes the message buf.validate.Fixed32Rules.\n * Use `create(Fixed32RulesSchema)` to create a new message.\n */\nexport const Fixed32RulesSchema: GenMessage<Fixed32Rules, Fixed32RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 13);\n\n/**\n * Fixed64Rules describes the constraints applied to `fixed64` values.\n *\n * @generated from message buf.validate.Fixed64Rules\n */\nexport type Fixed64Rules = Message<\"buf.validate.Fixed64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must equal 42\n * fixed64 value = 1 [(buf.validate.field).fixed64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional fixed64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.Fixed64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be less than 10\n * fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10];\n * }\n * ```\n *\n * @generated from field: fixed64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be less than or equal to 10\n * fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10];\n * }\n * ```\n *\n * @generated from field: fixed64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.Fixed64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be greater than 5 [fixed64.gt]\n * fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [fixed64.gt_lt]\n * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive]\n * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be greater than or equal to 5 [fixed64.gte]\n * fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt]\n * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive]\n * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be in list [1, 2, 3]\n * repeated fixed64 value = 1 (buf.validate.field).fixed64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated fixed64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must not be in list [1, 2, 3]\n * repeated fixed64 value = 1 (buf.validate.field).fixed64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated fixed64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFixed64 {\n * fixed64 value = 1 [\n * (buf.validate.field).fixed64.example = 1,\n * (buf.validate.field).fixed64.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 example = 8;\n */\n example: bigint[];\n};\n\n/**\n * Fixed64Rules describes the constraints applied to `fixed64` values.\n *\n * @generated from message buf.validate.Fixed64Rules\n */\nexport type Fixed64RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must equal 42\n * fixed64 value = 1 [(buf.validate.field).fixed64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional fixed64 const = 1;\n */\n const?: string;\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be less than 10\n * fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10];\n * }\n * ```\n *\n * @generated from field: fixed64 lt = 2;\n */\n lt?: string;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be less than or equal to 10\n * fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10];\n * }\n * ```\n *\n * @generated from field: fixed64 lte = 3;\n */\n lte?: string;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be greater than 5 [fixed64.gt]\n * fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [fixed64.gt_lt]\n * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive]\n * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed64 gt = 4;\n */\n gt?: string;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be greater than or equal to 5 [fixed64.gte]\n * fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt]\n * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive]\n * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: fixed64 gte = 5;\n */\n gte?: string;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must be in list [1, 2, 3]\n * repeated fixed64 value = 1 (buf.validate.field).fixed64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated fixed64 in = 6;\n */\n in?: string[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyFixed64 {\n * // value must not be in list [1, 2, 3]\n * repeated fixed64 value = 1 (buf.validate.field).fixed64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated fixed64 not_in = 7;\n */\n notIn?: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyFixed64 {\n * fixed64 value = 1 [\n * (buf.validate.field).fixed64.example = 1,\n * (buf.validate.field).fixed64.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 example = 8;\n */\n example?: string[];\n};\n\n/**\n * Describes the message buf.validate.Fixed64Rules.\n * Use `create(Fixed64RulesSchema)` to create a new message.\n */\nexport const Fixed64RulesSchema: GenMessage<Fixed64Rules, Fixed64RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 14);\n\n/**\n * SFixed32Rules describes the constraints applied to `fixed32` values.\n *\n * @generated from message buf.validate.SFixed32Rules\n */\nexport type SFixed32Rules = Message<\"buf.validate.SFixed32Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must equal 42\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sfixed32 const = 1;\n */\n const: number;\n\n /**\n * @generated from oneof buf.validate.SFixed32Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be less than 10\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10];\n * }\n * ```\n *\n * @generated from field: sfixed32 lt = 2;\n */\n value: number;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be less than or equal to 10\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10];\n * }\n * ```\n *\n * @generated from field: sfixed32 lte = 3;\n */\n value: number;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.SFixed32Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be greater than 5 [sfixed32.gt]\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [sfixed32.gt_lt]\n * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive]\n * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed32 gt = 4;\n */\n value: number;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be greater than or equal to 5 [sfixed32.gte]\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt]\n * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive]\n * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed32 gte = 5;\n */\n value: number;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be in list [1, 2, 3]\n * repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 in = 6;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must not be in list [1, 2, 3]\n * repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 not_in = 7;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySFixed32 {\n * sfixed32 value = 1 [\n * (buf.validate.field).sfixed32.example = 1,\n * (buf.validate.field).sfixed32.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 example = 8;\n */\n example: number[];\n};\n\n/**\n * SFixed32Rules describes the constraints applied to `fixed32` values.\n *\n * @generated from message buf.validate.SFixed32Rules\n */\nexport type SFixed32RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must equal 42\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sfixed32 const = 1;\n */\n const?: number;\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be less than 10\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10];\n * }\n * ```\n *\n * @generated from field: sfixed32 lt = 2;\n */\n lt?: number;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be less than or equal to 10\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10];\n * }\n * ```\n *\n * @generated from field: sfixed32 lte = 3;\n */\n lte?: number;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be greater than 5 [sfixed32.gt]\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [sfixed32.gt_lt]\n * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive]\n * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed32 gt = 4;\n */\n gt?: number;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be greater than or equal to 5 [sfixed32.gte]\n * sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt]\n * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive]\n * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed32 gte = 5;\n */\n gte?: number;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must be in list [1, 2, 3]\n * repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 in = 6;\n */\n in?: number[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySFixed32 {\n * // value must not be in list [1, 2, 3]\n * repeated sfixed32 value = 1 (buf.validate.field).sfixed32 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 not_in = 7;\n */\n notIn?: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySFixed32 {\n * sfixed32 value = 1 [\n * (buf.validate.field).sfixed32.example = 1,\n * (buf.validate.field).sfixed32.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sfixed32 example = 8;\n */\n example?: number[];\n};\n\n/**\n * Describes the message buf.validate.SFixed32Rules.\n * Use `create(SFixed32RulesSchema)` to create a new message.\n */\nexport const SFixed32RulesSchema: GenMessage<SFixed32Rules, SFixed32RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 15);\n\n/**\n * SFixed64Rules describes the constraints applied to `fixed64` values.\n *\n * @generated from message buf.validate.SFixed64Rules\n */\nexport type SFixed64Rules = Message<\"buf.validate.SFixed64Rules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must equal 42\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sfixed64 const = 1;\n */\n const: bigint;\n\n /**\n * @generated from oneof buf.validate.SFixed64Rules.less_than\n */\n lessThan: {\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be less than 10\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10];\n * }\n * ```\n *\n * @generated from field: sfixed64 lt = 2;\n */\n value: bigint;\n case: \"lt\";\n } | {\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be less than or equal to 10\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10];\n * }\n * ```\n *\n * @generated from field: sfixed64 lte = 3;\n */\n value: bigint;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.SFixed64Rules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be greater than 5 [sfixed64.gt]\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [sfixed64.gt_lt]\n * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive]\n * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed64 gt = 4;\n */\n value: bigint;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be greater than or equal to 5 [sfixed64.gte]\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt]\n * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive]\n * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed64 gte = 5;\n */\n value: bigint;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be in list [1, 2, 3]\n * repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 in = 6;\n */\n in: bigint[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must not be in list [1, 2, 3]\n * repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 not_in = 7;\n */\n notIn: bigint[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySFixed64 {\n * sfixed64 value = 1 [\n * (buf.validate.field).sfixed64.example = 1,\n * (buf.validate.field).sfixed64.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 example = 8;\n */\n example: bigint[];\n};\n\n/**\n * SFixed64Rules describes the constraints applied to `fixed64` values.\n *\n * @generated from message buf.validate.SFixed64Rules\n */\nexport type SFixed64RulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must equal 42\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42];\n * }\n * ```\n *\n * @generated from field: optional sfixed64 const = 1;\n */\n const?: string;\n\n /**\n * `lt` requires the field value to be less than the specified value (field <\n * value). If the field value is equal to or greater than the specified value,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be less than 10\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10];\n * }\n * ```\n *\n * @generated from field: sfixed64 lt = 2;\n */\n lt?: string;\n\n /**\n * `lte` requires the field value to be less than or equal to the specified\n * value (field <= value). If the field value is greater than the specified\n * value, an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be less than or equal to 10\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10];\n * }\n * ```\n *\n * @generated from field: sfixed64 lte = 3;\n */\n lte?: string;\n\n /**\n * `gt` requires the field value to be greater than the specified value\n * (exclusive). If the value of `gt` is larger than a specified `lt` or\n * `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be greater than 5 [sfixed64.gt]\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5];\n *\n * // value must be greater than 5 and less than 10 [sfixed64.gt_lt]\n * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }];\n *\n * // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive]\n * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed64 gt = 4;\n */\n gt?: string;\n\n /**\n * `gte` requires the field value to be greater than or equal to the specified\n * value (exclusive). If the value of `gte` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be greater than or equal to 5 [sfixed64.gte]\n * sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5];\n *\n * // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt]\n * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }];\n *\n * // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive]\n * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }];\n * }\n * ```\n *\n * @generated from field: sfixed64 gte = 5;\n */\n gte?: string;\n\n /**\n * `in` requires the field value to be equal to one of the specified values.\n * If the field value isn't one of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must be in list [1, 2, 3]\n * repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 in = 6;\n */\n in?: string[];\n\n /**\n * `not_in` requires the field value to not be equal to any of the specified\n * values. If the field value is one of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MySFixed64 {\n * // value must not be in list [1, 2, 3]\n * repeated sfixed64 value = 1 (buf.validate.field).sfixed64 = { not_in: [1, 2, 3] };\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 not_in = 7;\n */\n notIn?: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MySFixed64 {\n * sfixed64 value = 1 [\n * (buf.validate.field).sfixed64.example = 1,\n * (buf.validate.field).sfixed64.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 example = 8;\n */\n example?: string[];\n};\n\n/**\n * Describes the message buf.validate.SFixed64Rules.\n * Use `create(SFixed64RulesSchema)` to create a new message.\n */\nexport const SFixed64RulesSchema: GenMessage<SFixed64Rules, SFixed64RulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 16);\n\n/**\n * BoolRules describes the constraints applied to `bool` values. These rules\n * may also be applied to the `google.protobuf.BoolValue` Well-Known-Type.\n *\n * @generated from message buf.validate.BoolRules\n */\nexport type BoolRules = Message<\"buf.validate.BoolRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified boolean value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBool {\n * // value must equal true\n * bool value = 1 [(buf.validate.field).bool.const = true];\n * }\n * ```\n *\n * @generated from field: optional bool const = 1;\n */\n const: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyBool {\n * bool value = 1 [\n * (buf.validate.field).bool.example = 1,\n * (buf.validate.field).bool.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated bool example = 2;\n */\n example: boolean[];\n};\n\n/**\n * BoolRules describes the constraints applied to `bool` values. These rules\n * may also be applied to the `google.protobuf.BoolValue` Well-Known-Type.\n *\n * @generated from message buf.validate.BoolRules\n */\nexport type BoolRulesJson = {\n /**\n * `const` requires the field value to exactly match the specified boolean value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBool {\n * // value must equal true\n * bool value = 1 [(buf.validate.field).bool.const = true];\n * }\n * ```\n *\n * @generated from field: optional bool const = 1;\n */\n const?: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyBool {\n * bool value = 1 [\n * (buf.validate.field).bool.example = 1,\n * (buf.validate.field).bool.example = 2\n * ];\n * }\n * ```\n *\n * @generated from field: repeated bool example = 2;\n */\n example?: boolean[];\n};\n\n/**\n * Describes the message buf.validate.BoolRules.\n * Use `create(BoolRulesSchema)` to create a new message.\n */\nexport const BoolRulesSchema: GenMessage<BoolRules, BoolRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 17);\n\n/**\n * StringRules describes the constraints applied to `string` values These\n * rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type.\n *\n * @generated from message buf.validate.StringRules\n */\nexport type StringRules = Message<\"buf.validate.StringRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyString {\n * // value must equal `hello`\n * string value = 1 [(buf.validate.field).string.const = \"hello\"];\n * }\n * ```\n *\n * @generated from field: optional string const = 1;\n */\n const: string;\n\n /**\n * `len` dictates that the field value must have the specified\n * number of characters (Unicode code points), which may differ from the number\n * of bytes in the string. If the field value does not meet the specified\n * length, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be 5 characters\n * string value = 1 [(buf.validate.field).string.len = 5];\n * }\n * ```\n *\n * @generated from field: optional uint64 len = 19;\n */\n len: bigint;\n\n /**\n * `min_len` specifies that the field value must have at least the specified\n * number of characters (Unicode code points), which may differ from the number\n * of bytes in the string. If the field value contains fewer characters, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at least 3 characters\n * string value = 1 [(buf.validate.field).string.min_len = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_len = 2;\n */\n minLen: bigint;\n\n /**\n * `max_len` specifies that the field value must have no more than the specified\n * number of characters (Unicode code points), which may differ from the\n * number of bytes in the string. If the field value contains more characters,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at most 10 characters\n * string value = 1 [(buf.validate.field).string.max_len = 10];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_len = 3;\n */\n maxLen: bigint;\n\n /**\n * `len_bytes` dictates that the field value must have the specified number of\n * bytes. If the field value does not match the specified length in bytes,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be 6 bytes\n * string value = 1 [(buf.validate.field).string.len_bytes = 6];\n * }\n * ```\n *\n * @generated from field: optional uint64 len_bytes = 20;\n */\n lenBytes: bigint;\n\n /**\n * `min_bytes` specifies that the field value must have at least the specified\n * number of bytes. If the field value contains fewer bytes, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at least 4 bytes\n * string value = 1 [(buf.validate.field).string.min_bytes = 4];\n * }\n *\n * ```\n *\n * @generated from field: optional uint64 min_bytes = 4;\n */\n minBytes: bigint;\n\n /**\n * `max_bytes` specifies that the field value must have no more than the\n * specified number of bytes. If the field value contains more bytes, an\n * error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at most 8 bytes\n * string value = 1 [(buf.validate.field).string.max_bytes = 8];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_bytes = 5;\n */\n maxBytes: bigint;\n\n /**\n * `pattern` specifies that the field value must match the specified\n * regular expression (RE2 syntax), with the expression provided without any\n * delimiters. If the field value doesn't match the regular expression, an\n * error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not match regex pattern `^[a-zA-Z]//$`\n * string value = 1 [(buf.validate.field).string.pattern = \"^[a-zA-Z]//$\"];\n * }\n * ```\n *\n * @generated from field: optional string pattern = 6;\n */\n pattern: string;\n\n /**\n * `prefix` specifies that the field value must have the\n * specified substring at the beginning of the string. If the field value\n * doesn't start with the specified prefix, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // value does not have prefix `pre`\n * string value = 1 [(buf.validate.field).string.prefix = \"pre\"];\n * }\n * ```\n *\n * @generated from field: optional string prefix = 7;\n */\n prefix: string;\n\n /**\n * `suffix` specifies that the field value must have the\n * specified substring at the end of the string. If the field value doesn't\n * end with the specified suffix, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not have suffix `post`\n * string value = 1 [(buf.validate.field).string.suffix = \"post\"];\n * }\n * ```\n *\n * @generated from field: optional string suffix = 8;\n */\n suffix: string;\n\n /**\n * `contains` specifies that the field value must have the\n * specified substring anywhere in the string. If the field value doesn't\n * contain the specified substring, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not contain substring `inside`.\n * string value = 1 [(buf.validate.field).string.contains = \"inside\"];\n * }\n * ```\n *\n * @generated from field: optional string contains = 9;\n */\n contains: string;\n\n /**\n * `not_contains` specifies that the field value must not have the\n * specified substring anywhere in the string. If the field value contains\n * the specified substring, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value contains substring `inside`.\n * string value = 1 [(buf.validate.field).string.not_contains = \"inside\"];\n * }\n * ```\n *\n * @generated from field: optional string not_contains = 23;\n */\n notContains: string;\n\n /**\n * `in` specifies that the field value must be equal to one of the specified\n * values. If the field value isn't one of the specified values, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be in list [\"apple\", \"banana\"]\n * repeated string value = 1 [(buf.validate.field).string.in = \"apple\", (buf.validate.field).string.in = \"banana\"];\n * }\n * ```\n *\n * @generated from field: repeated string in = 10;\n */\n in: string[];\n\n /**\n * `not_in` specifies that the field value cannot be equal to any\n * of the specified values. If the field value is one of the specified values,\n * an error message will be generated.\n * ```proto\n * message MyString {\n * // value must not be in list [\"orange\", \"grape\"]\n * repeated string value = 1 [(buf.validate.field).string.not_in = \"orange\", (buf.validate.field).string.not_in = \"grape\"];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 11;\n */\n notIn: string[];\n\n /**\n * `WellKnown` rules provide advanced constraints against common string\n * patterns\n *\n * @generated from oneof buf.validate.StringRules.well_known\n */\n wellKnown: {\n /**\n * `email` specifies that the field value must be a valid email address\n * (addr-spec only) as defined by [RFC 5322](https://tools.ietf.org/html/rfc5322#section-3.4.1).\n * If the field value isn't a valid email address, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid email address\n * string value = 1 [(buf.validate.field).string.email = true];\n * }\n * ```\n *\n * @generated from field: bool email = 12;\n */\n value: boolean;\n case: \"email\";\n } | {\n /**\n * `hostname` specifies that the field value must be a valid\n * hostname as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5). This constraint doesn't support\n * internationalized domain names (IDNs). If the field value isn't a\n * valid hostname, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid hostname\n * string value = 1 [(buf.validate.field).string.hostname = true];\n * }\n * ```\n *\n * @generated from field: bool hostname = 13;\n */\n value: boolean;\n case: \"hostname\";\n } | {\n /**\n * `ip` specifies that the field value must be a valid IP\n * (v4 or v6) address, without surrounding square brackets for IPv6 addresses.\n * If the field value isn't a valid IP address, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IP address\n * string value = 1 [(buf.validate.field).string.ip = true];\n * }\n * ```\n *\n * @generated from field: bool ip = 14;\n */\n value: boolean;\n case: \"ip\";\n } | {\n /**\n * `ipv4` specifies that the field value must be a valid IPv4\n * address. If the field value isn't a valid IPv4 address, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv4 address\n * string value = 1 [(buf.validate.field).string.ipv4 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4 = 15;\n */\n value: boolean;\n case: \"ipv4\";\n } | {\n /**\n * `ipv6` specifies that the field value must be a valid\n * IPv6 address, without surrounding square brackets. If the field value is\n * not a valid IPv6 address, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv6 address\n * string value = 1 [(buf.validate.field).string.ipv6 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6 = 16;\n */\n value: boolean;\n case: \"ipv6\";\n } | {\n /**\n * `uri` specifies that the field value must be a valid,\n * absolute URI as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3). If the field value isn't a valid,\n * absolute URI, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid URI\n * string value = 1 [(buf.validate.field).string.uri = true];\n * }\n * ```\n *\n * @generated from field: bool uri = 17;\n */\n value: boolean;\n case: \"uri\";\n } | {\n /**\n * `uri_ref` specifies that the field value must be a valid URI\n * as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3) and may be either relative or absolute. If the\n * field value isn't a valid URI, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid URI\n * string value = 1 [(buf.validate.field).string.uri_ref = true];\n * }\n * ```\n *\n * @generated from field: bool uri_ref = 18;\n */\n value: boolean;\n case: \"uriRef\";\n } | {\n /**\n * `address` specifies that the field value must be either a valid hostname\n * as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5)\n * (which doesn't support internationalized domain names or IDNs) or a valid\n * IP (v4 or v6). If the field value isn't a valid hostname or IP, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid hostname, or ip address\n * string value = 1 [(buf.validate.field).string.address = true];\n * }\n * ```\n *\n * @generated from field: bool address = 21;\n */\n value: boolean;\n case: \"address\";\n } | {\n /**\n * `uuid` specifies that the field value must be a valid UUID as defined by\n * [RFC 4122](https://tools.ietf.org/html/rfc4122#section-4.1.2). If the\n * field value isn't a valid UUID, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid UUID\n * string value = 1 [(buf.validate.field).string.uuid = true];\n * }\n * ```\n *\n * @generated from field: bool uuid = 22;\n */\n value: boolean;\n case: \"uuid\";\n } | {\n /**\n * `tuuid` (trimmed UUID) specifies that the field value must be a valid UUID as\n * defined by [RFC 4122](https://tools.ietf.org/html/rfc4122#section-4.1.2) with all dashes\n * omitted. If the field value isn't a valid UUID without dashes, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid trimmed UUID\n * string value = 1 [(buf.validate.field).string.tuuid = true];\n * }\n * ```\n *\n * @generated from field: bool tuuid = 33;\n */\n value: boolean;\n case: \"tuuid\";\n } | {\n /**\n * `ip_with_prefixlen` specifies that the field value must be a valid IP (v4 or v6)\n * address with prefix length. If the field value isn't a valid IP with prefix\n * length, an error message will be generated.\n *\n *\n * ```proto\n * message MyString {\n * // value must be a valid IP with prefix length\n * string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ip_with_prefixlen = 26;\n */\n value: boolean;\n case: \"ipWithPrefixlen\";\n } | {\n /**\n * `ipv4_with_prefixlen` specifies that the field value must be a valid\n * IPv4 address with prefix.\n * If the field value isn't a valid IPv4 address with prefix length,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv4 address with prefix length\n * string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4_with_prefixlen = 27;\n */\n value: boolean;\n case: \"ipv4WithPrefixlen\";\n } | {\n /**\n * `ipv6_with_prefixlen` specifies that the field value must be a valid\n * IPv6 address with prefix length.\n * If the field value is not a valid IPv6 address with prefix length,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv6 address prefix length\n * string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6_with_prefixlen = 28;\n */\n value: boolean;\n case: \"ipv6WithPrefixlen\";\n } | {\n /**\n * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) prefix.\n * If the field value isn't a valid IP prefix, an error message will be\n * generated. The prefix must have all zeros for the masked bits of the prefix (e.g.,\n * `127.0.0.0/16`, not `127.0.0.1/16`).\n *\n * ```proto\n * message MyString {\n * // value must be a valid IP prefix\n * string value = 1 [(buf.validate.field).string.ip_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ip_prefix = 29;\n */\n value: boolean;\n case: \"ipPrefix\";\n } | {\n /**\n * `ipv4_prefix` specifies that the field value must be a valid IPv4\n * prefix. If the field value isn't a valid IPv4 prefix, an error message\n * will be generated. The prefix must have all zeros for the masked bits of\n * the prefix (e.g., `127.0.0.0/16`, not `127.0.0.1/16`).\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv4 prefix\n * string value = 1 [(buf.validate.field).string.ipv4_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4_prefix = 30;\n */\n value: boolean;\n case: \"ipv4Prefix\";\n } | {\n /**\n * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix.\n * If the field value is not a valid IPv6 prefix, an error message will be\n * generated. The prefix must have all zeros for the masked bits of the prefix\n * (e.g., `2001:db8::/48`, not `2001:db8::1/48`).\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv6 prefix\n * string value = 1 [(buf.validate.field).string.ipv6_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6_prefix = 31;\n */\n value: boolean;\n case: \"ipv6Prefix\";\n } | {\n /**\n * `host_and_port` specifies the field value must be a valid host and port\n * pair. The host must be a valid hostname or IP address while the port\n * must be in the range of 0-65535, inclusive. IPv6 addresses must be delimited\n * with square brackets (e.g., `[::1]:1234`).\n *\n * @generated from field: bool host_and_port = 32;\n */\n value: boolean;\n case: \"hostAndPort\";\n } | {\n /**\n * `well_known_regex` specifies a common well-known pattern\n * defined as a regex. If the field value doesn't match the well-known\n * regex, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid HTTP header value\n * string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE];\n * }\n * ```\n *\n * #### KnownRegex\n *\n * `well_known_regex` contains some well-known patterns.\n *\n * | Name | Number | Description |\n * |-------------------------------|--------|-------------------------------------------|\n * | KNOWN_REGEX_UNSPECIFIED | 0 | |\n * | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2) |\n * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4) |\n *\n * @generated from field: buf.validate.KnownRegex well_known_regex = 24;\n */\n value: KnownRegex;\n case: \"wellKnownRegex\";\n } | { case: undefined; value?: undefined };\n\n /**\n * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to\n * enable strict header validation. By default, this is true, and HTTP header\n * validations are [RFC-compliant](https://tools.ietf.org/html/rfc7230#section-3). Setting to false will enable looser\n * validations that only disallow `\\r\\n\\0` characters, which can be used to\n * bypass header matching rules.\n *\n * ```proto\n * message MyString {\n * // The field `value` must have be a valid HTTP headers, but not enforced with strict rules.\n * string value = 1 [(buf.validate.field).string.strict = false];\n * }\n * ```\n *\n * @generated from field: optional bool strict = 25;\n */\n strict: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyString {\n * string value = 1 [\n * (buf.validate.field).string.example = \"hello\",\n * (buf.validate.field).string.example = \"world\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated string example = 34;\n */\n example: string[];\n};\n\n/**\n * StringRules describes the constraints applied to `string` values These\n * rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type.\n *\n * @generated from message buf.validate.StringRules\n */\nexport type StringRulesJson = {\n /**\n * `const` requires the field value to exactly match the specified value. If\n * the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyString {\n * // value must equal `hello`\n * string value = 1 [(buf.validate.field).string.const = \"hello\"];\n * }\n * ```\n *\n * @generated from field: optional string const = 1;\n */\n const?: string;\n\n /**\n * `len` dictates that the field value must have the specified\n * number of characters (Unicode code points), which may differ from the number\n * of bytes in the string. If the field value does not meet the specified\n * length, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be 5 characters\n * string value = 1 [(buf.validate.field).string.len = 5];\n * }\n * ```\n *\n * @generated from field: optional uint64 len = 19;\n */\n len?: string;\n\n /**\n * `min_len` specifies that the field value must have at least the specified\n * number of characters (Unicode code points), which may differ from the number\n * of bytes in the string. If the field value contains fewer characters, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at least 3 characters\n * string value = 1 [(buf.validate.field).string.min_len = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_len = 2;\n */\n minLen?: string;\n\n /**\n * `max_len` specifies that the field value must have no more than the specified\n * number of characters (Unicode code points), which may differ from the\n * number of bytes in the string. If the field value contains more characters,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at most 10 characters\n * string value = 1 [(buf.validate.field).string.max_len = 10];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_len = 3;\n */\n maxLen?: string;\n\n /**\n * `len_bytes` dictates that the field value must have the specified number of\n * bytes. If the field value does not match the specified length in bytes,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be 6 bytes\n * string value = 1 [(buf.validate.field).string.len_bytes = 6];\n * }\n * ```\n *\n * @generated from field: optional uint64 len_bytes = 20;\n */\n lenBytes?: string;\n\n /**\n * `min_bytes` specifies that the field value must have at least the specified\n * number of bytes. If the field value contains fewer bytes, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at least 4 bytes\n * string value = 1 [(buf.validate.field).string.min_bytes = 4];\n * }\n *\n * ```\n *\n * @generated from field: optional uint64 min_bytes = 4;\n */\n minBytes?: string;\n\n /**\n * `max_bytes` specifies that the field value must have no more than the\n * specified number of bytes. If the field value contains more bytes, an\n * error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value length must be at most 8 bytes\n * string value = 1 [(buf.validate.field).string.max_bytes = 8];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_bytes = 5;\n */\n maxBytes?: string;\n\n /**\n * `pattern` specifies that the field value must match the specified\n * regular expression (RE2 syntax), with the expression provided without any\n * delimiters. If the field value doesn't match the regular expression, an\n * error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not match regex pattern `^[a-zA-Z]//$`\n * string value = 1 [(buf.validate.field).string.pattern = \"^[a-zA-Z]//$\"];\n * }\n * ```\n *\n * @generated from field: optional string pattern = 6;\n */\n pattern?: string;\n\n /**\n * `prefix` specifies that the field value must have the\n * specified substring at the beginning of the string. If the field value\n * doesn't start with the specified prefix, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // value does not have prefix `pre`\n * string value = 1 [(buf.validate.field).string.prefix = \"pre\"];\n * }\n * ```\n *\n * @generated from field: optional string prefix = 7;\n */\n prefix?: string;\n\n /**\n * `suffix` specifies that the field value must have the\n * specified substring at the end of the string. If the field value doesn't\n * end with the specified suffix, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not have suffix `post`\n * string value = 1 [(buf.validate.field).string.suffix = \"post\"];\n * }\n * ```\n *\n * @generated from field: optional string suffix = 8;\n */\n suffix?: string;\n\n /**\n * `contains` specifies that the field value must have the\n * specified substring anywhere in the string. If the field value doesn't\n * contain the specified substring, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value does not contain substring `inside`.\n * string value = 1 [(buf.validate.field).string.contains = \"inside\"];\n * }\n * ```\n *\n * @generated from field: optional string contains = 9;\n */\n contains?: string;\n\n /**\n * `not_contains` specifies that the field value must not have the\n * specified substring anywhere in the string. If the field value contains\n * the specified substring, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value contains substring `inside`.\n * string value = 1 [(buf.validate.field).string.not_contains = \"inside\"];\n * }\n * ```\n *\n * @generated from field: optional string not_contains = 23;\n */\n notContains?: string;\n\n /**\n * `in` specifies that the field value must be equal to one of the specified\n * values. If the field value isn't one of the specified values, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be in list [\"apple\", \"banana\"]\n * repeated string value = 1 [(buf.validate.field).string.in = \"apple\", (buf.validate.field).string.in = \"banana\"];\n * }\n * ```\n *\n * @generated from field: repeated string in = 10;\n */\n in?: string[];\n\n /**\n * `not_in` specifies that the field value cannot be equal to any\n * of the specified values. If the field value is one of the specified values,\n * an error message will be generated.\n * ```proto\n * message MyString {\n * // value must not be in list [\"orange\", \"grape\"]\n * repeated string value = 1 [(buf.validate.field).string.not_in = \"orange\", (buf.validate.field).string.not_in = \"grape\"];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 11;\n */\n notIn?: string[];\n\n /**\n * `email` specifies that the field value must be a valid email address\n * (addr-spec only) as defined by [RFC 5322](https://tools.ietf.org/html/rfc5322#section-3.4.1).\n * If the field value isn't a valid email address, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid email address\n * string value = 1 [(buf.validate.field).string.email = true];\n * }\n * ```\n *\n * @generated from field: bool email = 12;\n */\n email?: boolean;\n\n /**\n * `hostname` specifies that the field value must be a valid\n * hostname as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5). This constraint doesn't support\n * internationalized domain names (IDNs). If the field value isn't a\n * valid hostname, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid hostname\n * string value = 1 [(buf.validate.field).string.hostname = true];\n * }\n * ```\n *\n * @generated from field: bool hostname = 13;\n */\n hostname?: boolean;\n\n /**\n * `ip` specifies that the field value must be a valid IP\n * (v4 or v6) address, without surrounding square brackets for IPv6 addresses.\n * If the field value isn't a valid IP address, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IP address\n * string value = 1 [(buf.validate.field).string.ip = true];\n * }\n * ```\n *\n * @generated from field: bool ip = 14;\n */\n ip?: boolean;\n\n /**\n * `ipv4` specifies that the field value must be a valid IPv4\n * address. If the field value isn't a valid IPv4 address, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv4 address\n * string value = 1 [(buf.validate.field).string.ipv4 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4 = 15;\n */\n ipv4?: boolean;\n\n /**\n * `ipv6` specifies that the field value must be a valid\n * IPv6 address, without surrounding square brackets. If the field value is\n * not a valid IPv6 address, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv6 address\n * string value = 1 [(buf.validate.field).string.ipv6 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6 = 16;\n */\n ipv6?: boolean;\n\n /**\n * `uri` specifies that the field value must be a valid,\n * absolute URI as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3). If the field value isn't a valid,\n * absolute URI, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid URI\n * string value = 1 [(buf.validate.field).string.uri = true];\n * }\n * ```\n *\n * @generated from field: bool uri = 17;\n */\n uri?: boolean;\n\n /**\n * `uri_ref` specifies that the field value must be a valid URI\n * as defined by [RFC 3986](https://tools.ietf.org/html/rfc3986#section-3) and may be either relative or absolute. If the\n * field value isn't a valid URI, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid URI\n * string value = 1 [(buf.validate.field).string.uri_ref = true];\n * }\n * ```\n *\n * @generated from field: bool uri_ref = 18;\n */\n uriRef?: boolean;\n\n /**\n * `address` specifies that the field value must be either a valid hostname\n * as defined by [RFC 1034](https://tools.ietf.org/html/rfc1034#section-3.5)\n * (which doesn't support internationalized domain names or IDNs) or a valid\n * IP (v4 or v6). If the field value isn't a valid hostname or IP, an error\n * message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid hostname, or ip address\n * string value = 1 [(buf.validate.field).string.address = true];\n * }\n * ```\n *\n * @generated from field: bool address = 21;\n */\n address?: boolean;\n\n /**\n * `uuid` specifies that the field value must be a valid UUID as defined by\n * [RFC 4122](https://tools.ietf.org/html/rfc4122#section-4.1.2). If the\n * field value isn't a valid UUID, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid UUID\n * string value = 1 [(buf.validate.field).string.uuid = true];\n * }\n * ```\n *\n * @generated from field: bool uuid = 22;\n */\n uuid?: boolean;\n\n /**\n * `tuuid` (trimmed UUID) specifies that the field value must be a valid UUID as\n * defined by [RFC 4122](https://tools.ietf.org/html/rfc4122#section-4.1.2) with all dashes\n * omitted. If the field value isn't a valid UUID without dashes, an error message\n * will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid trimmed UUID\n * string value = 1 [(buf.validate.field).string.tuuid = true];\n * }\n * ```\n *\n * @generated from field: bool tuuid = 33;\n */\n tuuid?: boolean;\n\n /**\n * `ip_with_prefixlen` specifies that the field value must be a valid IP (v4 or v6)\n * address with prefix length. If the field value isn't a valid IP with prefix\n * length, an error message will be generated.\n *\n *\n * ```proto\n * message MyString {\n * // value must be a valid IP with prefix length\n * string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ip_with_prefixlen = 26;\n */\n ipWithPrefixlen?: boolean;\n\n /**\n * `ipv4_with_prefixlen` specifies that the field value must be a valid\n * IPv4 address with prefix.\n * If the field value isn't a valid IPv4 address with prefix length,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv4 address with prefix length\n * string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4_with_prefixlen = 27;\n */\n ipv4WithPrefixlen?: boolean;\n\n /**\n * `ipv6_with_prefixlen` specifies that the field value must be a valid\n * IPv6 address with prefix length.\n * If the field value is not a valid IPv6 address with prefix length,\n * an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv6 address prefix length\n * string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6_with_prefixlen = 28;\n */\n ipv6WithPrefixlen?: boolean;\n\n /**\n * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) prefix.\n * If the field value isn't a valid IP prefix, an error message will be\n * generated. The prefix must have all zeros for the masked bits of the prefix (e.g.,\n * `127.0.0.0/16`, not `127.0.0.1/16`).\n *\n * ```proto\n * message MyString {\n * // value must be a valid IP prefix\n * string value = 1 [(buf.validate.field).string.ip_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ip_prefix = 29;\n */\n ipPrefix?: boolean;\n\n /**\n * `ipv4_prefix` specifies that the field value must be a valid IPv4\n * prefix. If the field value isn't a valid IPv4 prefix, an error message\n * will be generated. The prefix must have all zeros for the masked bits of\n * the prefix (e.g., `127.0.0.0/16`, not `127.0.0.1/16`).\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv4 prefix\n * string value = 1 [(buf.validate.field).string.ipv4_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4_prefix = 30;\n */\n ipv4Prefix?: boolean;\n\n /**\n * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix.\n * If the field value is not a valid IPv6 prefix, an error message will be\n * generated. The prefix must have all zeros for the masked bits of the prefix\n * (e.g., `2001:db8::/48`, not `2001:db8::1/48`).\n *\n * ```proto\n * message MyString {\n * // value must be a valid IPv6 prefix\n * string value = 1 [(buf.validate.field).string.ipv6_prefix = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6_prefix = 31;\n */\n ipv6Prefix?: boolean;\n\n /**\n * `host_and_port` specifies the field value must be a valid host and port\n * pair. The host must be a valid hostname or IP address while the port\n * must be in the range of 0-65535, inclusive. IPv6 addresses must be delimited\n * with square brackets (e.g., `[::1]:1234`).\n *\n * @generated from field: bool host_and_port = 32;\n */\n hostAndPort?: boolean;\n\n /**\n * `well_known_regex` specifies a common well-known pattern\n * defined as a regex. If the field value doesn't match the well-known\n * regex, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid HTTP header value\n * string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE];\n * }\n * ```\n *\n * #### KnownRegex\n *\n * `well_known_regex` contains some well-known patterns.\n *\n * | Name | Number | Description |\n * |-------------------------------|--------|-------------------------------------------|\n * | KNOWN_REGEX_UNSPECIFIED | 0 | |\n * | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2) |\n * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4) |\n *\n * @generated from field: buf.validate.KnownRegex well_known_regex = 24;\n */\n wellKnownRegex?: KnownRegexJson;\n\n /**\n * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to\n * enable strict header validation. By default, this is true, and HTTP header\n * validations are [RFC-compliant](https://tools.ietf.org/html/rfc7230#section-3). Setting to false will enable looser\n * validations that only disallow `\\r\\n\\0` characters, which can be used to\n * bypass header matching rules.\n *\n * ```proto\n * message MyString {\n * // The field `value` must have be a valid HTTP headers, but not enforced with strict rules.\n * string value = 1 [(buf.validate.field).string.strict = false];\n * }\n * ```\n *\n * @generated from field: optional bool strict = 25;\n */\n strict?: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyString {\n * string value = 1 [\n * (buf.validate.field).string.example = \"hello\",\n * (buf.validate.field).string.example = \"world\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated string example = 34;\n */\n example?: string[];\n};\n\n/**\n * Describes the message buf.validate.StringRules.\n * Use `create(StringRulesSchema)` to create a new message.\n */\nexport const StringRulesSchema: GenMessage<StringRules, StringRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 18);\n\n/**\n * BytesRules describe the constraints applied to `bytes` values. These rules\n * may also be applied to the `google.protobuf.BytesValue` Well-Known-Type.\n *\n * @generated from message buf.validate.BytesRules\n */\nexport type BytesRules = Message<\"buf.validate.BytesRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified bytes\n * value. If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be \"\\x01\\x02\\x03\\x04\"\n * bytes value = 1 [(buf.validate.field).bytes.const = \"\\x01\\x02\\x03\\x04\"];\n * }\n * ```\n *\n * @generated from field: optional bytes const = 1;\n */\n const: Uint8Array;\n\n /**\n * `len` requires the field value to have the specified length in bytes.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value length must be 4 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.len = 4];\n * }\n * ```\n *\n * @generated from field: optional uint64 len = 13;\n */\n len: bigint;\n\n /**\n * `min_len` requires the field value to have at least the specified minimum\n * length in bytes.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value length must be at least 2 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_len = 2;\n */\n minLen: bigint;\n\n /**\n * `max_len` requires the field value to have at most the specified maximum\n * length in bytes.\n * If the field value exceeds the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be at most 6 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_len = 3;\n */\n maxLen: bigint;\n\n /**\n * `pattern` requires the field value to match the specified regular\n * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)).\n * The value of the field must be valid UTF-8 or validation will fail with a\n * runtime error.\n * If the field value doesn't match the pattern, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must match regex pattern \"^[a-zA-Z0-9]+$\".\n * optional bytes value = 1 [(buf.validate.field).bytes.pattern = \"^[a-zA-Z0-9]+$\"];\n * }\n * ```\n *\n * @generated from field: optional string pattern = 4;\n */\n pattern: string;\n\n /**\n * `prefix` requires the field value to have the specified bytes at the\n * beginning of the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value does not have prefix \\x01\\x02\n * optional bytes value = 1 [(buf.validate.field).bytes.prefix = \"\\x01\\x02\"];\n * }\n * ```\n *\n * @generated from field: optional bytes prefix = 5;\n */\n prefix: Uint8Array;\n\n /**\n * `suffix` requires the field value to have the specified bytes at the end\n * of the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value does not have suffix \\x03\\x04\n * optional bytes value = 1 [(buf.validate.field).bytes.suffix = \"\\x03\\x04\"];\n * }\n * ```\n *\n * @generated from field: optional bytes suffix = 6;\n */\n suffix: Uint8Array;\n\n /**\n * `contains` requires the field value to have the specified bytes anywhere in\n * the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```protobuf\n * message MyBytes {\n * // value does not contain \\x02\\x03\n * optional bytes value = 1 [(buf.validate.field).bytes.contains = \"\\x02\\x03\"];\n * }\n * ```\n *\n * @generated from field: optional bytes contains = 7;\n */\n contains: Uint8Array;\n\n /**\n * `in` requires the field value to be equal to one of the specified\n * values. If the field value doesn't match any of the specified values, an\n * error message is generated.\n *\n * ```protobuf\n * message MyBytes {\n * // value must in [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"]\n * optional bytes value = 1 [(buf.validate.field).bytes.in = {\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"}];\n * }\n * ```\n *\n * @generated from field: repeated bytes in = 8;\n */\n in: Uint8Array[];\n\n /**\n * `not_in` requires the field value to be not equal to any of the specified\n * values.\n * If the field value matches any of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyBytes {\n * // value must not in [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"]\n * optional bytes value = 1 [(buf.validate.field).bytes.not_in = {\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"}];\n * }\n * ```\n *\n * @generated from field: repeated bytes not_in = 9;\n */\n notIn: Uint8Array[];\n\n /**\n * WellKnown rules provide advanced constraints against common byte\n * patterns\n *\n * @generated from oneof buf.validate.BytesRules.well_known\n */\n wellKnown: {\n /**\n * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format.\n * If the field value doesn't meet this constraint, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be a valid IP address\n * optional bytes value = 1 [(buf.validate.field).bytes.ip = true];\n * }\n * ```\n *\n * @generated from field: bool ip = 10;\n */\n value: boolean;\n case: \"ip\";\n } | {\n /**\n * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format.\n * If the field value doesn't meet this constraint, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be a valid IPv4 address\n * optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4 = 11;\n */\n value: boolean;\n case: \"ipv4\";\n } | {\n /**\n * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format.\n * If the field value doesn't meet this constraint, an error message is generated.\n * ```proto\n * message MyBytes {\n * // value must be a valid IPv6 address\n * optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6 = 12;\n */\n value: boolean;\n case: \"ipv6\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyBytes {\n * bytes value = 1 [\n * (buf.validate.field).bytes.example = \"\\x01\\x02\",\n * (buf.validate.field).bytes.example = \"\\x02\\x03\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated bytes example = 14;\n */\n example: Uint8Array[];\n};\n\n/**\n * BytesRules describe the constraints applied to `bytes` values. These rules\n * may also be applied to the `google.protobuf.BytesValue` Well-Known-Type.\n *\n * @generated from message buf.validate.BytesRules\n */\nexport type BytesRulesJson = {\n /**\n * `const` requires the field value to exactly match the specified bytes\n * value. If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be \"\\x01\\x02\\x03\\x04\"\n * bytes value = 1 [(buf.validate.field).bytes.const = \"\\x01\\x02\\x03\\x04\"];\n * }\n * ```\n *\n * @generated from field: optional bytes const = 1;\n */\n const?: string;\n\n /**\n * `len` requires the field value to have the specified length in bytes.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value length must be 4 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.len = 4];\n * }\n * ```\n *\n * @generated from field: optional uint64 len = 13;\n */\n len?: string;\n\n /**\n * `min_len` requires the field value to have at least the specified minimum\n * length in bytes.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value length must be at least 2 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_len = 2;\n */\n minLen?: string;\n\n /**\n * `max_len` requires the field value to have at most the specified maximum\n * length in bytes.\n * If the field value exceeds the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be at most 6 bytes.\n * optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_len = 3;\n */\n maxLen?: string;\n\n /**\n * `pattern` requires the field value to match the specified regular\n * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)).\n * The value of the field must be valid UTF-8 or validation will fail with a\n * runtime error.\n * If the field value doesn't match the pattern, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must match regex pattern \"^[a-zA-Z0-9]+$\".\n * optional bytes value = 1 [(buf.validate.field).bytes.pattern = \"^[a-zA-Z0-9]+$\"];\n * }\n * ```\n *\n * @generated from field: optional string pattern = 4;\n */\n pattern?: string;\n\n /**\n * `prefix` requires the field value to have the specified bytes at the\n * beginning of the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value does not have prefix \\x01\\x02\n * optional bytes value = 1 [(buf.validate.field).bytes.prefix = \"\\x01\\x02\"];\n * }\n * ```\n *\n * @generated from field: optional bytes prefix = 5;\n */\n prefix?: string;\n\n /**\n * `suffix` requires the field value to have the specified bytes at the end\n * of the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value does not have suffix \\x03\\x04\n * optional bytes value = 1 [(buf.validate.field).bytes.suffix = \"\\x03\\x04\"];\n * }\n * ```\n *\n * @generated from field: optional bytes suffix = 6;\n */\n suffix?: string;\n\n /**\n * `contains` requires the field value to have the specified bytes anywhere in\n * the string.\n * If the field value doesn't meet the requirement, an error message is generated.\n *\n * ```protobuf\n * message MyBytes {\n * // value does not contain \\x02\\x03\n * optional bytes value = 1 [(buf.validate.field).bytes.contains = \"\\x02\\x03\"];\n * }\n * ```\n *\n * @generated from field: optional bytes contains = 7;\n */\n contains?: string;\n\n /**\n * `in` requires the field value to be equal to one of the specified\n * values. If the field value doesn't match any of the specified values, an\n * error message is generated.\n *\n * ```protobuf\n * message MyBytes {\n * // value must in [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"]\n * optional bytes value = 1 [(buf.validate.field).bytes.in = {\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"}];\n * }\n * ```\n *\n * @generated from field: repeated bytes in = 8;\n */\n in?: string[];\n\n /**\n * `not_in` requires the field value to be not equal to any of the specified\n * values.\n * If the field value matches any of the specified values, an error message is\n * generated.\n *\n * ```proto\n * message MyBytes {\n * // value must not in [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"]\n * optional bytes value = 1 [(buf.validate.field).bytes.not_in = {\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"}];\n * }\n * ```\n *\n * @generated from field: repeated bytes not_in = 9;\n */\n notIn?: string[];\n\n /**\n * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format.\n * If the field value doesn't meet this constraint, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be a valid IP address\n * optional bytes value = 1 [(buf.validate.field).bytes.ip = true];\n * }\n * ```\n *\n * @generated from field: bool ip = 10;\n */\n ip?: boolean;\n\n /**\n * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format.\n * If the field value doesn't meet this constraint, an error message is generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be a valid IPv4 address\n * optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv4 = 11;\n */\n ipv4?: boolean;\n\n /**\n * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format.\n * If the field value doesn't meet this constraint, an error message is generated.\n * ```proto\n * message MyBytes {\n * // value must be a valid IPv6 address\n * optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true];\n * }\n * ```\n *\n * @generated from field: bool ipv6 = 12;\n */\n ipv6?: boolean;\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyBytes {\n * bytes value = 1 [\n * (buf.validate.field).bytes.example = \"\\x01\\x02\",\n * (buf.validate.field).bytes.example = \"\\x02\\x03\"\n * ];\n * }\n * ```\n *\n * @generated from field: repeated bytes example = 14;\n */\n example?: string[];\n};\n\n/**\n * Describes the message buf.validate.BytesRules.\n * Use `create(BytesRulesSchema)` to create a new message.\n */\nexport const BytesRulesSchema: GenMessage<BytesRules, BytesRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 19);\n\n/**\n * EnumRules describe the constraints applied to `enum` values.\n *\n * @generated from message buf.validate.EnumRules\n */\nexport type EnumRules = Message<\"buf.validate.EnumRules\"> & {\n /**\n * `const` requires the field value to exactly match the specified enum value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be exactly MY_ENUM_VALUE1.\n * MyEnum value = 1 [(buf.validate.field).enum.const = 1];\n * }\n * ```\n *\n * @generated from field: optional int32 const = 1;\n */\n const: number;\n\n /**\n * `defined_only` requires the field value to be one of the defined values for\n * this enum, failing on any undefined value.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be a defined value of MyEnum.\n * MyEnum value = 1 [(buf.validate.field).enum.defined_only = true];\n * }\n * ```\n *\n * @generated from field: optional bool defined_only = 2;\n */\n definedOnly: boolean;\n\n /**\n * `in` requires the field value to be equal to one of the\n * specified enum values. If the field value doesn't match any of the\n * specified values, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be equal to one of the specified values.\n * MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}];\n * }\n * ```\n *\n * @generated from field: repeated int32 in = 3;\n */\n in: number[];\n\n /**\n * `not_in` requires the field value to be not equal to any of the\n * specified enum values. If the field value matches one of the specified\n * values, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must not be equal to any of the specified values.\n * MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}];\n * }\n * ```\n *\n * @generated from field: repeated int32 not_in = 4;\n */\n notIn: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * (buf.validate.field).enum.example = 1,\n * (buf.validate.field).enum.example = 2\n * }\n * ```\n *\n * @generated from field: repeated int32 example = 5;\n */\n example: number[];\n};\n\n/**\n * EnumRules describe the constraints applied to `enum` values.\n *\n * @generated from message buf.validate.EnumRules\n */\nexport type EnumRulesJson = {\n /**\n * `const` requires the field value to exactly match the specified enum value.\n * If the field value doesn't match, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be exactly MY_ENUM_VALUE1.\n * MyEnum value = 1 [(buf.validate.field).enum.const = 1];\n * }\n * ```\n *\n * @generated from field: optional int32 const = 1;\n */\n const?: number;\n\n /**\n * `defined_only` requires the field value to be one of the defined values for\n * this enum, failing on any undefined value.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be a defined value of MyEnum.\n * MyEnum value = 1 [(buf.validate.field).enum.defined_only = true];\n * }\n * ```\n *\n * @generated from field: optional bool defined_only = 2;\n */\n definedOnly?: boolean;\n\n /**\n * `in` requires the field value to be equal to one of the\n * specified enum values. If the field value doesn't match any of the\n * specified values, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must be equal to one of the specified values.\n * MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}];\n * }\n * ```\n *\n * @generated from field: repeated int32 in = 3;\n */\n in?: number[];\n\n /**\n * `not_in` requires the field value to be not equal to any of the\n * specified enum values. If the field value matches one of the specified\n * values, an error message is generated.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * // The field `value` must not be equal to any of the specified values.\n * MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}];\n * }\n * ```\n *\n * @generated from field: repeated int32 not_in = 4;\n */\n notIn?: number[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * enum MyEnum {\n * MY_ENUM_UNSPECIFIED = 0;\n * MY_ENUM_VALUE1 = 1;\n * MY_ENUM_VALUE2 = 2;\n * }\n *\n * message MyMessage {\n * (buf.validate.field).enum.example = 1,\n * (buf.validate.field).enum.example = 2\n * }\n * ```\n *\n * @generated from field: repeated int32 example = 5;\n */\n example?: number[];\n};\n\n/**\n * Describes the message buf.validate.EnumRules.\n * Use `create(EnumRulesSchema)` to create a new message.\n */\nexport const EnumRulesSchema: GenMessage<EnumRules, EnumRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 20);\n\n/**\n * RepeatedRules describe the constraints applied to `repeated` values.\n *\n * @generated from message buf.validate.RepeatedRules\n */\nexport type RepeatedRules = Message<\"buf.validate.RepeatedRules\"> & {\n /**\n * `min_items` requires that this field must contain at least the specified\n * minimum number of items.\n *\n * Note that `min_items = 1` is equivalent to setting a field as `required`.\n *\n * ```proto\n * message MyRepeated {\n * // value must contain at least 2 items\n * repeated string value = 1 [(buf.validate.field).repeated.min_items = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_items = 1;\n */\n minItems: bigint;\n\n /**\n * `max_items` denotes that this field must not exceed a\n * certain number of items as the upper limit. If the field contains more\n * items than specified, an error message will be generated, requiring the\n * field to maintain no more than the specified number of items.\n *\n * ```proto\n * message MyRepeated {\n * // value must contain no more than 3 item(s)\n * repeated string value = 1 [(buf.validate.field).repeated.max_items = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_items = 2;\n */\n maxItems: bigint;\n\n /**\n * `unique` indicates that all elements in this field must\n * be unique. This constraint is strictly applicable to scalar and enum\n * types, with message types not being supported.\n *\n * ```proto\n * message MyRepeated {\n * // repeated value must contain unique items\n * repeated string value = 1 [(buf.validate.field).repeated.unique = true];\n * }\n * ```\n *\n * @generated from field: optional bool unique = 3;\n */\n unique: boolean;\n\n /**\n * `items` details the constraints to be applied to each item\n * in the field. Even for repeated message fields, validation is executed\n * against each item unless skip is explicitly specified.\n *\n * ```proto\n * message MyRepeated {\n * // The items in the field `value` must follow the specified constraints.\n * repeated string value = 1 [(buf.validate.field).repeated.items = {\n * string: {\n * min_len: 3\n * max_len: 10\n * }\n * }];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldConstraints items = 4;\n */\n items?: FieldConstraints;\n};\n\n/**\n * RepeatedRules describe the constraints applied to `repeated` values.\n *\n * @generated from message buf.validate.RepeatedRules\n */\nexport type RepeatedRulesJson = {\n /**\n * `min_items` requires that this field must contain at least the specified\n * minimum number of items.\n *\n * Note that `min_items = 1` is equivalent to setting a field as `required`.\n *\n * ```proto\n * message MyRepeated {\n * // value must contain at least 2 items\n * repeated string value = 1 [(buf.validate.field).repeated.min_items = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_items = 1;\n */\n minItems?: string;\n\n /**\n * `max_items` denotes that this field must not exceed a\n * certain number of items as the upper limit. If the field contains more\n * items than specified, an error message will be generated, requiring the\n * field to maintain no more than the specified number of items.\n *\n * ```proto\n * message MyRepeated {\n * // value must contain no more than 3 item(s)\n * repeated string value = 1 [(buf.validate.field).repeated.max_items = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_items = 2;\n */\n maxItems?: string;\n\n /**\n * `unique` indicates that all elements in this field must\n * be unique. This constraint is strictly applicable to scalar and enum\n * types, with message types not being supported.\n *\n * ```proto\n * message MyRepeated {\n * // repeated value must contain unique items\n * repeated string value = 1 [(buf.validate.field).repeated.unique = true];\n * }\n * ```\n *\n * @generated from field: optional bool unique = 3;\n */\n unique?: boolean;\n\n /**\n * `items` details the constraints to be applied to each item\n * in the field. Even for repeated message fields, validation is executed\n * against each item unless skip is explicitly specified.\n *\n * ```proto\n * message MyRepeated {\n * // The items in the field `value` must follow the specified constraints.\n * repeated string value = 1 [(buf.validate.field).repeated.items = {\n * string: {\n * min_len: 3\n * max_len: 10\n * }\n * }];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldConstraints items = 4;\n */\n items?: FieldConstraintsJson;\n};\n\n/**\n * Describes the message buf.validate.RepeatedRules.\n * Use `create(RepeatedRulesSchema)` to create a new message.\n */\nexport const RepeatedRulesSchema: GenMessage<RepeatedRules, RepeatedRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 21);\n\n/**\n * MapRules describe the constraints applied to `map` values.\n *\n * @generated from message buf.validate.MapRules\n */\nexport type MapRules = Message<\"buf.validate.MapRules\"> & {\n /**\n * Specifies the minimum number of key-value pairs allowed. If the field has\n * fewer key-value pairs than specified, an error message is generated.\n *\n * ```proto\n * message MyMap {\n * // The field `value` must have at least 2 key-value pairs.\n * map<string, string> value = 1 [(buf.validate.field).map.min_pairs = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_pairs = 1;\n */\n minPairs: bigint;\n\n /**\n * Specifies the maximum number of key-value pairs allowed. If the field has\n * more key-value pairs than specified, an error message is generated.\n *\n * ```proto\n * message MyMap {\n * // The field `value` must have at most 3 key-value pairs.\n * map<string, string> value = 1 [(buf.validate.field).map.max_pairs = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_pairs = 2;\n */\n maxPairs: bigint;\n\n /**\n * Specifies the constraints to be applied to each key in the field.\n *\n * ```proto\n * message MyMap {\n * // The keys in the field `value` must follow the specified constraints.\n * map<string, string> value = 1 [(buf.validate.field).map.keys = {\n * string: {\n * min_len: 3\n * max_len: 10\n * }\n * }];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldConstraints keys = 4;\n */\n keys?: FieldConstraints;\n\n /**\n * Specifies the constraints to be applied to the value of each key in the\n * field. Message values will still have their validations evaluated unless\n * skip is specified here.\n *\n * ```proto\n * message MyMap {\n * // The values in the field `value` must follow the specified constraints.\n * map<string, string> value = 1 [(buf.validate.field).map.values = {\n * string: {\n * min_len: 5\n * max_len: 20\n * }\n * }];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldConstraints values = 5;\n */\n values?: FieldConstraints;\n};\n\n/**\n * MapRules describe the constraints applied to `map` values.\n *\n * @generated from message buf.validate.MapRules\n */\nexport type MapRulesJson = {\n /**\n * Specifies the minimum number of key-value pairs allowed. If the field has\n * fewer key-value pairs than specified, an error message is generated.\n *\n * ```proto\n * message MyMap {\n * // The field `value` must have at least 2 key-value pairs.\n * map<string, string> value = 1 [(buf.validate.field).map.min_pairs = 2];\n * }\n * ```\n *\n * @generated from field: optional uint64 min_pairs = 1;\n */\n minPairs?: string;\n\n /**\n * Specifies the maximum number of key-value pairs allowed. If the field has\n * more key-value pairs than specified, an error message is generated.\n *\n * ```proto\n * message MyMap {\n * // The field `value` must have at most 3 key-value pairs.\n * map<string, string> value = 1 [(buf.validate.field).map.max_pairs = 3];\n * }\n * ```\n *\n * @generated from field: optional uint64 max_pairs = 2;\n */\n maxPairs?: string;\n\n /**\n * Specifies the constraints to be applied to each key in the field.\n *\n * ```proto\n * message MyMap {\n * // The keys in the field `value` must follow the specified constraints.\n * map<string, string> value = 1 [(buf.validate.field).map.keys = {\n * string: {\n * min_len: 3\n * max_len: 10\n * }\n * }];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldConstraints keys = 4;\n */\n keys?: FieldConstraintsJson;\n\n /**\n * Specifies the constraints to be applied to the value of each key in the\n * field. Message values will still have their validations evaluated unless\n * skip is specified here.\n *\n * ```proto\n * message MyMap {\n * // The values in the field `value` must follow the specified constraints.\n * map<string, string> value = 1 [(buf.validate.field).map.values = {\n * string: {\n * min_len: 5\n * max_len: 20\n * }\n * }];\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldConstraints values = 5;\n */\n values?: FieldConstraintsJson;\n};\n\n/**\n * Describes the message buf.validate.MapRules.\n * Use `create(MapRulesSchema)` to create a new message.\n */\nexport const MapRulesSchema: GenMessage<MapRules, MapRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 22);\n\n/**\n * AnyRules describe constraints applied exclusively to the `google.protobuf.Any` well-known type.\n *\n * @generated from message buf.validate.AnyRules\n */\nexport type AnyRules = Message<\"buf.validate.AnyRules\"> & {\n /**\n * `in` requires the field's `type_url` to be equal to one of the\n * specified values. If it doesn't match any of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyAny {\n * // The `value` field must have a `type_url` equal to one of the specified values.\n * google.protobuf.Any value = 1 [(buf.validate.field).any.in = [\"type.googleapis.com/MyType1\", \"type.googleapis.com/MyType2\"]];\n * }\n * ```\n *\n * @generated from field: repeated string in = 2;\n */\n in: string[];\n\n /**\n * requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated.\n *\n * ```proto\n * message MyAny {\n * // The field `value` must not have a `type_url` equal to any of the specified values.\n * google.protobuf.Any value = 1 [(buf.validate.field).any.not_in = [\"type.googleapis.com/ForbiddenType1\", \"type.googleapis.com/ForbiddenType2\"]];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 3;\n */\n notIn: string[];\n};\n\n/**\n * AnyRules describe constraints applied exclusively to the `google.protobuf.Any` well-known type.\n *\n * @generated from message buf.validate.AnyRules\n */\nexport type AnyRulesJson = {\n /**\n * `in` requires the field's `type_url` to be equal to one of the\n * specified values. If it doesn't match any of the specified values, an error\n * message is generated.\n *\n * ```proto\n * message MyAny {\n * // The `value` field must have a `type_url` equal to one of the specified values.\n * google.protobuf.Any value = 1 [(buf.validate.field).any.in = [\"type.googleapis.com/MyType1\", \"type.googleapis.com/MyType2\"]];\n * }\n * ```\n *\n * @generated from field: repeated string in = 2;\n */\n in?: string[];\n\n /**\n * requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated.\n *\n * ```proto\n * message MyAny {\n * // The field `value` must not have a `type_url` equal to any of the specified values.\n * google.protobuf.Any value = 1 [(buf.validate.field).any.not_in = [\"type.googleapis.com/ForbiddenType1\", \"type.googleapis.com/ForbiddenType2\"]];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 3;\n */\n notIn?: string[];\n};\n\n/**\n * Describes the message buf.validate.AnyRules.\n * Use `create(AnyRulesSchema)` to create a new message.\n */\nexport const AnyRulesSchema: GenMessage<AnyRules, AnyRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 23);\n\n/**\n * DurationRules describe the constraints applied exclusively to the `google.protobuf.Duration` well-known type.\n *\n * @generated from message buf.validate.DurationRules\n */\nexport type DurationRules = Message<\"buf.validate.DurationRules\"> & {\n /**\n * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly.\n * If the field's value deviates from the specified value, an error message\n * will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must equal 5s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = \"5s\"];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Duration const = 2;\n */\n const?: Duration;\n\n /**\n * @generated from oneof buf.validate.DurationRules.less_than\n */\n lessThan: {\n /**\n * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type,\n * exclusive. If the field's value is greater than or equal to the specified\n * value, an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must be less than 5s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = \"5s\"];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration lt = 3;\n */\n value: Duration;\n case: \"lt\";\n } | {\n /**\n * `lte` indicates that the field must be less than or equal to the specified\n * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value,\n * an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must be less than or equal to 10s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = \"10s\"];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration lte = 4;\n */\n value: Duration;\n case: \"lte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.DurationRules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the duration field value to be greater than the specified\n * value (exclusive). If the value of `gt` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyDuration {\n * // duration must be greater than 5s [duration.gt]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }];\n *\n * // duration must be greater than 5s and less than 10s [duration.gt_lt]\n * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }];\n *\n * // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive]\n * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration gt = 5;\n */\n value: Duration;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the duration field value to be greater than or equal to the\n * specified value (exclusive). If the value of `gte` is larger than a\n * specified `lt` or `lte`, the range is reversed, and the field value must\n * be outside the specified range. If the field value doesn't meet the\n * required conditions, an error message is generated.\n *\n * ```proto\n * message MyDuration {\n * // duration must be greater than or equal to 5s [duration.gte]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }];\n *\n * // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt]\n * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }];\n *\n * // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive]\n * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration gte = 6;\n */\n value: Duration;\n case: \"gte\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type.\n * If the field's value doesn't correspond to any of the specified values,\n * an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must be in list [1s, 2s, 3s]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = [\"1s\", \"2s\", \"3s\"]];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration in = 7;\n */\n in: Duration[];\n\n /**\n * `not_in` denotes that the field must not be equal to\n * any of the specified values of the `google.protobuf.Duration` type.\n * If the field's value matches any of these values, an error message will be\n * generated.\n *\n * ```proto\n * message MyDuration {\n * // value must not be in list [1s, 2s, 3s]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = [\"1s\", \"2s\", \"3s\"]];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration not_in = 8;\n */\n notIn: Duration[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyDuration {\n * google.protobuf.Duration value = 1 [\n * (buf.validate.field).duration.example = { seconds: 1 },\n * (buf.validate.field).duration.example = { seconds: 2 },\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration example = 9;\n */\n example: Duration[];\n};\n\n/**\n * DurationRules describe the constraints applied exclusively to the `google.protobuf.Duration` well-known type.\n *\n * @generated from message buf.validate.DurationRules\n */\nexport type DurationRulesJson = {\n /**\n * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly.\n * If the field's value deviates from the specified value, an error message\n * will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must equal 5s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = \"5s\"];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Duration const = 2;\n */\n const?: DurationJson;\n\n /**\n * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type,\n * exclusive. If the field's value is greater than or equal to the specified\n * value, an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must be less than 5s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = \"5s\"];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration lt = 3;\n */\n lt?: DurationJson;\n\n /**\n * `lte` indicates that the field must be less than or equal to the specified\n * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value,\n * an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must be less than or equal to 10s\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = \"10s\"];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration lte = 4;\n */\n lte?: DurationJson;\n\n /**\n * `gt` requires the duration field value to be greater than the specified\n * value (exclusive). If the value of `gt` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyDuration {\n * // duration must be greater than 5s [duration.gt]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }];\n *\n * // duration must be greater than 5s and less than 10s [duration.gt_lt]\n * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }];\n *\n * // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive]\n * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration gt = 5;\n */\n gt?: DurationJson;\n\n /**\n * `gte` requires the duration field value to be greater than or equal to the\n * specified value (exclusive). If the value of `gte` is larger than a\n * specified `lt` or `lte`, the range is reversed, and the field value must\n * be outside the specified range. If the field value doesn't meet the\n * required conditions, an error message is generated.\n *\n * ```proto\n * message MyDuration {\n * // duration must be greater than or equal to 5s [duration.gte]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }];\n *\n * // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt]\n * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }];\n *\n * // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive]\n * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Duration gte = 6;\n */\n gte?: DurationJson;\n\n /**\n * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type.\n * If the field's value doesn't correspond to any of the specified values,\n * an error message will be generated.\n *\n * ```proto\n * message MyDuration {\n * // value must be in list [1s, 2s, 3s]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = [\"1s\", \"2s\", \"3s\"]];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration in = 7;\n */\n in?: DurationJson[];\n\n /**\n * `not_in` denotes that the field must not be equal to\n * any of the specified values of the `google.protobuf.Duration` type.\n * If the field's value matches any of these values, an error message will be\n * generated.\n *\n * ```proto\n * message MyDuration {\n * // value must not be in list [1s, 2s, 3s]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = [\"1s\", \"2s\", \"3s\"]];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration not_in = 8;\n */\n notIn?: DurationJson[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other constraints. `example` values will not impact validation\n * but may be used as helpful guidance on how to populate the given field.\n *\n * ```proto\n * message MyDuration {\n * google.protobuf.Duration value = 1 [\n * (buf.validate.field).duration.example = { seconds: 1 },\n * (buf.validate.field).duration.example = { seconds: 2 },\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Duration example = 9;\n */\n example?: DurationJson[];\n};\n\n/**\n * Describes the message buf.validate.DurationRules.\n * Use `create(DurationRulesSchema)` to create a new message.\n */\nexport const DurationRulesSchema: GenMessage<DurationRules, DurationRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 24);\n\n/**\n * TimestampRules describe the constraints applied exclusively to the `google.protobuf.Timestamp` well-known type.\n *\n * @generated from message buf.validate.TimestampRules\n */\nexport type TimestampRules = Message<\"buf.validate.TimestampRules\"> & {\n /**\n * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated.\n *\n * ```proto\n * message MyTimestamp {\n * // value must equal 2023-05-03T10:00:00Z\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Timestamp const = 2;\n */\n const?: Timestamp;\n\n /**\n * @generated from oneof buf.validate.TimestampRules.less_than\n */\n lessThan: {\n /**\n * requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated.\n *\n * ```proto\n * message MyDuration {\n * // duration must be less than 'P3D' [duration.lt]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp lt = 3;\n */\n value: Timestamp;\n case: \"lt\";\n } | {\n /**\n * requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp lte = 4;\n */\n value: Timestamp;\n case: \"lte\";\n } | {\n /**\n * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule.\n *\n * ```proto\n * message MyTimestamp {\n * // value must be less than now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true];\n * }\n * ```\n *\n * @generated from field: bool lt_now = 7;\n */\n value: boolean;\n case: \"ltNow\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from oneof buf.validate.TimestampRules.greater_than\n */\n greaterThan: {\n /**\n * `gt` requires the timestamp field value to be greater than the specified\n * value (exclusive). If the value of `gt` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }];\n *\n * // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt]\n * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];\n *\n * // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive]\n * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp gt = 5;\n */\n value: Timestamp;\n case: \"gt\";\n } | {\n /**\n * `gte` requires the timestamp field value to be greater than or equal to the\n * specified value (exclusive). If the value of `gte` is larger than a\n * specified `lt` or `lte`, the range is reversed, and the field value\n * must be outside the specified range. If the field value doesn't meet\n * the required conditions, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }];\n *\n * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt]\n * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];\n *\n * // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive]\n * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp gte = 6;\n */\n value: Timestamp;\n case: \"gte\";\n } | {\n /**\n * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule.\n *\n * ```proto\n * message MyTimestamp {\n * // value must be greater than now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true];\n * }\n * ```\n *\n * @generated from field: bool gt_now = 8;\n */\n value: boolean;\n case: \"gtNow\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // value must be within 1 hour of now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Duration within = 9;\n */\n within?: Duration;\n\n /**\n * @generated from field: repeated google.protobuf.Timestamp example = 10;\n */\n example: Timestamp[];\n};\n\n/**\n * TimestampRules describe the constraints applied exclusively to the `google.protobuf.Timestamp` well-known type.\n *\n * @generated from message buf.validate.TimestampRules\n */\nexport type TimestampRulesJson = {\n /**\n * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated.\n *\n * ```proto\n * message MyTimestamp {\n * // value must equal 2023-05-03T10:00:00Z\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Timestamp const = 2;\n */\n const?: TimestampJson;\n\n /**\n * requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated.\n *\n * ```proto\n * message MyDuration {\n * // duration must be less than 'P3D' [duration.lt]\n * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp lt = 3;\n */\n lt?: TimestampJson;\n\n /**\n * requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp lte = 4;\n */\n lte?: TimestampJson;\n\n /**\n * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule.\n *\n * ```proto\n * message MyTimestamp {\n * // value must be less than now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true];\n * }\n * ```\n *\n * @generated from field: bool lt_now = 7;\n */\n ltNow?: boolean;\n\n /**\n * `gt` requires the timestamp field value to be greater than the specified\n * value (exclusive). If the value of `gt` is larger than a specified `lt`\n * or `lte`, the range is reversed, and the field value must be outside the\n * specified range. If the field value doesn't meet the required conditions,\n * an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }];\n *\n * // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt]\n * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];\n *\n * // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive]\n * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp gt = 5;\n */\n gt?: TimestampJson;\n\n /**\n * `gte` requires the timestamp field value to be greater than or equal to the\n * specified value (exclusive). If the value of `gte` is larger than a\n * specified `lt` or `lte`, the range is reversed, and the field value\n * must be outside the specified range. If the field value doesn't meet\n * the required conditions, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte]\n * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }];\n *\n * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt]\n * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];\n *\n * // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive]\n * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];\n * }\n * ```\n *\n * @generated from field: google.protobuf.Timestamp gte = 6;\n */\n gte?: TimestampJson;\n\n /**\n * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule.\n *\n * ```proto\n * message MyTimestamp {\n * // value must be greater than now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true];\n * }\n * ```\n *\n * @generated from field: bool gt_now = 8;\n */\n gtNow?: boolean;\n\n /**\n * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated.\n *\n * ```proto\n * message MyTimestamp {\n * // value must be within 1 hour of now\n * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.Duration within = 9;\n */\n within?: DurationJson;\n\n /**\n * @generated from field: repeated google.protobuf.Timestamp example = 10;\n */\n example?: TimestampJson[];\n};\n\n/**\n * Describes the message buf.validate.TimestampRules.\n * Use `create(TimestampRulesSchema)` to create a new message.\n */\nexport const TimestampRulesSchema: GenMessage<TimestampRules, TimestampRulesJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 25);\n\n/**\n * `Violations` is a collection of `Violation` messages. This message type is returned by\n * protovalidate when a proto message fails to meet the requirements set by the `Constraint` validation rules.\n * Each individual violation is represented by a `Violation` message.\n *\n * @generated from message buf.validate.Violations\n */\nexport type Violations = Message<\"buf.validate.Violations\"> & {\n /**\n * `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected.\n *\n * @generated from field: repeated buf.validate.Violation violations = 1;\n */\n violations: Violation[];\n};\n\n/**\n * `Violations` is a collection of `Violation` messages. This message type is returned by\n * protovalidate when a proto message fails to meet the requirements set by the `Constraint` validation rules.\n * Each individual violation is represented by a `Violation` message.\n *\n * @generated from message buf.validate.Violations\n */\nexport type ViolationsJson = {\n /**\n * `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected.\n *\n * @generated from field: repeated buf.validate.Violation violations = 1;\n */\n violations?: ViolationJson[];\n};\n\n/**\n * Describes the message buf.validate.Violations.\n * Use `create(ViolationsSchema)` to create a new message.\n */\nexport const ViolationsSchema: GenMessage<Violations, ViolationsJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 26);\n\n/**\n * `Violation` represents a single instance where a validation rule, expressed\n * as a `Constraint`, was not met. It provides information about the field that\n * caused the violation, the specific constraint that wasn't fulfilled, and a\n * human-readable error message.\n *\n * ```json\n * {\n * \"fieldPath\": \"bar\",\n * \"constraintId\": \"foo.bar\",\n * \"message\": \"bar must be greater than 0\"\n * }\n * ```\n *\n * @generated from message buf.validate.Violation\n */\nexport type Violation = Message<\"buf.validate.Violation\"> & {\n /**\n * `field` is a machine-readable path to the field that failed validation.\n * This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message Message {\n * bool a = 1 [(buf.validate.field).required = true];\n * }\n * ```\n *\n * It could produce the following violation:\n *\n * ```textproto\n * violation {\n * field { element { field_number: 1, field_name: \"a\", field_type: 8 } }\n * ...\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldPath field = 5;\n */\n field?: FieldPath;\n\n /**\n * `rule` is a machine-readable path that points to the specific constraint rule that failed validation.\n * This will be a nested field starting from the FieldConstraints of the field that failed validation.\n * For custom constraints, this will provide the path of the constraint, e.g. `cel[0]`.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message Message {\n * bool a = 1 [(buf.validate.field).required = true];\n * bool b = 2 [(buf.validate.field).cel = {\n * id: \"custom_constraint\",\n * expression: \"!this ? 'b must be true': ''\"\n * }]\n * }\n * ```\n *\n * It could produce the following violations:\n *\n * ```textproto\n * violation {\n * rule { element { field_number: 25, field_name: \"required\", field_type: 8 } }\n * ...\n * }\n * violation {\n * rule { element { field_number: 23, field_name: \"cel\", field_type: 11, index: 0 } }\n * ...\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldPath rule = 6;\n */\n rule?: FieldPath;\n\n /**\n * `constraint_id` is the unique identifier of the `Constraint` that was not fulfilled.\n * This is the same `id` that was specified in the `Constraint` message, allowing easy tracing of which rule was violated.\n *\n * @generated from field: optional string constraint_id = 2;\n */\n constraintId: string;\n\n /**\n * `message` is a human-readable error message that describes the nature of the violation.\n * This can be the default error message from the violated `Constraint`, or it can be a custom message that gives more context about the violation.\n *\n * @generated from field: optional string message = 3;\n */\n message: string;\n\n /**\n * `for_key` indicates whether the violation was caused by a map key, rather than a value.\n *\n * @generated from field: optional bool for_key = 4;\n */\n forKey: boolean;\n};\n\n/**\n * `Violation` represents a single instance where a validation rule, expressed\n * as a `Constraint`, was not met. It provides information about the field that\n * caused the violation, the specific constraint that wasn't fulfilled, and a\n * human-readable error message.\n *\n * ```json\n * {\n * \"fieldPath\": \"bar\",\n * \"constraintId\": \"foo.bar\",\n * \"message\": \"bar must be greater than 0\"\n * }\n * ```\n *\n * @generated from message buf.validate.Violation\n */\nexport type ViolationJson = {\n /**\n * `field` is a machine-readable path to the field that failed validation.\n * This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message Message {\n * bool a = 1 [(buf.validate.field).required = true];\n * }\n * ```\n *\n * It could produce the following violation:\n *\n * ```textproto\n * violation {\n * field { element { field_number: 1, field_name: \"a\", field_type: 8 } }\n * ...\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldPath field = 5;\n */\n field?: FieldPathJson;\n\n /**\n * `rule` is a machine-readable path that points to the specific constraint rule that failed validation.\n * This will be a nested field starting from the FieldConstraints of the field that failed validation.\n * For custom constraints, this will provide the path of the constraint, e.g. `cel[0]`.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message Message {\n * bool a = 1 [(buf.validate.field).required = true];\n * bool b = 2 [(buf.validate.field).cel = {\n * id: \"custom_constraint\",\n * expression: \"!this ? 'b must be true': ''\"\n * }]\n * }\n * ```\n *\n * It could produce the following violations:\n *\n * ```textproto\n * violation {\n * rule { element { field_number: 25, field_name: \"required\", field_type: 8 } }\n * ...\n * }\n * violation {\n * rule { element { field_number: 23, field_name: \"cel\", field_type: 11, index: 0 } }\n * ...\n * }\n * ```\n *\n * @generated from field: optional buf.validate.FieldPath rule = 6;\n */\n rule?: FieldPathJson;\n\n /**\n * `constraint_id` is the unique identifier of the `Constraint` that was not fulfilled.\n * This is the same `id` that was specified in the `Constraint` message, allowing easy tracing of which rule was violated.\n *\n * @generated from field: optional string constraint_id = 2;\n */\n constraintId?: string;\n\n /**\n * `message` is a human-readable error message that describes the nature of the violation.\n * This can be the default error message from the violated `Constraint`, or it can be a custom message that gives more context about the violation.\n *\n * @generated from field: optional string message = 3;\n */\n message?: string;\n\n /**\n * `for_key` indicates whether the violation was caused by a map key, rather than a value.\n *\n * @generated from field: optional bool for_key = 4;\n */\n forKey?: boolean;\n};\n\n/**\n * Describes the message buf.validate.Violation.\n * Use `create(ViolationSchema)` to create a new message.\n */\nexport const ViolationSchema: GenMessage<Violation, ViolationJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 27);\n\n/**\n * `FieldPath` provides a path to a nested protobuf field.\n *\n * This message provides enough information to render a dotted field path even without protobuf descriptors.\n * It also provides enough information to resolve a nested field through unknown wire data.\n *\n * @generated from message buf.validate.FieldPath\n */\nexport type FieldPath = Message<\"buf.validate.FieldPath\"> & {\n /**\n * `elements` contains each element of the path, starting from the root and recursing downward.\n *\n * @generated from field: repeated buf.validate.FieldPathElement elements = 1;\n */\n elements: FieldPathElement[];\n};\n\n/**\n * `FieldPath` provides a path to a nested protobuf field.\n *\n * This message provides enough information to render a dotted field path even without protobuf descriptors.\n * It also provides enough information to resolve a nested field through unknown wire data.\n *\n * @generated from message buf.validate.FieldPath\n */\nexport type FieldPathJson = {\n /**\n * `elements` contains each element of the path, starting from the root and recursing downward.\n *\n * @generated from field: repeated buf.validate.FieldPathElement elements = 1;\n */\n elements?: FieldPathElementJson[];\n};\n\n/**\n * Describes the message buf.validate.FieldPath.\n * Use `create(FieldPathSchema)` to create a new message.\n */\nexport const FieldPathSchema: GenMessage<FieldPath, FieldPathJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 28);\n\n/**\n * `FieldPathElement` provides enough information to nest through a single protobuf field.\n *\n * If the selected field is a map or repeated field, the `subscript` value selects a specific element from it.\n * A path that refers to a value nested under a map key or repeated field index will have a `subscript` value.\n * The `field_type` field allows unambiguous resolution of a field even if descriptors are not available.\n *\n * @generated from message buf.validate.FieldPathElement\n */\nexport type FieldPathElement = Message<\"buf.validate.FieldPathElement\"> & {\n /**\n * `field_number` is the field number this path element refers to.\n *\n * @generated from field: optional int32 field_number = 1;\n */\n fieldNumber: number;\n\n /**\n * `field_name` contains the field name this path element refers to.\n * This can be used to display a human-readable path even if the field number is unknown.\n *\n * @generated from field: optional string field_name = 2;\n */\n fieldName: string;\n\n /**\n * `field_type` specifies the type of this field. When using reflection, this value is not needed.\n *\n * This value is provided to make it possible to traverse unknown fields through wire data.\n * When traversing wire data, be mindful of both packed[1] and delimited[2] encoding schemes.\n *\n * [1]: https://protobuf.dev/programming-guides/encoding/#packed\n * [2]: https://protobuf.dev/programming-guides/encoding/#groups\n *\n * N.B.: Although groups are deprecated, the corresponding delimited encoding scheme is not, and\n * can be explicitly used in Protocol Buffers 2023 Edition.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type field_type = 3;\n */\n fieldType: FieldDescriptorProto_Type;\n\n /**\n * `key_type` specifies the map key type of this field. This value is useful when traversing\n * unknown fields through wire data: specifically, it allows handling the differences between\n * different integer encodings.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type key_type = 4;\n */\n keyType: FieldDescriptorProto_Type;\n\n /**\n * `value_type` specifies map value type of this field. This is useful if you want to display a\n * value inside unknown fields through wire data.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type value_type = 5;\n */\n valueType: FieldDescriptorProto_Type;\n\n /**\n * `subscript` contains a repeated index or map key, if this path element nests into a repeated or map field.\n *\n * @generated from oneof buf.validate.FieldPathElement.subscript\n */\n subscript: {\n /**\n * `index` specifies a 0-based index into a repeated field.\n *\n * @generated from field: uint64 index = 6;\n */\n value: bigint;\n case: \"index\";\n } | {\n /**\n * `bool_key` specifies a map key of type bool.\n *\n * @generated from field: bool bool_key = 7;\n */\n value: boolean;\n case: \"boolKey\";\n } | {\n /**\n * `int_key` specifies a map key of type int32, int64, sint32, sint64, sfixed32 or sfixed64.\n *\n * @generated from field: int64 int_key = 8;\n */\n value: bigint;\n case: \"intKey\";\n } | {\n /**\n * `uint_key` specifies a map key of type uint32, uint64, fixed32 or fixed64.\n *\n * @generated from field: uint64 uint_key = 9;\n */\n value: bigint;\n case: \"uintKey\";\n } | {\n /**\n * `string_key` specifies a map key of type string.\n *\n * @generated from field: string string_key = 10;\n */\n value: string;\n case: \"stringKey\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * `FieldPathElement` provides enough information to nest through a single protobuf field.\n *\n * If the selected field is a map or repeated field, the `subscript` value selects a specific element from it.\n * A path that refers to a value nested under a map key or repeated field index will have a `subscript` value.\n * The `field_type` field allows unambiguous resolution of a field even if descriptors are not available.\n *\n * @generated from message buf.validate.FieldPathElement\n */\nexport type FieldPathElementJson = {\n /**\n * `field_number` is the field number this path element refers to.\n *\n * @generated from field: optional int32 field_number = 1;\n */\n fieldNumber?: number;\n\n /**\n * `field_name` contains the field name this path element refers to.\n * This can be used to display a human-readable path even if the field number is unknown.\n *\n * @generated from field: optional string field_name = 2;\n */\n fieldName?: string;\n\n /**\n * `field_type` specifies the type of this field. When using reflection, this value is not needed.\n *\n * This value is provided to make it possible to traverse unknown fields through wire data.\n * When traversing wire data, be mindful of both packed[1] and delimited[2] encoding schemes.\n *\n * [1]: https://protobuf.dev/programming-guides/encoding/#packed\n * [2]: https://protobuf.dev/programming-guides/encoding/#groups\n *\n * N.B.: Although groups are deprecated, the corresponding delimited encoding scheme is not, and\n * can be explicitly used in Protocol Buffers 2023 Edition.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type field_type = 3;\n */\n fieldType?: FieldDescriptorProto_TypeJson;\n\n /**\n * `key_type` specifies the map key type of this field. This value is useful when traversing\n * unknown fields through wire data: specifically, it allows handling the differences between\n * different integer encodings.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type key_type = 4;\n */\n keyType?: FieldDescriptorProto_TypeJson;\n\n /**\n * `value_type` specifies map value type of this field. This is useful if you want to display a\n * value inside unknown fields through wire data.\n *\n * @generated from field: optional google.protobuf.FieldDescriptorProto.Type value_type = 5;\n */\n valueType?: FieldDescriptorProto_TypeJson;\n\n /**\n * `index` specifies a 0-based index into a repeated field.\n *\n * @generated from field: uint64 index = 6;\n */\n index?: string;\n\n /**\n * `bool_key` specifies a map key of type bool.\n *\n * @generated from field: bool bool_key = 7;\n */\n boolKey?: boolean;\n\n /**\n * `int_key` specifies a map key of type int32, int64, sint32, sint64, sfixed32 or sfixed64.\n *\n * @generated from field: int64 int_key = 8;\n */\n intKey?: string;\n\n /**\n * `uint_key` specifies a map key of type uint32, uint64, fixed32 or fixed64.\n *\n * @generated from field: uint64 uint_key = 9;\n */\n uintKey?: string;\n\n /**\n * `string_key` specifies a map key of type string.\n *\n * @generated from field: string string_key = 10;\n */\n stringKey?: string;\n};\n\n/**\n * Describes the message buf.validate.FieldPathElement.\n * Use `create(FieldPathElementSchema)` to create a new message.\n */\nexport const FieldPathElementSchema: GenMessage<FieldPathElement, FieldPathElementJson> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 29);\n\n/**\n * Specifies how FieldConstraints.ignore behaves. See the documentation for\n * FieldConstraints.required for definitions of \"populated\" and \"nullable\".\n *\n * @generated from enum buf.validate.Ignore\n */\nexport enum Ignore {\n /**\n * Validation is only skipped if it's an unpopulated nullable fields.\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message Request {\n * // The uri rule applies to any value, including the empty string.\n * string foo = 1 [\n * (buf.validate.field).string.uri = true\n * ];\n *\n * // The uri rule only applies if the field is set, including if it's\n * // set to the empty string.\n * optional string bar = 2 [\n * (buf.validate.field).string.uri = true\n * ];\n *\n * // The min_items rule always applies, even if the list is empty.\n * repeated string baz = 3 [\n * (buf.validate.field).repeated.min_items = 3\n * ];\n *\n * // The custom CEL rule applies only if the field is set, including if\n * // it's the \"zero\" value of that message.\n * SomeMessage quux = 4 [\n * (buf.validate.field).cel = {/* ... *\\/}\n * ];\n * }\n * ```\n *\n * @generated from enum value: IGNORE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Validation is skipped if the field is unpopulated. This rule is redundant\n * if the field is already nullable.\n *\n * ```proto\n * syntax=\"proto3\n *\n * message Request {\n * // The uri rule applies only if the value is not the empty string.\n * string foo = 1 [\n * (buf.validate.field).string.uri = true,\n * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED\n * ];\n *\n * // IGNORE_IF_UNPOPULATED is equivalent to IGNORE_UNSPECIFIED in this\n * // case: the uri rule only applies if the field is set, including if\n * // it's set to the empty string.\n * optional string bar = 2 [\n * (buf.validate.field).string.uri = true,\n * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED\n * ];\n *\n * // The min_items rule only applies if the list has at least one item.\n * repeated string baz = 3 [\n * (buf.validate.field).repeated.min_items = 3,\n * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED\n * ];\n *\n * // IGNORE_IF_UNPOPULATED is equivalent to IGNORE_UNSPECIFIED in this\n * // case: the custom CEL rule applies only if the field is set, including\n * // if it's the \"zero\" value of that message.\n * SomeMessage quux = 4 [\n * (buf.validate.field).cel = {/* ... *\\/},\n * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED\n * ];\n * }\n * ```\n *\n * @generated from enum value: IGNORE_IF_UNPOPULATED = 1;\n */\n IF_UNPOPULATED = 1,\n\n /**\n * Validation is skipped if the field is unpopulated or if it is a nullable\n * field populated with its default value. This is typically the zero or\n * empty value, but proto2 scalars support custom defaults. For messages, the\n * default is a non-null message with all its fields unpopulated.\n *\n * ```proto\n * syntax=\"proto3\n *\n * message Request {\n * // IGNORE_IF_DEFAULT_VALUE is equivalent to IGNORE_IF_UNPOPULATED in\n * // this case; the uri rule applies only if the value is not the empty\n * // string.\n * string foo = 1 [\n * (buf.validate.field).string.uri = true,\n * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE\n * ];\n *\n * // The uri rule only applies if the field is set to a value other than\n * // the empty string.\n * optional string bar = 2 [\n * (buf.validate.field).string.uri = true,\n * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE\n * ];\n *\n * // IGNORE_IF_DEFAULT_VALUE is equivalent to IGNORE_IF_UNPOPULATED in\n * // this case; the min_items rule only applies if the list has at least\n * // one item.\n * repeated string baz = 3 [\n * (buf.validate.field).repeated.min_items = 3,\n * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE\n * ];\n *\n * // The custom CEL rule only applies if the field is set to a value other\n * // than an empty message (i.e., fields are unpopulated).\n * SomeMessage quux = 4 [\n * (buf.validate.field).cel = {/* ... *\\/},\n * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE\n * ];\n * }\n * ```\n *\n * This rule is affected by proto2 custom default values:\n *\n * ```proto\n * syntax=\"proto2\";\n *\n * message Request {\n * // The gt rule only applies if the field is set and it's value is not\n * the default (i.e., not -42). The rule even applies if the field is set\n * to zero since the default value differs.\n * optional int32 value = 1 [\n * default = -42,\n * (buf.validate.field).int32.gt = 0,\n * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE\n * ];\n * }\n *\n * @generated from enum value: IGNORE_IF_DEFAULT_VALUE = 2;\n */\n IF_DEFAULT_VALUE = 2,\n\n /**\n * The validation rules of this field will be skipped and not evaluated. This\n * is useful for situations that necessitate turning off the rules of a field\n * containing a message that may not make sense in the current context, or to\n * temporarily disable constraints during development.\n *\n * ```proto\n * message MyMessage {\n * // The field's rules will always be ignored, including any validation's\n * // on value's fields.\n * MyOtherMessage value = 1 [\n * (buf.validate.field).ignore = IGNORE_ALWAYS];\n * }\n * ```\n *\n * @generated from enum value: IGNORE_ALWAYS = 3;\n */\n ALWAYS = 3,\n}\n\n/**\n * Specifies how FieldConstraints.ignore behaves. See the documentation for\n * FieldConstraints.required for definitions of \"populated\" and \"nullable\".\n *\n * @generated from enum buf.validate.Ignore\n */\nexport type IgnoreJson = \"IGNORE_UNSPECIFIED\" | \"IGNORE_IF_UNPOPULATED\" | \"IGNORE_IF_DEFAULT_VALUE\" | \"IGNORE_ALWAYS\";\n\n/**\n * Describes the enum buf.validate.Ignore.\n */\nexport const IgnoreSchema: GenEnum<Ignore, IgnoreJson> = /*@__PURE__*/\n enumDesc(file_buf_validate_validate, 0);\n\n/**\n * WellKnownRegex contain some well-known patterns.\n *\n * @generated from enum buf.validate.KnownRegex\n */\nexport enum KnownRegex {\n /**\n * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * HTTP header name as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2).\n *\n * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1;\n */\n HTTP_HEADER_NAME = 1,\n\n /**\n * HTTP header value as defined by [RFC 7230](https://tools.ietf.org/html/rfc7230#section-3.2.4).\n *\n * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2;\n */\n HTTP_HEADER_VALUE = 2,\n}\n\n/**\n * WellKnownRegex contain some well-known patterns.\n *\n * @generated from enum buf.validate.KnownRegex\n */\nexport type KnownRegexJson = \"KNOWN_REGEX_UNSPECIFIED\" | \"KNOWN_REGEX_HTTP_HEADER_NAME\" | \"KNOWN_REGEX_HTTP_HEADER_VALUE\";\n\n/**\n * Describes the enum buf.validate.KnownRegex.\n */\nexport const KnownRegexSchema: GenEnum<KnownRegex, KnownRegexJson> = /*@__PURE__*/\n enumDesc(file_buf_validate_validate, 1);\n\n/**\n * Rules specify the validations to be performed on this message. By default,\n * no validation is performed against a message.\n *\n * @generated from extension: optional buf.validate.MessageConstraints message = 1159;\n */\nexport const message: GenExtension<MessageOptions, MessageConstraints> = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 0);\n\n/**\n * Rules specify the validations to be performed on this oneof. By default,\n * no validation is performed against a oneof.\n *\n * @generated from extension: optional buf.validate.OneofConstraints oneof = 1159;\n */\nexport const oneof: GenExtension<OneofOptions, OneofConstraints> = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 1);\n\n/**\n * Rules specify the validations to be performed on this field. By default,\n * no validation is performed against a field.\n *\n * @generated from extension: optional buf.validate.FieldConstraints field = 1159;\n */\nexport const field: GenExtension<FieldOptions, FieldConstraints> = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 2);\n\n/**\n * Specifies predefined rules. When extending a standard constraint message,\n * this adds additional CEL expressions that apply when the extension is used.\n *\n * ```proto\n * extend buf.validate.Int32Rules {\n * bool is_zero [(buf.validate.predefined).cel = {\n * id: \"int32.is_zero\",\n * message: \"value must be zero\",\n * expression: \"!rule || this == 0\",\n * }];\n * }\n *\n * message Foo {\n * int32 reserved = 1 [(buf.validate.field).int32.(is_zero) = true];\n * }\n * ```\n *\n * @generated from extension: optional buf.validate.PredefinedConstraints predefined = 1160;\n */\nexport const predefined: GenExtension<FieldOptions, PredefinedConstraints> = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 3);\n\n", "// Copyright 2024 Google LLC\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 v2.2.3 with parameter \"target=ts,json_types=true,ts_nocheck=true\"\n// @generated from file google/api/http.proto (package google.api, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv1\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv1\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/api/http.proto.\n */\nexport const file_google_api_http: GenFile = /*@__PURE__*/\n fileDesc(\"ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJqCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25z+AEBogIER0FQSWIGcHJvdG8z\");\n\n/**\n * Defines the HTTP configuration for an API service. It contains a list of\n * [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method\n * to one or more HTTP REST API methods.\n *\n * @generated from message google.api.Http\n */\nexport type Http = Message<\"google.api.Http\"> & {\n /**\n * A list of HTTP configuration rules that apply to individual API methods.\n *\n * **NOTE:** All service configuration rules follow \"last one wins\" order.\n *\n * @generated from field: repeated google.api.HttpRule rules = 1;\n */\n rules: HttpRule[];\n\n /**\n * When set to true, URL path parameters will be fully URI-decoded except in\n * cases of single segment matches in reserved expansion, where \"%2F\" will be\n * left encoded.\n *\n * The default behavior is to not decode RFC 6570 reserved characters in multi\n * segment matches.\n *\n * @generated from field: bool fully_decode_reserved_expansion = 2;\n */\n fullyDecodeReservedExpansion: boolean;\n};\n\n/**\n * Defines the HTTP configuration for an API service. It contains a list of\n * [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method\n * to one or more HTTP REST API methods.\n *\n * @generated from message google.api.Http\n */\nexport type HttpJson = {\n /**\n * A list of HTTP configuration rules that apply to individual API methods.\n *\n * **NOTE:** All service configuration rules follow \"last one wins\" order.\n *\n * @generated from field: repeated google.api.HttpRule rules = 1;\n */\n rules?: HttpRuleJson[];\n\n /**\n * When set to true, URL path parameters will be fully URI-decoded except in\n * cases of single segment matches in reserved expansion, where \"%2F\" will be\n * left encoded.\n *\n * The default behavior is to not decode RFC 6570 reserved characters in multi\n * segment matches.\n *\n * @generated from field: bool fully_decode_reserved_expansion = 2;\n */\n fullyDecodeReservedExpansion?: boolean;\n};\n\n/**\n * Describes the message google.api.Http.\n * Use `create(HttpSchema)` to create a new message.\n */\nexport const HttpSchema: GenMessage<Http, HttpJson> = /*@__PURE__*/\n messageDesc(file_google_api_http, 0);\n\n/**\n * gRPC Transcoding\n *\n * gRPC Transcoding is a feature for mapping between a gRPC method and one or\n * more HTTP REST endpoints. It allows developers to build a single API service\n * that supports both gRPC APIs and REST APIs. Many systems, including [Google\n * APIs](https://github.com/googleapis/googleapis),\n * [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\n * Gateway](https://github.com/grpc-ecosystem/grpc-gateway),\n * and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\n * and use it for large scale production services.\n *\n * `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\n * how different portions of the gRPC request message are mapped to the URL\n * path, URL query parameters, and HTTP request body. It also controls how the\n * gRPC response message is mapped to the HTTP response body. `HttpRule` is\n * typically specified as an `google.api.http` annotation on the gRPC method.\n *\n * Each mapping specifies a URL path template and an HTTP method. The path\n * template may refer to one or more fields in the gRPC request message, as long\n * as each field is a non-repeated field with a primitive (non-message) type.\n * The path template controls how fields of the request message are mapped to\n * the URL path.\n *\n * Example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get: \"/v1/{name=messages/*}\"\n * };\n * }\n * }\n * message GetMessageRequest {\n * string name = 1; // Mapped to URL path.\n * }\n * message Message {\n * string text = 1; // The resource content.\n * }\n *\n * This enables an HTTP REST to gRPC mapping as below:\n *\n * - HTTP: `GET /v1/messages/123456`\n * - gRPC: `GetMessage(name: \"messages/123456\")`\n *\n * Any fields in the request message which are not bound by the path template\n * automatically become HTTP query parameters if there is no HTTP request body.\n * For example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get:\"/v1/messages/{message_id}\"\n * };\n * }\n * }\n * message GetMessageRequest {\n * message SubMessage {\n * string subfield = 1;\n * }\n * string message_id = 1; // Mapped to URL path.\n * int64 revision = 2; // Mapped to URL query parameter `revision`.\n * SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.\n * }\n *\n * This enables a HTTP JSON to RPC mapping as below:\n *\n * - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo`\n * - gRPC: `GetMessage(message_id: \"123456\" revision: 2 sub:\n * SubMessage(subfield: \"foo\"))`\n *\n * Note that fields which are mapped to URL query parameters must have a\n * primitive type or a repeated primitive type or a non-repeated message type.\n * In the case of a repeated type, the parameter can be repeated in the URL\n * as `...?param=A¶m=B`. In the case of a message type, each field of the\n * message is mapped to a separate parameter, such as\n * `...?foo.a=A&foo.b=B&foo.c=C`.\n *\n * For HTTP methods that allow a request body, the `body` field\n * specifies the mapping. Consider a REST update method on the\n * message resource collection:\n *\n * service Messaging {\n * rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * patch: \"/v1/messages/{message_id}\"\n * body: \"message\"\n * };\n * }\n * }\n * message UpdateMessageRequest {\n * string message_id = 1; // mapped to the URL\n * Message message = 2; // mapped to the body\n * }\n *\n * The following HTTP JSON to RPC mapping is enabled, where the\n * representation of the JSON in the request body is determined by\n * protos JSON encoding:\n *\n * - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n * - gRPC: `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n *\n * The special name `*` can be used in the body mapping to define that\n * every field not bound by the path template should be mapped to the\n * request body. This enables the following alternative definition of\n * the update method:\n *\n * service Messaging {\n * rpc UpdateMessage(Message) returns (Message) {\n * option (google.api.http) = {\n * patch: \"/v1/messages/{message_id}\"\n * body: \"*\"\n * };\n * }\n * }\n * message Message {\n * string message_id = 1;\n * string text = 2;\n * }\n *\n *\n * The following HTTP JSON to RPC mapping is enabled:\n *\n * - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n * - gRPC: `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n *\n * Note that when using `*` in the body mapping, it is not possible to\n * have HTTP parameters, as all fields not bound by the path end in\n * the body. This makes this option more rarely used in practice when\n * defining REST APIs. The common usage of `*` is in custom methods\n * which don't use the URL at all for transferring data.\n *\n * It is possible to define multiple HTTP methods for one RPC by using\n * the `additional_bindings` option. Example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get: \"/v1/messages/{message_id}\"\n * additional_bindings {\n * get: \"/v1/users/{user_id}/messages/{message_id}\"\n * }\n * };\n * }\n * }\n * message GetMessageRequest {\n * string message_id = 1;\n * string user_id = 2;\n * }\n *\n * This enables the following two alternative HTTP JSON to RPC mappings:\n *\n * - HTTP: `GET /v1/messages/123456`\n * - gRPC: `GetMessage(message_id: \"123456\")`\n *\n * - HTTP: `GET /v1/users/me/messages/123456`\n * - gRPC: `GetMessage(user_id: \"me\" message_id: \"123456\")`\n *\n * Rules for HTTP mapping\n *\n * 1. Leaf request fields (recursive expansion nested messages in the request\n * message) are classified into three categories:\n * - Fields referred by the path template. They are passed via the URL path.\n * - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They\n * are passed via the HTTP\n * request body.\n * - All other fields are passed via the URL query parameters, and the\n * parameter name is the field path in the request message. A repeated\n * field can be represented as multiple query parameters under the same\n * name.\n * 2. If [HttpRule.body][google.api.HttpRule.body] is \"*\", there is no URL\n * query parameter, all fields\n * are passed via URL path and HTTP request body.\n * 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP\n * request body, all\n * fields are passed via URL path and URL query parameters.\n *\n * Path template syntax\n *\n * Template = \"/\" Segments [ Verb ] ;\n * Segments = Segment { \"/\" Segment } ;\n * Segment = \"*\" | \"**\" | LITERAL | Variable ;\n * Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n * FieldPath = IDENT { \".\" IDENT } ;\n * Verb = \":\" LITERAL ;\n *\n * The syntax `*` matches a single URL path segment. The syntax `**` matches\n * zero or more URL path segments, which must be the last part of the URL path\n * except the `Verb`.\n *\n * The syntax `Variable` matches part of the URL path as specified by its\n * template. A variable template must not contain other variables. If a variable\n * matches a single path segment, its template may be omitted, e.g. `{var}`\n * is equivalent to `{var=*}`.\n *\n * The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\n * contains any reserved character, such characters should be percent-encoded\n * before the matching.\n *\n * If a variable contains exactly one path segment, such as `\"{var}\"` or\n * `\"{var=*}\"`, when such a variable is expanded into a URL path on the client\n * side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\n * server side does the reverse decoding. Such variables show up in the\n * [Discovery\n * Document](https://developers.google.com/discovery/v1/reference/apis) as\n * `{var}`.\n *\n * If a variable contains multiple path segments, such as `\"{var=foo/*}\"`\n * or `\"{var=**}\"`, when such a variable is expanded into a URL path on the\n * client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\n * The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\n * unchanged. Such variables show up in the\n * [Discovery\n * Document](https://developers.google.com/discovery/v1/reference/apis) as\n * `{+var}`.\n *\n * Using gRPC API Service Configuration\n *\n * gRPC API Service Configuration (service config) is a configuration language\n * for configuring a gRPC service to become a user-facing product. The\n * service config is simply the YAML representation of the `google.api.Service`\n * proto message.\n *\n * As an alternative to annotating your proto file, you can configure gRPC\n * transcoding in your service config YAML files. You do this by specifying a\n * `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\n * effect as the proto annotation. This can be particularly useful if you\n * have a proto that is reused in multiple services. Note that any transcoding\n * specified in the service config will override any matching transcoding\n * configuration in the proto.\n *\n * The following example selects a gRPC method and applies an `HttpRule` to it:\n *\n * http:\n * rules:\n * - selector: example.v1.Messaging.GetMessage\n * get: /v1/messages/{message_id}/{sub.subfield}\n *\n * Special notes\n *\n * When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\n * proto to JSON conversion must follow the [proto3\n * specification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n *\n * While the single segment variable follows the semantics of\n * [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\n * Expansion, the multi segment variable **does not** follow RFC 6570 Section\n * 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\n * does not expand special characters like `?` and `#`, which would lead\n * to invalid URLs. As the result, gRPC Transcoding uses a custom encoding\n * for multi segment variables.\n *\n * The path variables **must not** refer to any repeated or mapped field,\n * because client libraries are not capable of handling such variable expansion.\n *\n * The path variables **must not** capture the leading \"/\" character. The reason\n * is that the most common use case \"{var}\" does not capture the leading \"/\"\n * character. For consistency, all path variables must share the same behavior.\n *\n * Repeated message fields must not be mapped to URL query parameters, because\n * no client library can support such complicated mapping.\n *\n * If an API needs to use a JSON array for request or response body, it can map\n * the request or response body to a repeated field. However, some gRPC\n * Transcoding implementations may not support this feature.\n *\n * @generated from message google.api.HttpRule\n */\nexport type HttpRule = Message<\"google.api.HttpRule\"> & {\n /**\n * Selects a method to which this rule applies.\n *\n * Refer to [selector][google.api.DocumentationRule.selector] for syntax\n * details.\n *\n * @generated from field: string selector = 1;\n */\n selector: string;\n\n /**\n * Determines the URL pattern is matched by this rules. This pattern can be\n * used with any of the {get|put|post|delete|patch} methods. A custom method\n * can be defined using the 'custom' field.\n *\n * @generated from oneof google.api.HttpRule.pattern\n */\n pattern: {\n /**\n * Maps to HTTP GET. Used for listing and getting information about\n * resources.\n *\n * @generated from field: string get = 2;\n */\n value: string;\n case: \"get\";\n } | {\n /**\n * Maps to HTTP PUT. Used for replacing a resource.\n *\n * @generated from field: string put = 3;\n */\n value: string;\n case: \"put\";\n } | {\n /**\n * Maps to HTTP POST. Used for creating a resource or performing an action.\n *\n * @generated from field: string post = 4;\n */\n value: string;\n case: \"post\";\n } | {\n /**\n * Maps to HTTP DELETE. Used for deleting a resource.\n *\n * @generated from field: string delete = 5;\n */\n value: string;\n case: \"delete\";\n } | {\n /**\n * Maps to HTTP PATCH. Used for updating a resource.\n *\n * @generated from field: string patch = 6;\n */\n value: string;\n case: \"patch\";\n } | {\n /**\n * The custom pattern is used for specifying an HTTP method that is not\n * included in the `pattern` field, such as HEAD, or \"*\" to leave the\n * HTTP method unspecified for this rule. The wild-card rule is useful\n * for services that provide content to Web (HTML) clients.\n *\n * @generated from field: google.api.CustomHttpPattern custom = 8;\n */\n value: CustomHttpPattern;\n case: \"custom\";\n } | { case: undefined; value?: undefined };\n\n /**\n * The name of the request field whose value is mapped to the HTTP request\n * body, or `*` for mapping all request fields not captured by the path\n * pattern to the HTTP body, or omitted for not having any HTTP request body.\n *\n * NOTE: the referred field must be present at the top-level of the request\n * message type.\n *\n * @generated from field: string body = 7;\n */\n body: string;\n\n /**\n * Optional. The name of the response field whose value is mapped to the HTTP\n * response body. When omitted, the entire response message will be used\n * as the HTTP response body.\n *\n * NOTE: The referred field must be present at the top-level of the response\n * message type.\n *\n * @generated from field: string response_body = 12;\n */\n responseBody: string;\n\n /**\n * Additional HTTP bindings for the selector. Nested bindings must\n * not contain an `additional_bindings` field themselves (that is,\n * the nesting may only be one level deep).\n *\n * @generated from field: repeated google.api.HttpRule additional_bindings = 11;\n */\n additionalBindings: HttpRule[];\n};\n\n/**\n * gRPC Transcoding\n *\n * gRPC Transcoding is a feature for mapping between a gRPC method and one or\n * more HTTP REST endpoints. It allows developers to build a single API service\n * that supports both gRPC APIs and REST APIs. Many systems, including [Google\n * APIs](https://github.com/googleapis/googleapis),\n * [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\n * Gateway](https://github.com/grpc-ecosystem/grpc-gateway),\n * and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\n * and use it for large scale production services.\n *\n * `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\n * how different portions of the gRPC request message are mapped to the URL\n * path, URL query parameters, and HTTP request body. It also controls how the\n * gRPC response message is mapped to the HTTP response body. `HttpRule` is\n * typically specified as an `google.api.http` annotation on the gRPC method.\n *\n * Each mapping specifies a URL path template and an HTTP method. The path\n * template may refer to one or more fields in the gRPC request message, as long\n * as each field is a non-repeated field with a primitive (non-message) type.\n * The path template controls how fields of the request message are mapped to\n * the URL path.\n *\n * Example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get: \"/v1/{name=messages/*}\"\n * };\n * }\n * }\n * message GetMessageRequest {\n * string name = 1; // Mapped to URL path.\n * }\n * message Message {\n * string text = 1; // The resource content.\n * }\n *\n * This enables an HTTP REST to gRPC mapping as below:\n *\n * - HTTP: `GET /v1/messages/123456`\n * - gRPC: `GetMessage(name: \"messages/123456\")`\n *\n * Any fields in the request message which are not bound by the path template\n * automatically become HTTP query parameters if there is no HTTP request body.\n * For example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get:\"/v1/messages/{message_id}\"\n * };\n * }\n * }\n * message GetMessageRequest {\n * message SubMessage {\n * string subfield = 1;\n * }\n * string message_id = 1; // Mapped to URL path.\n * int64 revision = 2; // Mapped to URL query parameter `revision`.\n * SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`.\n * }\n *\n * This enables a HTTP JSON to RPC mapping as below:\n *\n * - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo`\n * - gRPC: `GetMessage(message_id: \"123456\" revision: 2 sub:\n * SubMessage(subfield: \"foo\"))`\n *\n * Note that fields which are mapped to URL query parameters must have a\n * primitive type or a repeated primitive type or a non-repeated message type.\n * In the case of a repeated type, the parameter can be repeated in the URL\n * as `...?param=A¶m=B`. In the case of a message type, each field of the\n * message is mapped to a separate parameter, such as\n * `...?foo.a=A&foo.b=B&foo.c=C`.\n *\n * For HTTP methods that allow a request body, the `body` field\n * specifies the mapping. Consider a REST update method on the\n * message resource collection:\n *\n * service Messaging {\n * rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * patch: \"/v1/messages/{message_id}\"\n * body: \"message\"\n * };\n * }\n * }\n * message UpdateMessageRequest {\n * string message_id = 1; // mapped to the URL\n * Message message = 2; // mapped to the body\n * }\n *\n * The following HTTP JSON to RPC mapping is enabled, where the\n * representation of the JSON in the request body is determined by\n * protos JSON encoding:\n *\n * - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n * - gRPC: `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n *\n * The special name `*` can be used in the body mapping to define that\n * every field not bound by the path template should be mapped to the\n * request body. This enables the following alternative definition of\n * the update method:\n *\n * service Messaging {\n * rpc UpdateMessage(Message) returns (Message) {\n * option (google.api.http) = {\n * patch: \"/v1/messages/{message_id}\"\n * body: \"*\"\n * };\n * }\n * }\n * message Message {\n * string message_id = 1;\n * string text = 2;\n * }\n *\n *\n * The following HTTP JSON to RPC mapping is enabled:\n *\n * - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n * - gRPC: `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n *\n * Note that when using `*` in the body mapping, it is not possible to\n * have HTTP parameters, as all fields not bound by the path end in\n * the body. This makes this option more rarely used in practice when\n * defining REST APIs. The common usage of `*` is in custom methods\n * which don't use the URL at all for transferring data.\n *\n * It is possible to define multiple HTTP methods for one RPC by using\n * the `additional_bindings` option. Example:\n *\n * service Messaging {\n * rpc GetMessage(GetMessageRequest) returns (Message) {\n * option (google.api.http) = {\n * get: \"/v1/messages/{message_id}\"\n * additional_bindings {\n * get: \"/v1/users/{user_id}/messages/{message_id}\"\n * }\n * };\n * }\n * }\n * message GetMessageRequest {\n * string message_id = 1;\n * string user_id = 2;\n * }\n *\n * This enables the following two alternative HTTP JSON to RPC mappings:\n *\n * - HTTP: `GET /v1/messages/123456`\n * - gRPC: `GetMessage(message_id: \"123456\")`\n *\n * - HTTP: `GET /v1/users/me/messages/123456`\n * - gRPC: `GetMessage(user_id: \"me\" message_id: \"123456\")`\n *\n * Rules for HTTP mapping\n *\n * 1. Leaf request fields (recursive expansion nested messages in the request\n * message) are classified into three categories:\n * - Fields referred by the path template. They are passed via the URL path.\n * - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They\n * are passed via the HTTP\n * request body.\n * - All other fields are passed via the URL query parameters, and the\n * parameter name is the field path in the request message. A repeated\n * field can be represented as multiple query parameters under the same\n * name.\n * 2. If [HttpRule.body][google.api.HttpRule.body] is \"*\", there is no URL\n * query parameter, all fields\n * are passed via URL path and HTTP request body.\n * 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP\n * request body, all\n * fields are passed via URL path and URL query parameters.\n *\n * Path template syntax\n *\n * Template = \"/\" Segments [ Verb ] ;\n * Segments = Segment { \"/\" Segment } ;\n * Segment = \"*\" | \"**\" | LITERAL | Variable ;\n * Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n * FieldPath = IDENT { \".\" IDENT } ;\n * Verb = \":\" LITERAL ;\n *\n * The syntax `*` matches a single URL path segment. The syntax `**` matches\n * zero or more URL path segments, which must be the last part of the URL path\n * except the `Verb`.\n *\n * The syntax `Variable` matches part of the URL path as specified by its\n * template. A variable template must not contain other variables. If a variable\n * matches a single path segment, its template may be omitted, e.g. `{var}`\n * is equivalent to `{var=*}`.\n *\n * The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\n * contains any reserved character, such characters should be percent-encoded\n * before the matching.\n *\n * If a variable contains exactly one path segment, such as `\"{var}\"` or\n * `\"{var=*}\"`, when such a variable is expanded into a URL path on the client\n * side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\n * server side does the reverse decoding. Such variables show up in the\n * [Discovery\n * Document](https://developers.google.com/discovery/v1/reference/apis) as\n * `{var}`.\n *\n * If a variable contains multiple path segments, such as `\"{var=foo/*}\"`\n * or `\"{var=**}\"`, when such a variable is expanded into a URL path on the\n * client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\n * The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\n * unchanged. Such variables show up in the\n * [Discovery\n * Document](https://developers.google.com/discovery/v1/reference/apis) as\n * `{+var}`.\n *\n * Using gRPC API Service Configuration\n *\n * gRPC API Service Configuration (service config) is a configuration language\n * for configuring a gRPC service to become a user-facing product. The\n * service config is simply the YAML representation of the `google.api.Service`\n * proto message.\n *\n * As an alternative to annotating your proto file, you can configure gRPC\n * transcoding in your service config YAML files. You do this by specifying a\n * `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\n * effect as the proto annotation. This can be particularly useful if you\n * have a proto that is reused in multiple services. Note that any transcoding\n * specified in the service config will override any matching transcoding\n * configuration in the proto.\n *\n * The following example selects a gRPC method and applies an `HttpRule` to it:\n *\n * http:\n * rules:\n * - selector: example.v1.Messaging.GetMessage\n * get: /v1/messages/{message_id}/{sub.subfield}\n *\n * Special notes\n *\n * When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\n * proto to JSON conversion must follow the [proto3\n * specification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n *\n * While the single segment variable follows the semantics of\n * [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\n * Expansion, the multi segment variable **does not** follow RFC 6570 Section\n * 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\n * does not expand special characters like `?` and `#`, which would lead\n * to invalid URLs. As the result, gRPC Transcoding uses a custom encoding\n * for multi segment variables.\n *\n * The path variables **must not** refer to any repeated or mapped field,\n * because client libraries are not capable of handling such variable expansion.\n *\n * The path variables **must not** capture the leading \"/\" character. The reason\n * is that the most common use case \"{var}\" does not capture the leading \"/\"\n * character. For consistency, all path variables must share the same behavior.\n *\n * Repeated message fields must not be mapped to URL query parameters, because\n * no client library can support such complicated mapping.\n *\n * If an API needs to use a JSON array for request or response body, it can map\n * the request or response body to a repeated field. However, some gRPC\n * Transcoding implementations may not support this feature.\n *\n * @generated from message google.api.HttpRule\n */\nexport type HttpRuleJson = {\n /**\n * Selects a method to which this rule applies.\n *\n * Refer to [selector][google.api.DocumentationRule.selector] for syntax\n * details.\n *\n * @generated from field: string selector = 1;\n */\n selector?: string;\n\n /**\n * Maps to HTTP GET. Used for listing and getting information about\n * resources.\n *\n * @generated from field: string get = 2;\n */\n get?: string;\n\n /**\n * Maps to HTTP PUT. Used for replacing a resource.\n *\n * @generated from field: string put = 3;\n */\n put?: string;\n\n /**\n * Maps to HTTP POST. Used for creating a resource or performing an action.\n *\n * @generated from field: string post = 4;\n */\n post?: string;\n\n /**\n * Maps to HTTP DELETE. Used for deleting a resource.\n *\n * @generated from field: string delete = 5;\n */\n delete?: string;\n\n /**\n * Maps to HTTP PATCH. Used for updating a resource.\n *\n * @generated from field: string patch = 6;\n */\n patch?: string;\n\n /**\n * The custom pattern is used for specifying an HTTP method that is not\n * included in the `pattern` field, such as HEAD, or \"*\" to leave the\n * HTTP method unspecified for this rule. The wild-card rule is useful\n * for services that provide content to Web (HTML) clients.\n *\n * @generated from field: google.api.CustomHttpPattern custom = 8;\n */\n custom?: CustomHttpPatternJson;\n\n /**\n * The name of the request field whose value is mapped to the HTTP request\n * body, or `*` for mapping all request fields not captured by the path\n * pattern to the HTTP body, or omitted for not having any HTTP request body.\n *\n * NOTE: the referred field must be present at the top-level of the request\n * message type.\n *\n * @generated from field: string body = 7;\n */\n body?: string;\n\n /**\n * Optional. The name of the response field whose value is mapped to the HTTP\n * response body. When omitted, the entire response message will be used\n * as the HTTP response body.\n *\n * NOTE: The referred field must be present at the top-level of the response\n * message type.\n *\n * @generated from field: string response_body = 12;\n */\n responseBody?: string;\n\n /**\n * Additional HTTP bindings for the selector. Nested bindings must\n * not contain an `additional_bindings` field themselves (that is,\n * the nesting may only be one level deep).\n *\n * @generated from field: repeated google.api.HttpRule additional_bindings = 11;\n */\n additionalBindings?: HttpRuleJson[];\n};\n\n/**\n * Describes the message google.api.HttpRule.\n * Use `create(HttpRuleSchema)` to create a new message.\n */\nexport const HttpRuleSchema: GenMessage<HttpRule, HttpRuleJson> = /*@__PURE__*/\n messageDesc(file_google_api_http, 1);\n\n/**\n * A custom pattern is used for defining custom HTTP verb.\n *\n * @generated from message google.api.CustomHttpPattern\n */\nexport type CustomHttpPattern = Message<\"google.api.CustomHttpPattern\"> & {\n /**\n * The name of this custom HTTP verb.\n *\n * @generated from field: string kind = 1;\n */\n kind: string;\n\n /**\n * The path matched by this custom verb.\n *\n * @generated from field: string path = 2;\n */\n path: string;\n};\n\n/**\n * A custom pattern is used for defining custom HTTP verb.\n *\n * @generated from message google.api.CustomHttpPattern\n */\nexport type CustomHttpPatternJson = {\n /**\n * The name of this custom HTTP verb.\n *\n * @generated from field: string kind = 1;\n */\n kind?: string;\n\n /**\n * The path matched by this custom verb.\n *\n * @generated from field: string path = 2;\n */\n path?: string;\n};\n\n/**\n * Describes the message google.api.CustomHttpPattern.\n * Use `create(CustomHttpPatternSchema)` to create a new message.\n */\nexport const CustomHttpPatternSchema: GenMessage<CustomHttpPattern, CustomHttpPatternJson> = /*@__PURE__*/\n messageDesc(file_google_api_http, 2);\n\n", "// Copyright 2024 Google LLC\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 v2.2.3 with parameter \"target=ts,json_types=true,ts_nocheck=true\"\n// @generated from file google/api/annotations.proto (package google.api, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenExtension, GenFile } from \"@bufbuild/protobuf/codegenv1\";\nimport { extDesc, fileDesc } from \"@bufbuild/protobuf/codegenv1\";\nimport type { HttpRule } from \"./http_pb\";\nimport { file_google_api_http } from \"./http_pb\";\nimport type { MethodOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Describes the file google/api/annotations.proto.\n */\nexport const file_google_api_annotations: GenFile = /*@__PURE__*/\n fileDesc(\"Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM\", [file_google_api_http, file_google_protobuf_descriptor]);\n\n/**\n * See `HttpRule`.\n *\n * @generated from extension: google.api.HttpRule http = 72295728;\n */\nexport const http: GenExtension<MethodOptions, HttpRule> = /*@__PURE__*/\n extDesc(file_google_api_annotations, 0);\n\n", "// Copyright 2024 Google LLC\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 v2.2.3 with parameter \"target=ts,json_types=true,ts_nocheck=true\"\n// @generated from file google/api/launch_stage.proto (package google.api, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenEnum, GenFile } from \"@bufbuild/protobuf/codegenv1\";\nimport { enumDesc, fileDesc } from \"@bufbuild/protobuf/codegenv1\";\n\n/**\n * Describes the file google/api/launch_stage.proto.\n */\nexport const file_google_api_launch_stage: GenFile = /*@__PURE__*/\n fileDesc(\"Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw\");\n\n/**\n * The launch stage as defined by [Google Cloud Platform\n * Launch Stages](https://cloud.google.com/terms/launch-stages).\n *\n * @generated from enum google.api.LaunchStage\n */\nexport enum LaunchStage {\n /**\n * Do not use this default value.\n *\n * @generated from enum value: LAUNCH_STAGE_UNSPECIFIED = 0;\n */\n LAUNCH_STAGE_UNSPECIFIED = 0,\n\n /**\n * The feature is not yet implemented. Users can not use it.\n *\n * @generated from enum value: UNIMPLEMENTED = 6;\n */\n UNIMPLEMENTED = 6,\n\n /**\n * Prelaunch features are hidden from users and are only visible internally.\n *\n * @generated from enum value: PRELAUNCH = 7;\n */\n PRELAUNCH = 7,\n\n /**\n * Early Access features are limited to a closed group of testers. To use\n * these features, you must sign up in advance and sign a Trusted Tester\n * agreement (which includes confidentiality provisions). These features may\n * be unstable, changed in backward-incompatible ways, and are not\n * guaranteed to be released.\n *\n * @generated from enum value: EARLY_ACCESS = 1;\n */\n EARLY_ACCESS = 1,\n\n /**\n * Alpha is a limited availability test for releases before they are cleared\n * for widespread use. By Alpha, all significant design issues are resolved\n * and we are in the process of verifying functionality. Alpha customers\n * need to apply for access, agree to applicable terms, and have their\n * projects allowlisted. Alpha releases don't have to be feature complete,\n * no SLAs are provided, and there are no technical support obligations, but\n * they will be far enough along that customers can actually use them in\n * test environments or for limited-use tests -- just like they would in\n * normal production cases.\n *\n * @generated from enum value: ALPHA = 2;\n */\n ALPHA = 2,\n\n /**\n * Beta is the point at which we are ready to open a release for any\n * customer to use. There are no SLA or technical support obligations in a\n * Beta release. Products will be complete from a feature perspective, but\n * may have some open outstanding issues. Beta releases are suitable for\n * limited production use cases.\n *\n * @generated from enum value: BETA = 3;\n */\n BETA = 3,\n\n /**\n * GA features are open to all developers and are considered stable and\n * fully qualified for production use.\n *\n * @generated from enum value: GA = 4;\n */\n GA = 4,\n\n /**\n * Deprecated features are scheduled to be shut down and removed. For more\n * information, see the \"Deprecation Policy\" section of our [Terms of\n * Service](https://cloud.google.com/terms/)\n * and the [Google Cloud Platform Subject to the Deprecation\n * Policy](https://cloud.google.com/terms/deprecation) documentation.\n *\n * @generated from enum value: DEPRECATED = 5;\n */\n DEPRECATED = 5,\n}\n\n/**\n * The launch stage as defined by [Google Cloud Platform\n * Launch Stages](https://cloud.google.com/terms/launch-stages).\n *\n * @generated from enum google.api.LaunchStage\n */\nexport type LaunchStageJson = \"LAUNCH_STAGE_UNSPECIFIED\" | \"UNIMPLEMENTED\" | \"PRELAUNCH\" | \"EARLY_ACCESS\" | \"ALPHA\" | \"BETA\" | \"GA\" | \"DEPRECATED\";\n\n/**\n * Describes the enum google.api.LaunchStage.\n */\nexport const LaunchStageSchema: GenEnum<LaunchStage, LaunchStageJson> = /*@__PURE__*/\n enumDesc(file_google_api_launch_stage, 0);\n\n", "// Copyright 2024 Google LLC\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 v2.2.3 with parameter \"target=ts,json_types=true,ts_nocheck=true\"\n// @generated from file google/api/client.proto (package google.api, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv1\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv1\";\nimport type { LaunchStage, LaunchStageJson } from \"./launch_stage_pb\";\nimport { file_google_api_launch_stage } from \"./launch_stage_pb\";\nimport type { Duration, DurationJson, MethodOptions, ServiceOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor, file_google_protobuf_duration } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/api/client.proto.\n */\nexport const file_google_api_client: GenFile = /*@__PURE__*/\n fileDesc(\"Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyL0AQoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMaXgoURXhwZXJpbWVudGFsRmVhdHVyZXMSHQoVcmVzdF9hc3luY19pb19lbmFibGVkGAEgASgIEicKH3Byb3RvYnVmX3B5dGhvbmljX3R5cGVzX2VuYWJsZWQYAiABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiIrChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCSqjAQoZQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhIrCidDTElFTlRfTElCUkFSWV9PUkdBTklaQVRJT05fVU5TUEVDSUZJRUQQABIJCgVDTE9VRBABEgcKA0FEUxACEgoKBlBIT1RPUxADEg8KC1NUUkVFVF9WSUVXEAQSDAoIU0hPUFBJTkcQBRIHCgNHRU8QBhIRCg1HRU5FUkFUSVZFX0FJEAcqZwoYQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEioKJkNMSUVOVF9MSUJSQVJZX0RFU1RJTkFUSU9OX1VOU1BFQ0lGSUVEEAASCgoGR0lUSFVCEAoSEwoPUEFDS0FHRV9NQU5BR0VSEBQ6SgoQbWV0aG9kX3NpZ25hdHVyZRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJsIIAMoCVIPbWV0aG9kU2lnbmF0dXJlOkMKDGRlZmF1bHRfaG9zdBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiZCCABKAlSC2RlZmF1bHRIb3N0OkMKDG9hdXRoX3Njb3BlcxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiaCCABKAlSC29hdXRoU2NvcGVzOkQKC2FwaV92ZXJzaW9uEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGMG6q/oBIAEoCVIKYXBpVmVyc2lvbkJpCg5jb20uZ29vZ2xlLmFwaUILQ2xpZW50UHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM\", [file_google_api_launch_stage, file_google_protobuf_descriptor, file_google_protobuf_duration]);\n\n/**\n * Required information for every language.\n *\n * @generated from message google.api.CommonLanguageSettings\n */\nexport type CommonLanguageSettings = Message<\"google.api.CommonLanguageSettings\"> & {\n /**\n * Link to automatically generated reference documentation. Example:\n * https://cloud.google.com/nodejs/docs/reference/asset/latest\n *\n * @generated from field: string reference_docs_uri = 1 [deprecated = true];\n * @deprecated\n */\n referenceDocsUri: string;\n\n /**\n * The destination where API teams want this client library to be published.\n *\n * @generated from field: repeated google.api.ClientLibraryDestination destinations = 2;\n */\n destinations: ClientLibraryDestination[];\n\n /**\n * Configuration for which RPCs should be generated in the GAPIC client.\n *\n * @generated from field: google.api.SelectiveGapicGeneration selective_gapic_generation = 3;\n */\n selectiveGapicGeneration?: SelectiveGapicGeneration;\n};\n\n/**\n * Required information for every language.\n *\n * @generated from message google.api.CommonLanguageSettings\n */\nexport type CommonLanguageSettingsJson = {\n /**\n * Link to automatically generated reference documentation. Example:\n * https://cloud.google.com/nodejs/docs/reference/asset/latest\n *\n * @generated from field: string reference_docs_uri = 1 [deprecated = true];\n * @deprecated\n */\n referenceDocsUri?: string;\n\n /**\n * The destination where API teams want this client library to be published.\n *\n * @generated from field: repeated google.api.ClientLibraryDestination destinations = 2;\n */\n destinations?: ClientLibraryDestinationJson[];\n\n /**\n * Configuration for which RPCs should be generated in the GAPIC client.\n *\n * @generated from field: google.api.SelectiveGapicGeneration selective_gapic_generation = 3;\n */\n selectiveGapicGeneration?: SelectiveGapicGenerationJson;\n};\n\n/**\n * Describes the message google.api.CommonLanguageSettings.\n * Use `create(CommonLanguageSettingsSchema)` to create a new message.\n */\nexport const CommonLanguageSettingsSchema: GenMessage<CommonLanguageSettings, CommonLanguageSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 0);\n\n/**\n * Details about how and where to publish client libraries.\n *\n * @generated from message google.api.ClientLibrarySettings\n */\nexport type ClientLibrarySettings = Message<\"google.api.ClientLibrarySettings\"> & {\n /**\n * Version of the API to apply these settings to. This is the full protobuf\n * package for the API, ending in the version element.\n * Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\".\n *\n * @generated from field: string version = 1;\n */\n version: string;\n\n /**\n * Launch stage of this version of the API.\n *\n * @generated from field: google.api.LaunchStage launch_stage = 2;\n */\n launchStage: LaunchStage;\n\n /**\n * When using transport=rest, the client request will encode enums as\n * numbers rather than strings.\n *\n * @generated from field: bool rest_numeric_enums = 3;\n */\n restNumericEnums: boolean;\n\n /**\n * Settings for legacy Java features, supported in the Service YAML.\n *\n * @generated from field: google.api.JavaSettings java_settings = 21;\n */\n javaSettings?: JavaSettings;\n\n /**\n * Settings for C++ client libraries.\n *\n * @generated from field: google.api.CppSettings cpp_settings = 22;\n */\n cppSettings?: CppSettings;\n\n /**\n * Settings for PHP client libraries.\n *\n * @generated from field: google.api.PhpSettings php_settings = 23;\n */\n phpSettings?: PhpSettings;\n\n /**\n * Settings for Python client libraries.\n *\n * @generated from field: google.api.PythonSettings python_settings = 24;\n */\n pythonSettings?: PythonSettings;\n\n /**\n * Settings for Node client libraries.\n *\n * @generated from field: google.api.NodeSettings node_settings = 25;\n */\n nodeSettings?: NodeSettings;\n\n /**\n * Settings for .NET client libraries.\n *\n * @generated from field: google.api.DotnetSettings dotnet_settings = 26;\n */\n dotnetSettings?: DotnetSettings;\n\n /**\n * Settings for Ruby client libraries.\n *\n * @generated from field: google.api.RubySettings ruby_settings = 27;\n */\n rubySettings?: RubySettings;\n\n /**\n * Settings for Go client libraries.\n *\n * @generated from field: google.api.GoSettings go_settings = 28;\n */\n goSettings?: GoSettings;\n};\n\n/**\n * Details about how and where to publish client libraries.\n *\n * @generated from message google.api.ClientLibrarySettings\n */\nexport type ClientLibrarySettingsJson = {\n /**\n * Version of the API to apply these settings to. This is the full protobuf\n * package for the API, ending in the version element.\n * Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\".\n *\n * @generated from field: string version = 1;\n */\n version?: string;\n\n /**\n * Launch stage of this version of the API.\n *\n * @generated from field: google.api.LaunchStage launch_stage = 2;\n */\n launchStage?: LaunchStageJson;\n\n /**\n * When using transport=rest, the client request will encode enums as\n * numbers rather than strings.\n *\n * @generated from field: bool rest_numeric_enums = 3;\n */\n restNumericEnums?: boolean;\n\n /**\n * Settings for legacy Java features, supported in the Service YAML.\n *\n * @generated from field: google.api.JavaSettings java_settings = 21;\n */\n javaSettings?: JavaSettingsJson;\n\n /**\n * Settings for C++ client libraries.\n *\n * @generated from field: google.api.CppSettings cpp_settings = 22;\n */\n cppSettings?: CppSettingsJson;\n\n /**\n * Settings for PHP client libraries.\n *\n * @generated from field: google.api.PhpSettings php_settings = 23;\n */\n phpSettings?: PhpSettingsJson;\n\n /**\n * Settings for Python client libraries.\n *\n * @generated from field: google.api.PythonSettings python_settings = 24;\n */\n pythonSettings?: PythonSettingsJson;\n\n /**\n * Settings for Node client libraries.\n *\n * @generated from field: google.api.NodeSettings node_settings = 25;\n */\n nodeSettings?: NodeSettingsJson;\n\n /**\n * Settings for .NET client libraries.\n *\n * @generated from field: google.api.DotnetSettings dotnet_settings = 26;\n */\n dotnetSettings?: DotnetSettingsJson;\n\n /**\n * Settings for Ruby client libraries.\n *\n * @generated from field: google.api.RubySettings ruby_settings = 27;\n */\n rubySettings?: RubySettingsJson;\n\n /**\n * Settings for Go client libraries.\n *\n * @generated from field: google.api.GoSettings go_settings = 28;\n */\n goSettings?: GoSettingsJson;\n};\n\n/**\n * Describes the message google.api.ClientLibrarySettings.\n * Use `create(ClientLibrarySettingsSchema)` to create a new message.\n */\nexport const ClientLibrarySettingsSchema: GenMessage<ClientLibrarySettings, ClientLibrarySettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 1);\n\n/**\n * This message configures the settings for publishing [Google Cloud Client\n * libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)\n * generated from the service config.\n *\n * @generated from message google.api.Publishing\n */\nexport type Publishing = Message<\"google.api.Publishing\"> & {\n /**\n * A list of API method settings, e.g. the behavior for methods that use the\n * long-running operation pattern.\n *\n * @generated from field: repeated google.api.MethodSettings method_settings = 2;\n */\n methodSettings: MethodSettings[];\n\n /**\n * Link to a *public* URI where users can report issues. Example:\n * https://issuetracker.google.com/issues/new?component=190865&template=1161103\n *\n * @generated from field: string new_issue_uri = 101;\n */\n newIssueUri: string;\n\n /**\n * Link to product home page. Example:\n * https://cloud.google.com/asset-inventory/docs/overview\n *\n * @generated from field: string documentation_uri = 102;\n */\n documentationUri: string;\n\n /**\n * Used as a tracking tag when collecting data about the APIs developer\n * relations artifacts like docs, packages delivered to package managers,\n * etc. Example: \"speech\".\n *\n * @generated from field: string api_short_name = 103;\n */\n apiShortName: string;\n\n /**\n * GitHub label to apply to issues and pull requests opened for this API.\n *\n * @generated from field: string github_label = 104;\n */\n githubLabel: string;\n\n /**\n * GitHub teams to be added to CODEOWNERS in the directory in GitHub\n * containing source code for the client libraries for this API.\n *\n * @generated from field: repeated string codeowner_github_teams = 105;\n */\n codeownerGithubTeams: string[];\n\n /**\n * A prefix used in sample code when demarking regions to be included in\n * documentation.\n *\n * @generated from field: string doc_tag_prefix = 106;\n */\n docTagPrefix: string;\n\n /**\n * For whom the client library is being published.\n *\n * @generated from field: google.api.ClientLibraryOrganization organization = 107;\n */\n organization: ClientLibraryOrganization;\n\n /**\n * Client library settings. If the same version string appears multiple\n * times in this list, then the last one wins. Settings from earlier\n * settings with the same version string are discarded.\n *\n * @generated from field: repeated google.api.ClientLibrarySettings library_settings = 109;\n */\n librarySettings: ClientLibrarySettings[];\n\n /**\n * Optional link to proto reference documentation. Example:\n * https://cloud.google.com/pubsub/lite/docs/reference/rpc\n *\n * @generated from field: string proto_reference_documentation_uri = 110;\n */\n protoReferenceDocumentationUri: string;\n\n /**\n * Optional link to REST reference documentation. Example:\n * https://cloud.google.com/pubsub/lite/docs/reference/rest\n *\n * @generated from field: string rest_reference_documentation_uri = 111;\n */\n restReferenceDocumentationUri: string;\n};\n\n/**\n * This message configures the settings for publishing [Google Cloud Client\n * libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)\n * generated from the service config.\n *\n * @generated from message google.api.Publishing\n */\nexport type PublishingJson = {\n /**\n * A list of API method settings, e.g. the behavior for methods that use the\n * long-running operation pattern.\n *\n * @generated from field: repeated google.api.MethodSettings method_settings = 2;\n */\n methodSettings?: MethodSettingsJson[];\n\n /**\n * Link to a *public* URI where users can report issues. Example:\n * https://issuetracker.google.com/issues/new?component=190865&template=1161103\n *\n * @generated from field: string new_issue_uri = 101;\n */\n newIssueUri?: string;\n\n /**\n * Link to product home page. Example:\n * https://cloud.google.com/asset-inventory/docs/overview\n *\n * @generated from field: string documentation_uri = 102;\n */\n documentationUri?: string;\n\n /**\n * Used as a tracking tag when collecting data about the APIs developer\n * relations artifacts like docs, packages delivered to package managers,\n * etc. Example: \"speech\".\n *\n * @generated from field: string api_short_name = 103;\n */\n apiShortName?: string;\n\n /**\n * GitHub label to apply to issues and pull requests opened for this API.\n *\n * @generated from field: string github_label = 104;\n */\n githubLabel?: string;\n\n /**\n * GitHub teams to be added to CODEOWNERS in the directory in GitHub\n * containing source code for the client libraries for this API.\n *\n * @generated from field: repeated string codeowner_github_teams = 105;\n */\n codeownerGithubTeams?: string[];\n\n /**\n * A prefix used in sample code when demarking regions to be included in\n * documentation.\n *\n * @generated from field: string doc_tag_prefix = 106;\n */\n docTagPrefix?: string;\n\n /**\n * For whom the client library is being published.\n *\n * @generated from field: google.api.ClientLibraryOrganization organization = 107;\n */\n organization?: ClientLibraryOrganizationJson;\n\n /**\n * Client library settings. If the same version string appears multiple\n * times in this list, then the last one wins. Settings from earlier\n * settings with the same version string are discarded.\n *\n * @generated from field: repeated google.api.ClientLibrarySettings library_settings = 109;\n */\n librarySettings?: ClientLibrarySettingsJson[];\n\n /**\n * Optional link to proto reference documentation. Example:\n * https://cloud.google.com/pubsub/lite/docs/reference/rpc\n *\n * @generated from field: string proto_reference_documentation_uri = 110;\n */\n protoReferenceDocumentationUri?: string;\n\n /**\n * Optional link to REST reference documentation. Example:\n * https://cloud.google.com/pubsub/lite/docs/reference/rest\n *\n * @generated from field: string rest_reference_documentation_uri = 111;\n */\n restReferenceDocumentationUri?: string;\n};\n\n/**\n * Describes the message google.api.Publishing.\n * Use `create(PublishingSchema)` to create a new message.\n */\nexport const PublishingSchema: GenMessage<Publishing, PublishingJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 2);\n\n/**\n * Settings for Java client libraries.\n *\n * @generated from message google.api.JavaSettings\n */\nexport type JavaSettings = Message<\"google.api.JavaSettings\"> & {\n /**\n * The package name to use in Java. Clobbers the java_package option\n * set in the protobuf. This should be used **only** by APIs\n * who have already set the language_settings.java.package_name\" field\n * in gapic.yaml. API teams should use the protobuf java_package option\n * where possible.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * java_settings:\n * library_package: com.google.cloud.pubsub.v1\n *\n * @generated from field: string library_package = 1;\n */\n libraryPackage: string;\n\n /**\n * Configure the Java class name to use instead of the service's for its\n * corresponding generated GAPIC client. Keys are fully-qualified\n * service names as they appear in the protobuf (including the full\n * the language_settings.java.interface_names\" field in gapic.yaml. API\n * teams should otherwise use the service name as it appears in the\n * protobuf.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * java_settings:\n * service_class_names:\n * - google.pubsub.v1.Publisher: TopicAdmin\n * - google.pubsub.v1.Subscriber: SubscriptionAdmin\n *\n * @generated from field: map<string, string> service_class_names = 2;\n */\n serviceClassNames: { [key: string]: string };\n\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 3;\n */\n common?: CommonLanguageSettings;\n};\n\n/**\n * Settings for Java client libraries.\n *\n * @generated from message google.api.JavaSettings\n */\nexport type JavaSettingsJson = {\n /**\n * The package name to use in Java. Clobbers the java_package option\n * set in the protobuf. This should be used **only** by APIs\n * who have already set the language_settings.java.package_name\" field\n * in gapic.yaml. API teams should use the protobuf java_package option\n * where possible.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * java_settings:\n * library_package: com.google.cloud.pubsub.v1\n *\n * @generated from field: string library_package = 1;\n */\n libraryPackage?: string;\n\n /**\n * Configure the Java class name to use instead of the service's for its\n * corresponding generated GAPIC client. Keys are fully-qualified\n * service names as they appear in the protobuf (including the full\n * the language_settings.java.interface_names\" field in gapic.yaml. API\n * teams should otherwise use the service name as it appears in the\n * protobuf.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * java_settings:\n * service_class_names:\n * - google.pubsub.v1.Publisher: TopicAdmin\n * - google.pubsub.v1.Subscriber: SubscriptionAdmin\n *\n * @generated from field: map<string, string> service_class_names = 2;\n */\n serviceClassNames?: { [key: string]: string };\n\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 3;\n */\n common?: CommonLanguageSettingsJson;\n};\n\n/**\n * Describes the message google.api.JavaSettings.\n * Use `create(JavaSettingsSchema)` to create a new message.\n */\nexport const JavaSettingsSchema: GenMessage<JavaSettings, JavaSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 3);\n\n/**\n * Settings for C++ client libraries.\n *\n * @generated from message google.api.CppSettings\n */\nexport type CppSettings = Message<\"google.api.CppSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings;\n};\n\n/**\n * Settings for C++ client libraries.\n *\n * @generated from message google.api.CppSettings\n */\nexport type CppSettingsJson = {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettingsJson;\n};\n\n/**\n * Describes the message google.api.CppSettings.\n * Use `create(CppSettingsSchema)` to create a new message.\n */\nexport const CppSettingsSchema: GenMessage<CppSettings, CppSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 4);\n\n/**\n * Settings for Php client libraries.\n *\n * @generated from message google.api.PhpSettings\n */\nexport type PhpSettings = Message<\"google.api.PhpSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings;\n};\n\n/**\n * Settings for Php client libraries.\n *\n * @generated from message google.api.PhpSettings\n */\nexport type PhpSettingsJson = {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettingsJson;\n};\n\n/**\n * Describes the message google.api.PhpSettings.\n * Use `create(PhpSettingsSchema)` to create a new message.\n */\nexport const PhpSettingsSchema: GenMessage<PhpSettings, PhpSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 5);\n\n/**\n * Settings for Python client libraries.\n *\n * @generated from message google.api.PythonSettings\n */\nexport type PythonSettings = Message<\"google.api.PythonSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings;\n\n /**\n * Experimental features to be included during client library generation.\n *\n * @generated from field: google.api.PythonSettings.ExperimentalFeatures experimental_features = 2;\n */\n experimentalFeatures?: PythonSettings_ExperimentalFeatures;\n};\n\n/**\n * Settings for Python client libraries.\n *\n * @generated from message google.api.PythonSettings\n */\nexport type PythonSettingsJson = {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettingsJson;\n\n /**\n * Experimental features to be included during client library generation.\n *\n * @generated from field: google.api.PythonSettings.ExperimentalFeatures experimental_features = 2;\n */\n experimentalFeatures?: PythonSettings_ExperimentalFeaturesJson;\n};\n\n/**\n * Describes the message google.api.PythonSettings.\n * Use `create(PythonSettingsSchema)` to create a new message.\n */\nexport const PythonSettingsSchema: GenMessage<PythonSettings, PythonSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 6);\n\n/**\n * Experimental features to be included during client library generation.\n * These fields will be deprecated once the feature graduates and is enabled\n * by default.\n *\n * @generated from message google.api.PythonSettings.ExperimentalFeatures\n */\nexport type PythonSettings_ExperimentalFeatures = Message<\"google.api.PythonSettings.ExperimentalFeatures\"> & {\n /**\n * Enables generation of asynchronous REST clients if `rest` transport is\n * enabled. By default, asynchronous REST clients will not be generated.\n * This feature will be enabled by default 1 month after launching the\n * feature in preview packages.\n *\n * @generated from field: bool rest_async_io_enabled = 1;\n */\n restAsyncIoEnabled: boolean;\n\n /**\n * Enables generation of protobuf code using new types that are more\n * Pythonic which are included in `protobuf>=5.29.x`. This feature will be\n * enabled by default 1 month after launching the feature in preview\n * packages.\n *\n * @generated from field: bool protobuf_pythonic_types_enabled = 2;\n */\n protobufPythonicTypesEnabled: boolean;\n};\n\n/**\n * Experimental features to be included during client library generation.\n * These fields will be deprecated once the feature graduates and is enabled\n * by default.\n *\n * @generated from message google.api.PythonSettings.ExperimentalFeatures\n */\nexport type PythonSettings_ExperimentalFeaturesJson = {\n /**\n * Enables generation of asynchronous REST clients if `rest` transport is\n * enabled. By default, asynchronous REST clients will not be generated.\n * This feature will be enabled by default 1 month after launching the\n * feature in preview packages.\n *\n * @generated from field: bool rest_async_io_enabled = 1;\n */\n restAsyncIoEnabled?: boolean;\n\n /**\n * Enables generation of protobuf code using new types that are more\n * Pythonic which are included in `protobuf>=5.29.x`. This feature will be\n * enabled by default 1 month after launching the feature in preview\n * packages.\n *\n * @generated from field: bool protobuf_pythonic_types_enabled = 2;\n */\n protobufPythonicTypesEnabled?: boolean;\n};\n\n/**\n * Describes the message google.api.PythonSettings.ExperimentalFeatures.\n * Use `create(PythonSettings_ExperimentalFeaturesSchema)` to create a new message.\n */\nexport const PythonSettings_ExperimentalFeaturesSchema: GenMessage<PythonSettings_ExperimentalFeatures, PythonSettings_ExperimentalFeaturesJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 6, 0);\n\n/**\n * Settings for Node client libraries.\n *\n * @generated from message google.api.NodeSettings\n */\nexport type NodeSettings = Message<\"google.api.NodeSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings;\n};\n\n/**\n * Settings for Node client libraries.\n *\n * @generated from message google.api.NodeSettings\n */\nexport type NodeSettingsJson = {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettingsJson;\n};\n\n/**\n * Describes the message google.api.NodeSettings.\n * Use `create(NodeSettingsSchema)` to create a new message.\n */\nexport const NodeSettingsSchema: GenMessage<NodeSettings, NodeSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 7);\n\n/**\n * Settings for Dotnet client libraries.\n *\n * @generated from message google.api.DotnetSettings\n */\nexport type DotnetSettings = Message<\"google.api.DotnetSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings;\n\n /**\n * Map from original service names to renamed versions.\n * This is used when the default generated types\n * would cause a naming conflict. (Neither name is\n * fully-qualified.)\n * Example: Subscriber to SubscriberServiceApi.\n *\n * @generated from field: map<string, string> renamed_services = 2;\n */\n renamedServices: { [key: string]: string };\n\n /**\n * Map from full resource types to the effective short name\n * for the resource. This is used when otherwise resource\n * named from different services would cause naming collisions.\n * Example entry:\n * \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\"\n *\n * @generated from field: map<string, string> renamed_resources = 3;\n */\n renamedResources: { [key: string]: string };\n\n /**\n * List of full resource types to ignore during generation.\n * This is typically used for API-specific Location resources,\n * which should be handled by the generator as if they were actually\n * the common Location resources.\n * Example entry: \"documentai.googleapis.com/Location\"\n *\n * @generated from field: repeated string ignored_resources = 4;\n */\n ignoredResources: string[];\n\n /**\n * Namespaces which must be aliased in snippets due to\n * a known (but non-generator-predictable) naming collision\n *\n * @generated from field: repeated string forced_namespace_aliases = 5;\n */\n forcedNamespaceAliases: string[];\n\n /**\n * Method signatures (in the form \"service.method(signature)\")\n * which are provided separately, so shouldn't be generated.\n * Snippets *calling* these methods are still generated, however.\n *\n * @generated from field: repeated string handwritten_signatures = 6;\n */\n handwrittenSignatures: string[];\n};\n\n/**\n * Settings for Dotnet client libraries.\n *\n * @generated from message google.api.DotnetSettings\n */\nexport type DotnetSettingsJson = {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettingsJson;\n\n /**\n * Map from original service names to renamed versions.\n * This is used when the default generated types\n * would cause a naming conflict. (Neither name is\n * fully-qualified.)\n * Example: Subscriber to SubscriberServiceApi.\n *\n * @generated from field: map<string, string> renamed_services = 2;\n */\n renamedServices?: { [key: string]: string };\n\n /**\n * Map from full resource types to the effective short name\n * for the resource. This is used when otherwise resource\n * named from different services would cause naming collisions.\n * Example entry:\n * \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\"\n *\n * @generated from field: map<string, string> renamed_resources = 3;\n */\n renamedResources?: { [key: string]: string };\n\n /**\n * List of full resource types to ignore during generation.\n * This is typically used for API-specific Location resources,\n * which should be handled by the generator as if they were actually\n * the common Location resources.\n * Example entry: \"documentai.googleapis.com/Location\"\n *\n * @generated from field: repeated string ignored_resources = 4;\n */\n ignoredResources?: string[];\n\n /**\n * Namespaces which must be aliased in snippets due to\n * a known (but non-generator-predictable) naming collision\n *\n * @generated from field: repeated string forced_namespace_aliases = 5;\n */\n forcedNamespaceAliases?: string[];\n\n /**\n * Method signatures (in the form \"service.method(signature)\")\n * which are provided separately, so shouldn't be generated.\n * Snippets *calling* these methods are still generated, however.\n *\n * @generated from field: repeated string handwritten_signatures = 6;\n */\n handwrittenSignatures?: string[];\n};\n\n/**\n * Describes the message google.api.DotnetSettings.\n * Use `create(DotnetSettingsSchema)` to create a new message.\n */\nexport const DotnetSettingsSchema: GenMessage<DotnetSettings, DotnetSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 8);\n\n/**\n * Settings for Ruby client libraries.\n *\n * @generated from message google.api.RubySettings\n */\nexport type RubySettings = Message<\"google.api.RubySettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings;\n};\n\n/**\n * Settings for Ruby client libraries.\n *\n * @generated from message google.api.RubySettings\n */\nexport type RubySettingsJson = {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettingsJson;\n};\n\n/**\n * Describes the message google.api.RubySettings.\n * Use `create(RubySettingsSchema)` to create a new message.\n */\nexport const RubySettingsSchema: GenMessage<RubySettings, RubySettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 9);\n\n/**\n * Settings for Go client libraries.\n *\n * @generated from message google.api.GoSettings\n */\nexport type GoSettings = Message<\"google.api.GoSettings\"> & {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettings;\n\n /**\n * Map of service names to renamed services. Keys are the package relative\n * service names and values are the name to be used for the service client\n * and call options.\n *\n * publishing:\n * go_settings:\n * renamed_services:\n * Publisher: TopicAdmin\n *\n * @generated from field: map<string, string> renamed_services = 2;\n */\n renamedServices: { [key: string]: string };\n};\n\n/**\n * Settings for Go client libraries.\n *\n * @generated from message google.api.GoSettings\n */\nexport type GoSettingsJson = {\n /**\n * Some settings.\n *\n * @generated from field: google.api.CommonLanguageSettings common = 1;\n */\n common?: CommonLanguageSettingsJson;\n\n /**\n * Map of service names to renamed services. Keys are the package relative\n * service names and values are the name to be used for the service client\n * and call options.\n *\n * publishing:\n * go_settings:\n * renamed_services:\n * Publisher: TopicAdmin\n *\n * @generated from field: map<string, string> renamed_services = 2;\n */\n renamedServices?: { [key: string]: string };\n};\n\n/**\n * Describes the message google.api.GoSettings.\n * Use `create(GoSettingsSchema)` to create a new message.\n */\nexport const GoSettingsSchema: GenMessage<GoSettings, GoSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 10);\n\n/**\n * Describes the generator configuration for a method.\n *\n * @generated from message google.api.MethodSettings\n */\nexport type MethodSettings = Message<\"google.api.MethodSettings\"> & {\n /**\n * The fully qualified name of the method, for which the options below apply.\n * This is used to find the method to apply the options.\n *\n * Example:\n *\n * publishing:\n * method_settings:\n * - selector: google.storage.control.v2.StorageControl.CreateFolder\n * # method settings for CreateFolder...\n *\n * @generated from field: string selector = 1;\n */\n selector: string;\n\n /**\n * Describes settings to use for long-running operations when generating\n * API methods for RPCs. Complements RPCs that use the annotations in\n * google/longrunning/operations.proto.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * method_settings:\n * - selector: google.cloud.speech.v2.Speech.BatchRecognize\n * long_running:\n * initial_poll_delay: 60s # 1 minute\n * poll_delay_multiplier: 1.5\n * max_poll_delay: 360s # 6 minutes\n * total_poll_timeout: 54000s # 90 minutes\n *\n * @generated from field: google.api.MethodSettings.LongRunning long_running = 2;\n */\n longRunning?: MethodSettings_LongRunning;\n\n /**\n * List of top-level fields of the request message, that should be\n * automatically populated by the client libraries based on their\n * (google.api.field_info).format. Currently supported format: UUID4.\n *\n * Example of a YAML configuration:\n *\n * publishing:\n * method_settings:\n * - selector: google.example.v1.ExampleService.CreateExample\n * auto_populated_fields:\n * - request_id\n *\n * @generated from field: repeated string auto_populated_fields = 3;\n */\n autoPopulatedFields: string[];\n};\n\n/**\n * Describes the generator configuration for a method.\n *\n * @generated from message google.api.MethodSettings\n */\nexport type MethodSettingsJson = {\n /**\n * The fully qualified name of the method, for which the options below apply.\n * This is used to find the method to apply the options.\n *\n * Example:\n *\n * publishing:\n * method_settings:\n * - selector: google.storage.control.v2.StorageControl.CreateFolder\n * # method settings for CreateFolder...\n *\n * @generated from field: string selector = 1;\n */\n selector?: string;\n\n /**\n * Describes settings to use for long-running operations when generating\n * API methods for RPCs. Complements RPCs that use the annotations in\n * google/longrunning/operations.proto.\n *\n * Example of a YAML configuration::\n *\n * publishing:\n * method_settings:\n * - selector: google.cloud.speech.v2.Speech.BatchRecognize\n * long_running:\n * initial_poll_delay: 60s # 1 minute\n * poll_delay_multiplier: 1.5\n * max_poll_delay: 360s # 6 minutes\n * total_poll_timeout: 54000s # 90 minutes\n *\n * @generated from field: google.api.MethodSettings.LongRunning long_running = 2;\n */\n longRunning?: MethodSettings_LongRunningJson;\n\n /**\n * List of top-level fields of the request message, that should be\n * automatically populated by the client libraries based on their\n * (google.api.field_info).format. Currently supported format: UUID4.\n *\n * Example of a YAML configuration:\n *\n * publishing:\n * method_settings:\n * - selector: google.example.v1.ExampleService.CreateExample\n * auto_populated_fields:\n * - request_id\n *\n * @generated from field: repeated string auto_populated_fields = 3;\n */\n autoPopulatedFields?: string[];\n};\n\n/**\n * Describes the message google.api.MethodSettings.\n * Use `create(MethodSettingsSchema)` to create a new message.\n */\nexport const MethodSettingsSchema: GenMessage<MethodSettings, MethodSettingsJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 11);\n\n/**\n * Describes settings to use when generating API methods that use the\n * long-running operation pattern.\n * All default values below are from those used in the client library\n * generators (e.g.\n * [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).\n *\n * @generated from message google.api.MethodSettings.LongRunning\n */\nexport type MethodSettings_LongRunning = Message<\"google.api.MethodSettings.LongRunning\"> & {\n /**\n * Initial delay after which the first poll request will be made.\n * Default value: 5 seconds.\n *\n * @generated from field: google.protobuf.Duration initial_poll_delay = 1;\n */\n initialPollDelay?: Duration;\n\n /**\n * Multiplier to gradually increase delay between subsequent polls until it\n * reaches max_poll_delay.\n * Default value: 1.5.\n *\n * @generated from field: float poll_delay_multiplier = 2;\n */\n pollDelayMultiplier: number;\n\n /**\n * Maximum time between two subsequent poll requests.\n * Default value: 45 seconds.\n *\n * @generated from field: google.protobuf.Duration max_poll_delay = 3;\n */\n maxPollDelay?: Duration;\n\n /**\n * Total polling timeout.\n * Default value: 5 minutes.\n *\n * @generated from field: google.protobuf.Duration total_poll_timeout = 4;\n */\n totalPollTimeout?: Duration;\n};\n\n/**\n * Describes settings to use when generating API methods that use the\n * long-running operation pattern.\n * All default values below are from those used in the client library\n * generators (e.g.\n * [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).\n *\n * @generated from message google.api.MethodSettings.LongRunning\n */\nexport type MethodSettings_LongRunningJson = {\n /**\n * Initial delay after which the first poll request will be made.\n * Default value: 5 seconds.\n *\n * @generated from field: google.protobuf.Duration initial_poll_delay = 1;\n */\n initialPollDelay?: DurationJson;\n\n /**\n * Multiplier to gradually increase delay between subsequent polls until it\n * reaches max_poll_delay.\n * Default value: 1.5.\n *\n * @generated from field: float poll_delay_multiplier = 2;\n */\n pollDelayMultiplier?: number | \"NaN\" | \"Infinity\" | \"-Infinity\";\n\n /**\n * Maximum time between two subsequent poll requests.\n * Default value: 45 seconds.\n *\n * @generated from field: google.protobuf.Duration max_poll_delay = 3;\n */\n maxPollDelay?: DurationJson;\n\n /**\n * Total polling timeout.\n * Default value: 5 minutes.\n *\n * @generated from field: google.protobuf.Duration total_poll_timeout = 4;\n */\n totalPollTimeout?: DurationJson;\n};\n\n/**\n * Describes the message google.api.MethodSettings.LongRunning.\n * Use `create(MethodSettings_LongRunningSchema)` to create a new message.\n */\nexport const MethodSettings_LongRunningSchema: GenMessage<MethodSettings_LongRunning, MethodSettings_LongRunningJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 11, 0);\n\n/**\n * This message is used to configure the generation of a subset of the RPCs in\n * a service for client libraries.\n *\n * @generated from message google.api.SelectiveGapicGeneration\n */\nexport type SelectiveGapicGeneration = Message<\"google.api.SelectiveGapicGeneration\"> & {\n /**\n * An allowlist of the fully qualified names of RPCs that should be included\n * on public client surfaces.\n *\n * @generated from field: repeated string methods = 1;\n */\n methods: string[];\n};\n\n/**\n * This message is used to configure the generation of a subset of the RPCs in\n * a service for client libraries.\n *\n * @generated from message google.api.SelectiveGapicGeneration\n */\nexport type SelectiveGapicGenerationJson = {\n /**\n * An allowlist of the fully qualified names of RPCs that should be included\n * on public client surfaces.\n *\n * @generated from field: repeated string methods = 1;\n */\n methods?: string[];\n};\n\n/**\n * Describes the message google.api.SelectiveGapicGeneration.\n * Use `create(SelectiveGapicGenerationSchema)` to create a new message.\n */\nexport const SelectiveGapicGenerationSchema: GenMessage<SelectiveGapicGeneration, SelectiveGapicGenerationJson> = /*@__PURE__*/\n messageDesc(file_google_api_client, 12);\n\n/**\n * The organization for which the client libraries are being published.\n * Affects the url where generated docs are published, etc.\n *\n * @generated from enum google.api.ClientLibraryOrganization\n */\nexport enum ClientLibraryOrganization {\n /**\n * Not useful.\n *\n * @generated from enum value: CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0;\n */\n CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0,\n\n /**\n * Google Cloud Platform Org.\n *\n * @generated from enum value: CLOUD = 1;\n */\n CLOUD = 1,\n\n /**\n * Ads (Advertising) Org.\n *\n * @generated from enum value: ADS = 2;\n */\n ADS = 2,\n\n /**\n * Photos Org.\n *\n * @generated from enum value: PHOTOS = 3;\n */\n PHOTOS = 3,\n\n /**\n * Street View Org.\n *\n * @generated from enum value: STREET_VIEW = 4;\n */\n STREET_VIEW = 4,\n\n /**\n * Shopping Org.\n *\n * @generated from enum value: SHOPPING = 5;\n */\n SHOPPING = 5,\n\n /**\n * Geo Org.\n *\n * @generated from enum value: GEO = 6;\n */\n GEO = 6,\n\n /**\n * Generative AI - https://developers.generativeai.google\n *\n * @generated from enum value: GENERATIVE_AI = 7;\n */\n GENERATIVE_AI = 7,\n}\n\n/**\n * The organization for which the client libraries are being published.\n * Affects the url where generated docs are published, etc.\n *\n * @generated from enum google.api.ClientLibraryOrganization\n */\nexport type ClientLibraryOrganizationJson = \"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED\" | \"CLOUD\" | \"ADS\" | \"PHOTOS\" | \"STREET_VIEW\" | \"SHOPPING\" | \"GEO\" | \"GENERATIVE_AI\";\n\n/**\n * Describes the enum google.api.ClientLibraryOrganization.\n */\nexport const ClientLibraryOrganizationSchema: GenEnum<ClientLibraryOrganization, ClientLibraryOrganizationJson> = /*@__PURE__*/\n enumDesc(file_google_api_client, 0);\n\n/**\n * To where should client libraries be published?\n *\n * @generated from enum google.api.ClientLibraryDestination\n */\nexport enum ClientLibraryDestination {\n /**\n * Client libraries will neither be generated nor published to package\n * managers.\n *\n * @generated from enum value: CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0;\n */\n CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0,\n\n /**\n * Generate the client library in a repo under github.com/googleapis,\n * but don't publish it to package managers.\n *\n * @generated from enum value: GITHUB = 10;\n */\n GITHUB = 10,\n\n /**\n * Publish the library to package managers like nuget.org and npmjs.com.\n *\n * @generated from enum value: PACKAGE_MANAGER = 20;\n */\n PACKAGE_MANAGER = 20,\n}\n\n/**\n * To where should client libraries be published?\n *\n * @generated from enum google.api.ClientLibraryDestination\n */\nexport type ClientLibraryDestinationJson = \"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED\" | \"GITHUB\" | \"PACKAGE_MANAGER\";\n\n/**\n * Describes the enum google.api.ClientLibraryDestination.\n */\nexport const ClientLibraryDestinationSchema: GenEnum<ClientLibraryDestination, ClientLibraryDestinationJson> = /*@__PURE__*/\n enumDesc(file_google_api_client, 1);\n\n/**\n * A definition of a client library method signature.\n *\n * In client libraries, each proto RPC corresponds to one or more methods\n * which the end user is able to call, and calls the underlying RPC.\n * Normally, this method receives a single argument (a struct or instance\n * corresponding to the RPC request object). Defining this field will\n * add one or more overloads providing flattened or simpler method signatures\n * in some languages.\n *\n * The fields on the method signature are provided as a comma-separated\n * string.\n *\n * For example, the proto RPC and annotation:\n *\n * rpc CreateSubscription(CreateSubscriptionRequest)\n * returns (Subscription) {\n * option (google.api.method_signature) = \"name,topic\";\n * }\n *\n * Would add the following Java overload (in addition to the method accepting\n * the request object):\n *\n * public final Subscription createSubscription(String name, String topic)\n *\n * The following backwards-compatibility guidelines apply:\n *\n * * Adding this annotation to an unannotated method is backwards\n * compatible.\n * * Adding this annotation to a method which already has existing\n * method signature annotations is backwards compatible if and only if\n * the new method signature annotation is last in the sequence.\n * * Modifying or removing an existing method signature annotation is\n * a breaking change.\n * * Re-ordering existing method signature annotations is a breaking\n * change.\n *\n * @generated from extension: repeated string method_signature = 1051;\n */\nexport const method_signature: GenExtension<MethodOptions, string[]> = /*@__PURE__*/\n extDesc(file_google_api_client, 0);\n\n/**\n * The hostname for this service.\n * This should be specified with no prefix or protocol.\n *\n * Example:\n *\n * service Foo {\n * option (google.api.default_host) = \"foo.googleapi.com\";\n * ...\n * }\n *\n * @generated from extension: string default_host = 1049;\n */\nexport const default_host: GenExtension<ServiceOptions, string> = /*@__PURE__*/\n extDesc(file_google_api_client, 1);\n\n/**\n * OAuth scopes needed for the client.\n *\n * Example:\n *\n * service Foo {\n * option (google.api.oauth_scopes) = \\\n * \"https://www.googleapis.com/auth/cloud-platform\";\n * ...\n * }\n *\n * If there is more than one scope, use a comma-separated string:\n *\n * Example:\n *\n * service Foo {\n * option (google.api.oauth_scopes) = \\\n * \"https://www.googleapis.com/auth/cloud-platform,\"\n * \"https://www.googleapis.com/auth/monitoring\";\n * ...\n * }\n *\n * @generated from extension: string oauth_scopes = 1050;\n */\nexport const oauth_scopes: GenExtension<ServiceOptions, string> = /*@__PURE__*/\n extDesc(file_google_api_client, 2);\n\n/**\n * The API version of this service, which should be sent by version-aware\n * clients to the service. This allows services to abide by the schema and\n * behavior of the service at the time this API version was deployed.\n * The format of the API version must be treated as opaque by clients.\n * Services may use a format with an apparent structure, but clients must\n * not rely on this to determine components within an API version, or attempt\n * to construct other valid API versions. Note that this is for upcoming\n * functionality and may not be implemented for all services.\n *\n * Example:\n *\n * service Foo {\n * option (google.api.api_version) = \"v1_20230821_preview\";\n * }\n *\n * @generated from extension: string api_version = 525000001;\n */\nexport const api_version: GenExtension<ServiceOptions, string> = /*@__PURE__*/\n extDesc(file_google_api_client, 3);\n\n", "// Copyright 2023, mochabug AB\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 v2.2.3 with parameter \"target=ts,json_types=true,ts_nocheck=true\"\n// @generated from file mochabugapis/adapt/plugins/v1/plugins.proto (package mochabugapis.adapt.plugins.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv1\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv1\";\nimport { file_buf_validate_validate } from \"../../../../buf/validate/validate_pb\";\nimport { file_google_api_annotations } from \"../../../../google/api/annotations_pb\";\nimport { file_google_api_client } from \"../../../../google/api/client_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file mochabugapis/adapt/plugins/v1/plugins.proto.\n */\nexport const file_mochabugapis_adapt_plugins_v1_plugins: GenFile = /*@__PURE__*/\n fileDesc(\"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aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAWIIABAUIly6AVkKHnBsdWdpbl9vYXV0aDIub2F1dGgyLmNsaWVudF9pZBIiVGhlIGNsaWVudF9pZCBwcm9wZXJ0eSBtdXN0IGJlIHNldBoTaGFzKHRoaXMuY2xpZW50X2lkKRK7AQoQcGx1Z2luX3ZhcmlhYmxlcxgRIAMoCzIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZUJxukhuugFkChF2YXJzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaKnRoaXMubWFwKHZhcmlhYmxlLCB2YXJpYWJsZS5uYW1lKS51bmlxdWUoKZIBBAgAEGQSqgEKC3BsdWdpbl9tdGxzGBIgAygLMioubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuTVRMU1NlcnZpY2VCabpIZroBXAoRbXRsc191bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiJ0aGlzLm1hcChtdGxzLCBtdGxzLm5hbWUpLnVuaXF1ZSgpkgEECAAQFEILCglfaG9tZXBhZ2VCDQoLX3JlcG9zaXRvcnlCBwoFX2J1Z3NCCQoHX2F1dGhvckIHCgVfbG9nb0IQCg5fY29uZmlndXJhdG9yc0IJCgdfYXNzZXRzQgYKBF9jZG4ixg0KBlZlcnRleBItCgRuYW1lGAEgASgJQh+6SBxyGhABGGQyFF5bXyRhLXpdW18kYS16MC05XSokEhgKBWxhYmVsGAIgASgJQgm6SAZyBBABGGQSJwoLZGVzY3JpcHRpb24YAyABKAlCDbpICtgBAXIFEAEY+gFIAIgBARJlCgRsb2dvGAQgASgJQlK6SE/YAQFyShACGIAgMkNeKFteL10rKC9bXi9dKykqKVwuKGdpZnxqcGd8anBlZ3xqZmlmfHBqcGVnfHBqcHxwbmd8c3ZnfHdlYnB8YXZpZikkSAGIAQESSAoEdHlwZRgFIAEoDjIwLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZlcnRleC5WZXJ0ZXhUeXBlQgi6SAWCAQIgABIyCgZjb25maWcYBiABKAlCHbpIGnIYEAUYgCAyEV4oW14vXSsoL1teL10rKSopSAKIAQESNgoIbWV0YWRhdGEYByABKAlCJLpIIXIfEAUYgCAyGF4oW14vXSsoL1teL10rKSopXC5qc29uJBIUCgxjb25maWd1cmF0b3IYCCABKAgStAEKCXZhcmlhYmxlcxgJIAMoCzIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZUJxukhuugFkChF2YXJzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaKnRoaXMubWFwKHZhcmlhYmxlLCB2YXJpYWJsZS5uYW1lKS51bmlxdWUoKZIBBAgAEGQSowEKBG10bHMYCiADKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5NVExTU2VydmljZUJpukhmugFcChFtdGxzX3VuaXF1ZV9uYW1lcxIjYSBuYW1lIGNhbm5vdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UaInRoaXMubWFwKG10bHMsIG10bHMubmFtZSkudW5pcXVlKCmSAQQIABBkEsABCgtjb2RlX29hdXRoMhgLIAMoCzIwLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLk9hdXRoMkNvZGVCaW5kaW5nQnm6SHa6AWwKH3ZlcnRleC5jb2RlX29hdXRoMi51bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiR0aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAQQIABAUEvICCgZvYXV0aDIYDCADKAsyLC5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5PYXV0aDJTZXJ2aWNlQrMCukivAroBZwoadmVydGV4Lm9hdXRoMi51bmlxdWVfbmFtZXMSI2EgbmFtZSBjYW5ub3QgYXBwZWFyIG1vcmUgdGhhbiBvbmNlGiR0aGlzLm1hcChvYXV0aCwgb2F1dGgubmFtZSkudW5pcXVlKCmSAcEBCAAQFCK6AboBtgEKIHZlcnRleC5vYXV0aDIuY2xpZW50X2lkX2FuZF9jb2RlElFUaGUgY2xpZW50X2lkIGFuZCB0aGUgY29kZSBwcm9wZXJ0eSBtYXkgbm90IGJlIHNldCBhcyB3ZWxsIGFzIHRoZSBjb2RlIGdyYW50IHR5cGUaPyFoYXModGhpcy5jbGllbnRfaWQpICYmICFoYXModGhpcy5jb2RlKSAmJiB0aGlzLmdyYW50X3R5cGUgIT0gMSKaAQoKVmVydGV4VHlwZRIbChdWRVJURVhfVFlQRV9VTlNQRUNJRklFRBAAEhYKElZFUlRFWF9UWVBFX0FDVElPThABEhcKE1ZFUlRFWF9UWVBFX0JST1dTRVIQAhIcChhWRVJURVhfVFlQRV9DUk9OX1RSSUdHRVIQAxIgChxWRVJURVhfVFlQRV9FWFRFUk5BTF9UUklHR0VSEAQ6wAG6SLwBGrkBCh92ZXJ0ZXgub2F1dGgyX2FuZF9jb2RlX2JpbmRpbmdzEkVUaGUgbmFtZXMgb2YgdGhlIG9hdXRoMiBzZXJ2aWNlcyBhbmQgdGhlIGNvZGUgYmluZGluZ3MgbXVzdCBiZSB1bmlxdWUaTyh0aGlzLm9hdXRoMi5tYXAodmFsLCB2YWwubmFtZSkgKyB0aGlzLmNvZGVfb2F1dGgyLm1hcCh2YWwsIHZhbC5uYW1lKSkudW5pcXVlKClCDgoMX2Rlc2NyaXB0aW9uQgcKBV9sb2dvQgkKB19jb25maWcixQEKC01UTFNTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSIAoFbGFiZWwYAiABKAlCDLpICdgBAXIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESFQoIb3B0aW9uYWwYBCABKAhIAogBAUIICgZfbGFiZWxCDgoMX2Rlc2NyaXB0aW9uQgsKCV9vcHRpb25hbCLkAgoPVmFyaWFibGVTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSHQoFbGFiZWwYAiABKAlCCbpIBnIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESSwoEdHlwZRgEIAEoDjIzLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlZhcmlhYmxlU2VydmljZS5UeXBlQgi6SAWCAQIgABIVCghvcHRpb25hbBgFIAEoCEgCiAEBIk8KBFR5cGUSFAoQVFlQRV9VTlNQRUNJRklFRBAAEg8KC1RZUEVfU0VDUkVUEAESDwoLVFlQRV9TVFJJTkcQAhIPCgtUWVBFX1NXSVRDSBADQggKBl9sYWJlbEIOCgxfZGVzY3JpcHRpb25CCwoJX29wdGlvbmFsIugMCg1PYXV0aDJTZXJ2aWNlEi0KBG5hbWUYASABKAlCH7pIHHIaEAEYZDIUXltfJGEtel1bXyRhLXowLTldKiQSIAoFbGFiZWwYAiABKAlCDLpICdgBAXIEEAEYZEgAiAEBEicKC2Rlc2NyaXB0aW9uGAMgASgJQg26SArYAQFyBRABGPoBSAGIAQESTAoKZ3JhbnRfdHlwZRgEIAEoDjIuLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLk9hdXRoMkdyYW50VHlwZUIIukgFggECIAASJQoGc2NvcGVzGAUgAygJQhW6SBKSAQ8IARD0AxgBIgZyBBABGGQSVAoLYXV0aF9tZXRob2QYBiABKA4yLS5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5PYXV0aDJBdXRoVHlwZUILukgI2AEBggECIABIAogBARJLCgNhbGcYByABKA4yLC5tb2NoYWJ1Z2FwaXMuYWRhcHQucGx1Z2lucy52MS5Qcml2YXRlS2V5QWxnQgu6SAjYAQGCAQIgAEgDiAEBEiUKCWNsaWVudF9pZBgIIAEoCUINukgK2AEBcgUQARj6AUgEiAEBElYKDnRva2VuX2VuZHBvaW50GAkgASgJQj66SDtyORALGIAgMjJeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlwuW2EtekEtWl17Mix9KSg/Oi8uKik/JBI8CgRjb2RlGAogASgLMikubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuT2F1dGgyQ29kZUgFiAEBEhUKCG9wdGlvbmFsGAsgASgISAaIAQE6mge6SJYHGucBChJvYXV0aDIuYXV0aF9tZXRob2QShwFUaGUgYXV0aF9tZXRob2QgcHJvcGVydHkgbXVzdCBiZSBzZXQgaW4gY2FzZSBvZiBncmFudF90eXBlIE9BVVRIMl9HUkFOVF9UWVBFX0FVVEhPUklaQVRJT05fQ09ERSBvciBPQVVUSDJfR1JBTlRfVFlQRV9DTElFTlRfQ1JFREVOVElBTFMaR2hhcyh0aGlzLmF1dGhfbWV0aG9kKSA9PSAodGhpcy5ncmFudF90eXBlID09IDEgfHwgdGhpcy5ncmFudF90eXBlID09IDIpGsACCgpvYXV0aDIuYWxnEr4BVGhlIGFsZyBwcm9wZXJ0eSBtdXN0IGJlIHNldCBpbiBjYXNlIG9mIGdyYW50X3R5cGUgT0FVVEgyX0dSQU5UX1RZUEVfSldUX0JFQVJFUiwgT0FVVEgyX0dSQU5UX1RZUEVfU0FNTDJfQkVBUkVSIG9yIGF1dGhfbWV0aG9kIE9BVVRIMl9BVVRIX1RZUEVfUFJJVkFURV9LRVlfSldULCBPQVVUSDJfQVVUSF9UWVBFX1NBTUwyX0JFQVJFUhpxaGFzKHRoaXMuYWxnKSA9PSAodGhpcy5ncmFudF90eXBlID09IDMgfHwgdGhpcy5ncmFudF90eXBlID09IDQgfHwgdGhpcy5hdXRoX21ldGhvZCA9PSAzIHx8IHRoaXMuYXV0aF9tZXRob2QgPT0gNSkakQEKC29hdXRoMi5jb2RlElhUaGUgY29kZSBwcm9wZXJ0eSBtdXN0IGJlIHNldCBpbiBjYXNlIG9mIGdyYW50X3R5cGUgT0FVVEgyX0dSQU5UX1RZUEVfQVVUSE9SSVpBVElPTl9DT0RFGihoYXModGhpcy5jb2RlKSA9PSAodGhpcy5ncmFudF90eXBlID09IDEpGtIBCg9vYXV0aDIub3B0aW9uYWwSZlRoZSBvcHRpb25hbCBwcm9wZXJ0eSBjYW5ub3QgYmUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBncmFudF90eXBlIE9BVVRIMl9HUkFOVF9UWVBFX0FVVEhPUklaQVRJT05fQ09ERRpXIWhhcyh0aGlzLm9wdGlvbmFsKSB8fCB0aGlzLmdyYW50X3R5cGUgIT0gMSB8fCAoIXRoaXMub3B0aW9uYWwgJiYgdGhpcy5ncmFudF90eXBlID09IDEpQggKBl9sYWJlbEIOCgxfZGVzY3JpcHRpb25CDgoMX2F1dGhfbWV0aG9kQgYKBF9hbGdCDAoKX2NsaWVudF9pZEIHCgVfY29kZUILCglfb3B0aW9uYWwiZgoRT2F1dGgyQ29kZUJpbmRpbmcSLQoEbmFtZRgBIAEoCUIfukgcchoQARhkMhReW18kYS16XVtfJGEtejAtOV0qJBIVCghvcHRpb25hbBgCIAEoCEgAiAEBQgsKCV9vcHRpb25hbCKWAwoKT2F1dGgyQ29kZRJVCg1hdXRoX2VuZHBvaW50GAEgASgJQj66SDtyORALGIAgMjJeaHR0cHM6Ly9bYS16QS1aMC05Li1dKyg/OlwuW2EtekEtWl17Mix9KSg/Oi8uKik/JBIaCgZpc3N1ZXIYAiABKAlCCrpIB3IFEAEYgCASUAoIandrc191cmkYAyABKAlCPrpIO3I5EAsYgCAyMl5odHRwczovL1thLXpBLVowLTkuLV0rKD86XC5bYS16QS1aXXsyLH0pKD86Ly4qKT8kEngKEWFkZGl0aW9uYWxfcGFyYW1zGAQgAygLMj8ubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuT2F1dGgyQ29kZS5BZGRpdGlvbmFsUGFyYW1zRW50cnlCHLpIGZoBFggAEDIiB3IFEAEY+gEqB3IFEAEY+gESEAoIdXNlX3BrY2UYBSABKAgaNwoVQWRkaXRpb25hbFBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEqSwoNUHJpdmF0ZUtleUFsZxIfChtQUklWQVRFX0tFWV9BTEdfVU5TUEVDSUZJRUQQABIZChVQUklWQVRFX0tFWV9BTEdfUlMyNTYQASrOAQoPT2F1dGgyR3JhbnRUeXBlEiEKHU9BVVRIMl9HUkFOVF9UWVBFX1VOU1BFQ0lGSUVEEAASKAokT0FVVEgyX0dSQU5UX1RZUEVfQVVUSE9SSVpBVElPTl9DT0RFEAESKAokT0FVVEgyX0dSQU5UX1RZUEVfQ0xJRU5UX0NSRURFTlRJQUxTEAISIAocT0FVVEgyX0dSQU5UX1RZUEVfSldUX0JFQVJFUhADEiIKHk9BVVRIMl9HUkFOVF9UWVBFX1NBTUwyX0JFQVJFUhAEKs0BCg5PYXV0aDJBdXRoVHlwZRIgChxPQVVUSDJfQVVUSF9UWVBFX1VOU1BFQ0lGSUVEEAASGgoWT0FVVEgyX0FVVEhfVFlQRV9CQVNJQxABEhkKFU9BVVRIMl9BVVRIX1RZUEVfRk9STRACEiQKIE9BVVRIMl9BVVRIX1RZUEVfUFJJVkFURV9LRVlfSldUEAMSGQoVT0FVVEgyX0FVVEhfVFlQRV9NVExTEAQSIQodT0FVVEgyX0FVVEhfVFlQRV9TQU1MMl9CRUFSRVIQBTKvAgoNUGx1Z2luU2VydmljZRKYAQoMVXBsb2FkUGx1Z2luEjIubW9jaGFidWdhcGlzLmFkYXB0LnBsdWdpbnMudjEuVXBsb2FkUGx1Z2luUmVxdWVzdBozLm1vY2hhYnVnYXBpcy5hZGFwdC5wbHVnaW5zLnYxLlVwbG9hZFBsdWdpblJlc3BvbnNlIh2C0+STAhc6ASoiEi92MS9wbHVnaW5zL3VwbG9hZCgBGoIBykEWYWRhcHQubW9jaGFidWdhcGlzLmNvbdJBZmh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC9wbHVnaW5zLGh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC9wbHVnaW5zLnVwbG9hZGIGcHJvdG8z\", [file_buf_validate_validate, file_google_api_annotations, file_google_api_client]);\n\n/**\n * UploadPluginRequest represents a single request in the CreatePlugin streaming\n * RPC. The client sends a series of UploadPluginRequest messages containing\n * plugin data, starting with a manifest and followed by one or more files.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.UploadPluginRequest\n */\nexport type UploadPluginRequest = Message<\"mochabugapis.adapt.plugins.v1.UploadPluginRequest\"> & {\n /**\n * 'data' is a oneof field that holds either a manifest or a file for the\n * plugin.\n *\n * @generated from oneof mochabugapis.adapt.plugins.v1.UploadPluginRequest.data\n */\n data: {\n /**\n * 'manifest' is the Manifest describing the plugin.\n * It must be the first message in the stream.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.Manifest manifest = 1;\n */\n value: Manifest;\n case: \"manifest\";\n } | {\n /**\n * 'file' is a File contained within the plugin.\n * It follows the manifest in the stream.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.File file = 2;\n */\n value: File;\n case: \"file\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * UploadPluginRequest represents a single request in the CreatePlugin streaming\n * RPC. The client sends a series of UploadPluginRequest messages containing\n * plugin data, starting with a manifest and followed by one or more files.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.UploadPluginRequest\n */\nexport type UploadPluginRequestJson = {\n /**\n * 'manifest' is the Manifest describing the plugin.\n * It must be the first message in the stream.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.Manifest manifest = 1;\n */\n manifest?: ManifestJson;\n\n /**\n * 'file' is a File contained within the plugin.\n * It follows the manifest in the stream.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.File file = 2;\n */\n file?: FileJson;\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.UploadPluginRequest.\n * Use `create(UploadPluginRequestSchema)` to create a new message.\n */\nexport const UploadPluginRequestSchema: GenMessage<UploadPluginRequest, UploadPluginRequestJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 0);\n\n/**\n * UploadPluginResponse represents the response from the CreatePlugin streaming\n * RPC. The server sends a single CreatePluginResponse after successfully\n * processing all UploadPluginResponse messages from the client.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.UploadPluginResponse\n */\nexport type UploadPluginResponse = Message<\"mochabugapis.adapt.plugins.v1.UploadPluginResponse\"> & {\n};\n\n/**\n * UploadPluginResponse represents the response from the CreatePlugin streaming\n * RPC. The server sends a single CreatePluginResponse after successfully\n * processing all UploadPluginResponse messages from the client.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.UploadPluginResponse\n */\nexport type UploadPluginResponseJson = {\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.UploadPluginResponse.\n * Use `create(UploadPluginResponseSchema)` to create a new message.\n */\nexport const UploadPluginResponseSchema: GenMessage<UploadPluginResponse, UploadPluginResponseJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 1);\n\n/**\n * File represents a file within a plugin package.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.File\n */\nexport type File = Message<\"mochabugapis.adapt.plugins.v1.File\"> & {\n /**\n * 'path' is the local file path relative to the manifest.json folder.\n *\n * @generated from field: string path = 1;\n */\n path: string;\n\n /**\n * 'data' contains the actual binary file data.\n *\n * @generated from field: bytes data = 2;\n */\n data: Uint8Array;\n};\n\n/**\n * File represents a file within a plugin package.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.File\n */\nexport type FileJson = {\n /**\n * 'path' is the local file path relative to the manifest.json folder.\n *\n * @generated from field: string path = 1;\n */\n path?: string;\n\n /**\n * 'data' contains the actual binary file data.\n *\n * @generated from field: bytes data = 2;\n */\n data?: string;\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.File.\n * Use `create(FileSchema)` to create a new message.\n */\nexport const FileSchema: GenMessage<File, FileJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 2);\n\n/**\n * Manifest describes a plugin and its properties.\n *\n * Security considerations: The platform ensures that secrets and certificates\n * are stored and transmitted securely.\n *\n * *** Plugin authors must also ensure that their implementations\n * handle sensitive data appropriately! ***\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Manifest\n */\nexport type Manifest = Message<\"mochabugapis.adapt.plugins.v1.Manifest\"> & {\n /**\n * 'name' is the alpha-numeric identifier of the plugin. Must be conform to a ES variable name\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * 'version' is the plugin's version, following SemVer 2.0: https://semver.org/\n *\n * @generated from field: string version = 2;\n */\n version: string;\n\n /**\n * 'label' is a human-friendly label displayed in the UI.\n *\n * @generated from field: string label = 3;\n */\n label: string;\n\n /**\n * 'description' is a short, human-friendly description displayed in the UI.\n *\n * @generated from field: string description = 4;\n */\n description: string;\n\n /**\n * 'organization' is the id of the organization the user belongs to.\n *\n * @generated from field: string organization = 5;\n */\n organization: string;\n\n /**\n * 'homepage' is the plugin's homepage URL.\n *\n * @generated from field: optional string homepage = 6;\n */\n homepage?: string;\n\n /**\n * 'repository' is the plugin's repository URL.\n *\n * @generated from field: optional string repository = 7;\n */\n repository?: string;\n\n /**\n * 'bugs' is the URL or email for reporting bugs.\n *\n * @generated from field: optional string bugs = 8;\n */\n bugs?: string;\n\n /**\n * 'author' is the name of the plugin's author.\n *\n * @generated from field: optional string author = 9;\n */\n author?: string;\n\n /**\n * 'logo' is an optional path to the plugin logo.\n * The logo will be resized to a maximum of 80x80 pixels.\n * - Supported file formats:\n * - GIF: .gif\n * - JPEG: .jpg, .jpeg, .jfif, .pjpeg, .pjp\n * - PNG: .png\n * - SVG: .svg\n * - WEBP: .webp\n * - AVIF: .avif\n *\n * @generated from field: optional string logo = 10;\n */\n logo?: string;\n\n /**\n * 'executors' is the path to the executor ES module file.\n *\n * @generated from field: string executors = 11;\n */\n executors: string;\n\n /**\n * 'configurators' is an optional path to the configurator ES module file.\n *\n * @generated from field: optional string configurators = 12;\n */\n configurators?: string;\n\n /**\n * 'assets' is an optional directory containing all static assets\n * available to the plugin.\n *\n * @generated from field: optional string assets = 13;\n */\n assets?: string;\n\n /**\n * 'cdn' is the URL of the plugin's CDN (content delivery network).\n * The CDN is used to serve static assets, such as images, CSS, and JavaScript\n * files. The files will be located on https://cdn.mochabug.com/adapt/plugins/<owner>/<plugin>/<version>/\n *\n * @generated from field: optional string cdn = 14;\n */\n cdn?: string;\n\n /**\n * 'vertices' is a list of vertices that constitute the plugin.\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.Vertex vertices = 15;\n */\n vertices: Vertex[];\n\n /**\n * The plugin oauth2 services specifies oauth2 services that is required for the plugin.\n * The client_id must be set for ALL oauth services here\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.Oauth2Service plugin_oauth2 = 16;\n */\n pluginOauth2: Oauth2Service[];\n\n /**\n * 'plugin_variables' represents the variables required by the plugin.\n * The platform ensures secure storage and transmission of variables.\n * i.e. a plugin owner sets these variables and the plugin can use them\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.VariableService plugin_variables = 17;\n */\n pluginVariables: VariableService[];\n\n /**\n * 'plugin_mtls' represents the mTLS (mutual TLS) certificates required by\n * the plugin. The platform ensures secure storage and transmission of\n * certificates.\n * i.e. a plugin owner sets these certificates and the plugin can use them\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.MTLSService plugin_mtls = 18;\n */\n pluginMtls: MTLSService[];\n};\n\n/**\n * Manifest describes a plugin and its properties.\n *\n * Security considerations: The platform ensures that secrets and certificates\n * are stored and transmitted securely.\n *\n * *** Plugin authors must also ensure that their implementations\n * handle sensitive data appropriately! ***\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Manifest\n */\nexport type ManifestJson = {\n /**\n * 'name' is the alpha-numeric identifier of the plugin. Must be conform to a ES variable name\n *\n * @generated from field: string name = 1;\n */\n name?: string;\n\n /**\n * 'version' is the plugin's version, following SemVer 2.0: https://semver.org/\n *\n * @generated from field: string version = 2;\n */\n version?: string;\n\n /**\n * 'label' is a human-friendly label displayed in the UI.\n *\n * @generated from field: string label = 3;\n */\n label?: string;\n\n /**\n * 'description' is a short, human-friendly description displayed in the UI.\n *\n * @generated from field: string description = 4;\n */\n description?: string;\n\n /**\n * 'organization' is the id of the organization the user belongs to.\n *\n * @generated from field: string organization = 5;\n */\n organization?: string;\n\n /**\n * 'homepage' is the plugin's homepage URL.\n *\n * @generated from field: optional string homepage = 6;\n */\n homepage?: string;\n\n /**\n * 'repository' is the plugin's repository URL.\n *\n * @generated from field: optional string repository = 7;\n */\n repository?: string;\n\n /**\n * 'bugs' is the URL or email for reporting bugs.\n *\n * @generated from field: optional string bugs = 8;\n */\n bugs?: string;\n\n /**\n * 'author' is the name of the plugin's author.\n *\n * @generated from field: optional string author = 9;\n */\n author?: string;\n\n /**\n * 'logo' is an optional path to the plugin logo.\n * The logo will be resized to a maximum of 80x80 pixels.\n * - Supported file formats:\n * - GIF: .gif\n * - JPEG: .jpg, .jpeg, .jfif, .pjpeg, .pjp\n * - PNG: .png\n * - SVG: .svg\n * - WEBP: .webp\n * - AVIF: .avif\n *\n * @generated from field: optional string logo = 10;\n */\n logo?: string;\n\n /**\n * 'executors' is the path to the executor ES module file.\n *\n * @generated from field: string executors = 11;\n */\n executors?: string;\n\n /**\n * 'configurators' is an optional path to the configurator ES module file.\n *\n * @generated from field: optional string configurators = 12;\n */\n configurators?: string;\n\n /**\n * 'assets' is an optional directory containing all static assets\n * available to the plugin.\n *\n * @generated from field: optional string assets = 13;\n */\n assets?: string;\n\n /**\n * 'cdn' is the URL of the plugin's CDN (content delivery network).\n * The CDN is used to serve static assets, such as images, CSS, and JavaScript\n * files. The files will be located on https://cdn.mochabug.com/adapt/plugins/<owner>/<plugin>/<version>/\n *\n * @generated from field: optional string cdn = 14;\n */\n cdn?: string;\n\n /**\n * 'vertices' is a list of vertices that constitute the plugin.\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.Vertex vertices = 15;\n */\n vertices?: VertexJson[];\n\n /**\n * The plugin oauth2 services specifies oauth2 services that is required for the plugin.\n * The client_id must be set for ALL oauth services here\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.Oauth2Service plugin_oauth2 = 16;\n */\n pluginOauth2?: Oauth2ServiceJson[];\n\n /**\n * 'plugin_variables' represents the variables required by the plugin.\n * The platform ensures secure storage and transmission of variables.\n * i.e. a plugin owner sets these variables and the plugin can use them\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.VariableService plugin_variables = 17;\n */\n pluginVariables?: VariableServiceJson[];\n\n /**\n * 'plugin_mtls' represents the mTLS (mutual TLS) certificates required by\n * the plugin. The platform ensures secure storage and transmission of\n * certificates.\n * i.e. a plugin owner sets these certificates and the plugin can use them\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.MTLSService plugin_mtls = 18;\n */\n pluginMtls?: MTLSServiceJson[];\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.Manifest.\n * Use `create(ManifestSchema)` to create a new message.\n */\nexport const ManifestSchema: GenMessage<Manifest, ManifestJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 3);\n\n/**\n * Vertex represents a graph vertex that defines a plugin.\n * Note: Be aware of potential security implications when dealing with\n * user-provided data, such as file paths, and ensure proper input validation\n * and sanitization.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Vertex\n */\nexport type Vertex = Message<\"mochabugapis.adapt.plugins.v1.Vertex\"> & {\n /**\n * 'name' represents the vertex name.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * 'label' is a human-friendly label displayed in the UI.\n *\n * @generated from field: string label = 2;\n */\n label: string;\n\n /**\n * 'description' is a human-friendly short description of the vertex displayed\n * in UI.\n *\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * 'logo' is the file path to the vertex logo, which will be resized to a\n * maximum of 40x40 pixels. Ensure that the logo files are from trusted\n * sources to avoid security risks.\n * - Supported file formats:\n * - GIF: .gif\n * - JPEG: .jpg, .jpeg, .jfif, .pjpeg, .pjp\n * - PNG: .png\n * - SVG: .svg\n * - WEBP: .webp\n * - AVIF: .avif\n *\n * @generated from field: optional string logo = 4;\n */\n logo?: string;\n\n /**\n * 'type' specifies the type of the vertex.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.Vertex.VertexType type = 5;\n */\n type: Vertex_VertexType;\n\n /**\n * 'config' is an field that contains a Unix file path.\n * This can be any type of file, this is only intepreted for the vertex itself\n * Restrictions:\n *\n *\n * @generated from field: optional string config = 6;\n */\n config?: string;\n\n /**\n * 'metadata' is an field that contains a Unix file path.\n * This determines which receivers, transmitters etc... the vertex has to begin with\n * Restrictions:\n *\n *\n * @generated from field: string metadata = 7;\n */\n metadata: string;\n\n /**\n * 'configurator' is a field to indicate whether or not\n * the vertex has a configurator\n *\n * @generated from field: bool configurator = 8;\n */\n configurator: boolean;\n\n /**\n * The variables required by the vertex\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.VariableService variables = 9;\n */\n variables: VariableService[];\n\n /**\n * The mtls field contains a list of MTLSService instances for user-defined mTLS services.\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.MTLSService mtls = 10;\n */\n mtls: MTLSService[];\n\n /**\n * The code_oauth2 field stores a list of bindings to the actual code flow definitions.\n *\n * If any of the OAuth2 services referred to in these bindings are not configured and are not marked as 'optional'\n * in their respective ServiceBinding, the plugin might not be able to properly authenticate and authorize its operations.\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.Oauth2CodeBinding code_oauth2 = 11;\n */\n codeOauth2: Oauth2CodeBinding[];\n\n /**\n * client_id must not be set, and code must not be set. It's only for user defined service accounts\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.Oauth2Service oauth2 = 12;\n */\n oauth2: Oauth2Service[];\n};\n\n/**\n * Vertex represents a graph vertex that defines a plugin.\n * Note: Be aware of potential security implications when dealing with\n * user-provided data, such as file paths, and ensure proper input validation\n * and sanitization.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Vertex\n */\nexport type VertexJson = {\n /**\n * 'name' represents the vertex name.\n *\n * @generated from field: string name = 1;\n */\n name?: string;\n\n /**\n * 'label' is a human-friendly label displayed in the UI.\n *\n * @generated from field: string label = 2;\n */\n label?: string;\n\n /**\n * 'description' is a human-friendly short description of the vertex displayed\n * in UI.\n *\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * 'logo' is the file path to the vertex logo, which will be resized to a\n * maximum of 40x40 pixels. Ensure that the logo files are from trusted\n * sources to avoid security risks.\n * - Supported file formats:\n * - GIF: .gif\n * - JPEG: .jpg, .jpeg, .jfif, .pjpeg, .pjp\n * - PNG: .png\n * - SVG: .svg\n * - WEBP: .webp\n * - AVIF: .avif\n *\n * @generated from field: optional string logo = 4;\n */\n logo?: string;\n\n /**\n * 'type' specifies the type of the vertex.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.Vertex.VertexType type = 5;\n */\n type?: Vertex_VertexTypeJson;\n\n /**\n * 'config' is an field that contains a Unix file path.\n * This can be any type of file, this is only intepreted for the vertex itself\n * Restrictions:\n *\n *\n * @generated from field: optional string config = 6;\n */\n config?: string;\n\n /**\n * 'metadata' is an field that contains a Unix file path.\n * This determines which receivers, transmitters etc... the vertex has to begin with\n * Restrictions:\n *\n *\n * @generated from field: string metadata = 7;\n */\n metadata?: string;\n\n /**\n * 'configurator' is a field to indicate whether or not\n * the vertex has a configurator\n *\n * @generated from field: bool configurator = 8;\n */\n configurator?: boolean;\n\n /**\n * The variables required by the vertex\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.VariableService variables = 9;\n */\n variables?: VariableServiceJson[];\n\n /**\n * The mtls field contains a list of MTLSService instances for user-defined mTLS services.\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.MTLSService mtls = 10;\n */\n mtls?: MTLSServiceJson[];\n\n /**\n * The code_oauth2 field stores a list of bindings to the actual code flow definitions.\n *\n * If any of the OAuth2 services referred to in these bindings are not configured and are not marked as 'optional'\n * in their respective ServiceBinding, the plugin might not be able to properly authenticate and authorize its operations.\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.Oauth2CodeBinding code_oauth2 = 11;\n */\n codeOauth2?: Oauth2CodeBindingJson[];\n\n /**\n * client_id must not be set, and code must not be set. It's only for user defined service accounts\n *\n * @generated from field: repeated mochabugapis.adapt.plugins.v1.Oauth2Service oauth2 = 12;\n */\n oauth2?: Oauth2ServiceJson[];\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.Vertex.\n * Use `create(VertexSchema)` to create a new message.\n */\nexport const VertexSchema: GenMessage<Vertex, VertexJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 4);\n\n/**\n * VertexType represents the type of a vertex.\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.Vertex.VertexType\n */\nexport enum Vertex_VertexType {\n /**\n * Unspecified type (default value, should not be used).\n *\n * @generated from enum value: VERTEX_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Action type, available in all contexts and not exposed to the outside\n * world. This type has a lower security risk.\n *\n * @generated from enum value: VERTEX_TYPE_ACTION = 1;\n */\n ACTION = 1,\n\n /**\n * Browser type, available only in a browser context.\n * The configuration always runs inside a browser context.\n * Security implications: be cautious about potentially sensitive data\n * exposure.\n *\n * @generated from enum value: VERTEX_TYPE_BROWSER = 2;\n */\n BROWSER = 2,\n\n /**\n * CronTrigger type, available only in a trigger context.\n * Triggered at specific intervals.\n *\n * @generated from enum value: VERTEX_TYPE_CRON_TRIGGER = 3;\n */\n CRON_TRIGGER = 3,\n\n /**\n * ExternalTrigger type, available only in a trigger context.\n * Accessible via a publicly routable address.\n * Security implications: be cautious about exposing sensitive data or\n * functionality.\n *\n * @generated from enum value: VERTEX_TYPE_EXTERNAL_TRIGGER = 4;\n */\n EXTERNAL_TRIGGER = 4,\n}\n\n/**\n * VertexType represents the type of a vertex.\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.Vertex.VertexType\n */\nexport type Vertex_VertexTypeJson = \"VERTEX_TYPE_UNSPECIFIED\" | \"VERTEX_TYPE_ACTION\" | \"VERTEX_TYPE_BROWSER\" | \"VERTEX_TYPE_CRON_TRIGGER\" | \"VERTEX_TYPE_EXTERNAL_TRIGGER\";\n\n/**\n * Describes the enum mochabugapis.adapt.plugins.v1.Vertex.VertexType.\n */\nexport const Vertex_VertexTypeSchema: GenEnum<Vertex_VertexType, Vertex_VertexTypeJson> = /*@__PURE__*/\n enumDesc(file_mochabugapis_adapt_plugins_v1_plugins, 4, 0);\n\n/**\n * MTLSService represents a mutual Transport Layer Security (mTLS) service\n * configuration required by the plugin. mTLS provides secure communication\n * between client and server by authenticating both parties and encrypting the\n * communication.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.MTLSService\n */\nexport type MTLSService = Message<\"mochabugapis.adapt.plugins.v1.MTLSService\"> & {\n /**\n * 'name' is the identifier of the mTLS service.\n * It's used for referencing the specific mTLS configuration.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * 'label' is an optional short label describing the purpose of the mTLS\n * service.\n *\n * Restrictions:\n * - Length must be greater than 0 and less than 25 characters.\n * Security implications:\n * - Should not contain sensitive information.\n *\n * @generated from field: optional string label = 2;\n */\n label?: string;\n\n /**\n * 'description' is an optional detailed description of the mTLS service and\n * its usage within the plugin.\n *\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * Unset or false means the variable is required\n * true means the mtls service is optional\n *\n * @generated from field: optional bool optional = 4;\n */\n optional?: boolean;\n};\n\n/**\n * MTLSService represents a mutual Transport Layer Security (mTLS) service\n * configuration required by the plugin. mTLS provides secure communication\n * between client and server by authenticating both parties and encrypting the\n * communication.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.MTLSService\n */\nexport type MTLSServiceJson = {\n /**\n * 'name' is the identifier of the mTLS service.\n * It's used for referencing the specific mTLS configuration.\n *\n * @generated from field: string name = 1;\n */\n name?: string;\n\n /**\n * 'label' is an optional short label describing the purpose of the mTLS\n * service.\n *\n * Restrictions:\n * - Length must be greater than 0 and less than 25 characters.\n * Security implications:\n * - Should not contain sensitive information.\n *\n * @generated from field: optional string label = 2;\n */\n label?: string;\n\n /**\n * 'description' is an optional detailed description of the mTLS service and\n * its usage within the plugin.\n *\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * Unset or false means the variable is required\n * true means the mtls service is optional\n *\n * @generated from field: optional bool optional = 4;\n */\n optional?: boolean;\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.MTLSService.\n * Use `create(MTLSServiceSchema)` to create a new message.\n */\nexport const MTLSServiceSchema: GenMessage<MTLSService, MTLSServiceJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 5);\n\n/**\n * A representation of a variable.\n *\n * This message represents a variable used within the hosting platform.\n * Variables are essential for configuring applications and services hosted on the platform.\n * They store values that can be accessed by the application or service during runtime.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.VariableService\n */\nexport type VariableService = Message<\"mochabugapis.adapt.plugins.v1.VariableService\"> & {\n /**\n * 'name' is the identifier of the variable, which is referenced where needed.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * 'label' is a short, human-readable label describing the purpose of the variable.\n *\n * @generated from field: optional string label = 2;\n */\n label?: string;\n\n /**\n * 'description' is a detailed description of the variable and its use.\n *\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * The 'type' field specifies the data type of the environmental variable.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.VariableService.Type type = 4;\n */\n type: VariableService_Type;\n\n /**\n * Unset or false means the variable is required\n * true means the variable is optional\n *\n * @generated from field: optional bool optional = 5;\n */\n optional?: boolean;\n};\n\n/**\n * A representation of a variable.\n *\n * This message represents a variable used within the hosting platform.\n * Variables are essential for configuring applications and services hosted on the platform.\n * They store values that can be accessed by the application or service during runtime.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.VariableService\n */\nexport type VariableServiceJson = {\n /**\n * 'name' is the identifier of the variable, which is referenced where needed.\n *\n * @generated from field: string name = 1;\n */\n name?: string;\n\n /**\n * 'label' is a short, human-readable label describing the purpose of the variable.\n *\n * @generated from field: optional string label = 2;\n */\n label?: string;\n\n /**\n * 'description' is a detailed description of the variable and its use.\n *\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * The 'type' field specifies the data type of the environmental variable.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.VariableService.Type type = 4;\n */\n type?: VariableService_TypeJson;\n\n /**\n * Unset or false means the variable is required\n * true means the variable is optional\n *\n * @generated from field: optional bool optional = 5;\n */\n optional?: boolean;\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.VariableService.\n * Use `create(VariableServiceSchema)` to create a new message.\n */\nexport const VariableServiceSchema: GenMessage<VariableService, VariableServiceJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 6);\n\n/**\n * The type of variable\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.VariableService.Type\n */\nexport enum VariableService_Type {\n /**\n * The type is not specified. Invalid value\n *\n * @generated from enum value: TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * The variable will hold a secret\n *\n * @generated from enum value: TYPE_SECRET = 1;\n */\n SECRET = 1,\n\n /**\n * The variable will hold a string\n *\n * @generated from enum value: TYPE_STRING = 2;\n */\n STRING = 2,\n\n /**\n * The variable is a boolean value (a string either \"true\" or \"false\")\n *\n * @generated from enum value: TYPE_SWITCH = 3;\n */\n SWITCH = 3,\n}\n\n/**\n * The type of variable\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.VariableService.Type\n */\nexport type VariableService_TypeJson = \"TYPE_UNSPECIFIED\" | \"TYPE_SECRET\" | \"TYPE_STRING\" | \"TYPE_SWITCH\";\n\n/**\n * Describes the enum mochabugapis.adapt.plugins.v1.VariableService.Type.\n */\nexport const VariableService_TypeSchema: GenEnum<VariableService_Type, VariableService_TypeJson> = /*@__PURE__*/\n enumDesc(file_mochabugapis_adapt_plugins_v1_plugins, 6, 0);\n\n/**\n * OAuth2 service configuration\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Oauth2Service\n */\nexport type Oauth2Service = Message<\"mochabugapis.adapt.plugins.v1.Oauth2Service\"> & {\n /**\n * 'name' is the identifier for the OAuth2 service.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * 'label' is an optional short label describing the OAuth2 service.\n *\n * @generated from field: optional string label = 2;\n */\n label?: string;\n\n /**\n * 'description' provides a full description of the OAuth2 service.\n *\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * The OAuth2 grant type to be used.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.Oauth2GrantType grant_type = 4;\n */\n grantType: Oauth2GrantType;\n\n /**\n * The required scopes.\n *\n * @generated from field: repeated string scopes = 5;\n */\n scopes: string[];\n\n /**\n * The client authentication method.\n * REQUIRED when grant_type is:\n * - OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE\n * - OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS\n *\n * MUST NOT be set when grant_type is:\n * - OAUTH2_GRANT_TYPE_JWT_BEARER\n * - OAUTH2_GRANT_TYPE_SAML2_BEARER\n *\n * @generated from field: optional mochabugapis.adapt.plugins.v1.Oauth2AuthType auth_method = 6;\n */\n authMethod?: Oauth2AuthType;\n\n /**\n * Algorithm used for signing assertions.\n * REQUIRED when:\n * - grant_type is OAUTH2_GRANT_TYPE_JWT_BEARER\n * - grant_type is OAUTH2_GRANT_TYPE_SAML2_BEARER\n * - auth_method is OAUTH2_AUTH_TYPE_PRIVATE_KEY_JWT\n * - auth_method is OAUTH2_AUTH_TYPE_SAML2_BEARER\n *\n * MUST NOT be set otherwise.\n *\n * @generated from field: optional mochabugapis.adapt.plugins.v1.PrivateKeyAlg alg = 7;\n */\n alg?: PrivateKeyAlg;\n\n /**\n * Client ID.\n * This is required when used as plugin_oauth2, but not onto a vertex => oauth2\n *\n * @generated from field: optional string client_id = 8;\n */\n clientId?: string;\n\n /**\n * The token endpoint URL.\n *\n * @generated from field: string token_endpoint = 9;\n */\n tokenEndpoint: string;\n\n /**\n * Configuration specific to the Authorization Code grant type.\n * REQUIRED when grant_type is OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE.\n * MUST NOT be set otherwise.\n *\n * @generated from field: optional mochabugapis.adapt.plugins.v1.Oauth2Code code = 10;\n */\n code?: Oauth2Code;\n\n /**\n * Indicates if the OAuth2 service is optional.\n * This cannot be set to true in case of OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE\n *\n * @generated from field: optional bool optional = 11;\n */\n optional?: boolean;\n};\n\n/**\n * OAuth2 service configuration\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Oauth2Service\n */\nexport type Oauth2ServiceJson = {\n /**\n * 'name' is the identifier for the OAuth2 service.\n *\n * @generated from field: string name = 1;\n */\n name?: string;\n\n /**\n * 'label' is an optional short label describing the OAuth2 service.\n *\n * @generated from field: optional string label = 2;\n */\n label?: string;\n\n /**\n * 'description' provides a full description of the OAuth2 service.\n *\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * The OAuth2 grant type to be used.\n *\n * @generated from field: mochabugapis.adapt.plugins.v1.Oauth2GrantType grant_type = 4;\n */\n grantType?: Oauth2GrantTypeJson;\n\n /**\n * The required scopes.\n *\n * @generated from field: repeated string scopes = 5;\n */\n scopes?: string[];\n\n /**\n * The client authentication method.\n * REQUIRED when grant_type is:\n * - OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE\n * - OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS\n *\n * MUST NOT be set when grant_type is:\n * - OAUTH2_GRANT_TYPE_JWT_BEARER\n * - OAUTH2_GRANT_TYPE_SAML2_BEARER\n *\n * @generated from field: optional mochabugapis.adapt.plugins.v1.Oauth2AuthType auth_method = 6;\n */\n authMethod?: Oauth2AuthTypeJson;\n\n /**\n * Algorithm used for signing assertions.\n * REQUIRED when:\n * - grant_type is OAUTH2_GRANT_TYPE_JWT_BEARER\n * - grant_type is OAUTH2_GRANT_TYPE_SAML2_BEARER\n * - auth_method is OAUTH2_AUTH_TYPE_PRIVATE_KEY_JWT\n * - auth_method is OAUTH2_AUTH_TYPE_SAML2_BEARER\n *\n * MUST NOT be set otherwise.\n *\n * @generated from field: optional mochabugapis.adapt.plugins.v1.PrivateKeyAlg alg = 7;\n */\n alg?: PrivateKeyAlgJson;\n\n /**\n * Client ID.\n * This is required when used as plugin_oauth2, but not onto a vertex => oauth2\n *\n * @generated from field: optional string client_id = 8;\n */\n clientId?: string;\n\n /**\n * The token endpoint URL.\n *\n * @generated from field: string token_endpoint = 9;\n */\n tokenEndpoint?: string;\n\n /**\n * Configuration specific to the Authorization Code grant type.\n * REQUIRED when grant_type is OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE.\n * MUST NOT be set otherwise.\n *\n * @generated from field: optional mochabugapis.adapt.plugins.v1.Oauth2Code code = 10;\n */\n code?: Oauth2CodeJson;\n\n /**\n * Indicates if the OAuth2 service is optional.\n * This cannot be set to true in case of OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE\n *\n * @generated from field: optional bool optional = 11;\n */\n optional?: boolean;\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.Oauth2Service.\n * Use `create(Oauth2ServiceSchema)` to create a new message.\n */\nexport const Oauth2ServiceSchema: GenMessage<Oauth2Service, Oauth2ServiceJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 7);\n\n/**\n * Represents a binding to a code service\n *\n * The binding points to the required service by its 'name' and indicates whether the service is 'optional' or required.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Oauth2CodeBinding\n */\nexport type Oauth2CodeBinding = Message<\"mochabugapis.adapt.plugins.v1.Oauth2CodeBinding\"> & {\n /**\n * The 'name' field specifies the name of the service to bind to. The name should match the 'name' field of\n * the corresponding OAuth2Service.\n *\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * The 'optional' field indicates whether the service binding is optional or required. If 'optional' is\n * set to true, the service is not strictly required and the plugin can function without it. If 'optional'\n * is set to false, the service is required and the plugin might fail if it is not properly configured.\n *\n * @generated from field: optional bool optional = 2;\n */\n optional?: boolean;\n};\n\n/**\n * Represents a binding to a code service\n *\n * The binding points to the required service by its 'name' and indicates whether the service is 'optional' or required.\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Oauth2CodeBinding\n */\nexport type Oauth2CodeBindingJson = {\n /**\n * The 'name' field specifies the name of the service to bind to. The name should match the 'name' field of\n * the corresponding OAuth2Service.\n *\n * @generated from field: string name = 1;\n */\n name?: string;\n\n /**\n * The 'optional' field indicates whether the service binding is optional or required. If 'optional' is\n * set to true, the service is not strictly required and the plugin can function without it. If 'optional'\n * is set to false, the service is required and the plugin might fail if it is not properly configured.\n *\n * @generated from field: optional bool optional = 2;\n */\n optional?: boolean;\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.Oauth2CodeBinding.\n * Use `create(Oauth2CodeBindingSchema)` to create a new message.\n */\nexport const Oauth2CodeBindingSchema: GenMessage<Oauth2CodeBinding, Oauth2CodeBindingJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 8);\n\n/**\n * The code grant type\n * IMPORTANT: it has to be configured with refresh token in order to work correctly\n * this is not needed for client credentials of course since we are owning the client\n * WE ONLY SUPPORT OIDC since we need the sub claim to distinguish between different users\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Oauth2Code\n */\nexport type Oauth2Code = Message<\"mochabugapis.adapt.plugins.v1.Oauth2Code\"> & {\n /**\n * The auth endpoint (i.e. where it gets redirected for login)\n *\n * @generated from field: string auth_endpoint = 1;\n */\n authEndpoint: string;\n\n /**\n * We need to know the issuer in order to validate the token\n *\n * @generated from field: string issuer = 2;\n */\n issuer: string;\n\n /**\n * We also need the JWKs endpoint to validate the token\n *\n * @generated from field: string jwks_uri = 3;\n */\n jwksUri: string;\n\n /**\n * Additional parameters used for the oauth2 login endpoint\n * Do not include state or nonce here since we're generating them\n * in the backend. All params will be encoded in the URL\n *\n * @generated from field: map<string, string> additional_params = 4;\n */\n additionalParams: { [key: string]: string };\n\n /**\n * Whether or not to use the PKCE extension\n *\n * @generated from field: bool use_pkce = 5;\n */\n usePkce: boolean;\n};\n\n/**\n * The code grant type\n * IMPORTANT: it has to be configured with refresh token in order to work correctly\n * this is not needed for client credentials of course since we are owning the client\n * WE ONLY SUPPORT OIDC since we need the sub claim to distinguish between different users\n *\n * @generated from message mochabugapis.adapt.plugins.v1.Oauth2Code\n */\nexport type Oauth2CodeJson = {\n /**\n * The auth endpoint (i.e. where it gets redirected for login)\n *\n * @generated from field: string auth_endpoint = 1;\n */\n authEndpoint?: string;\n\n /**\n * We need to know the issuer in order to validate the token\n *\n * @generated from field: string issuer = 2;\n */\n issuer?: string;\n\n /**\n * We also need the JWKs endpoint to validate the token\n *\n * @generated from field: string jwks_uri = 3;\n */\n jwksUri?: string;\n\n /**\n * Additional parameters used for the oauth2 login endpoint\n * Do not include state or nonce here since we're generating them\n * in the backend. All params will be encoded in the URL\n *\n * @generated from field: map<string, string> additional_params = 4;\n */\n additionalParams?: { [key: string]: string };\n\n /**\n * Whether or not to use the PKCE extension\n *\n * @generated from field: bool use_pkce = 5;\n */\n usePkce?: boolean;\n};\n\n/**\n * Describes the message mochabugapis.adapt.plugins.v1.Oauth2Code.\n * Use `create(Oauth2CodeSchema)` to create a new message.\n */\nexport const Oauth2CodeSchema: GenMessage<Oauth2Code, Oauth2CodeJson> = /*@__PURE__*/\n messageDesc(file_mochabugapis_adapt_plugins_v1_plugins, 9);\n\n/**\n * The algorithm used for signing JWT or SAML assertions\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.PrivateKeyAlg\n */\nexport enum PrivateKeyAlg {\n /**\n * Unknown algorithm (invalid)\n *\n * @generated from enum value: PRIVATE_KEY_ALG_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * RS256 algorithm\n *\n * @generated from enum value: PRIVATE_KEY_ALG_RS256 = 1;\n */\n RS256 = 1,\n}\n\n/**\n * The algorithm used for signing JWT or SAML assertions\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.PrivateKeyAlg\n */\nexport type PrivateKeyAlgJson = \"PRIVATE_KEY_ALG_UNSPECIFIED\" | \"PRIVATE_KEY_ALG_RS256\";\n\n/**\n * Describes the enum mochabugapis.adapt.plugins.v1.PrivateKeyAlg.\n */\nexport const PrivateKeyAlgSchema: GenEnum<PrivateKeyAlg, PrivateKeyAlgJson> = /*@__PURE__*/\n enumDesc(file_mochabugapis_adapt_plugins_v1_plugins, 0);\n\n/**\n * The OAuth2 grant type\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.Oauth2GrantType\n */\nexport enum Oauth2GrantType {\n /**\n * Not specified (invalid)\n *\n * @generated from enum value: OAUTH2_GRANT_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Authorization Code Grant\n * grant_type=authorization_code\n *\n * @generated from enum value: OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE = 1;\n */\n AUTHORIZATION_CODE = 1,\n\n /**\n * Client Credentials Grant\n * grant_type=client_credentials\n *\n * @generated from enum value: OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS = 2;\n */\n CLIENT_CREDENTIALS = 2,\n\n /**\n * JWT Bearer Assertion Grant\n * grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer\n *\n * @generated from enum value: OAUTH2_GRANT_TYPE_JWT_BEARER = 3;\n */\n JWT_BEARER = 3,\n\n /**\n * SAML 2.0 Bearer Assertion Grant\n * grant_type=urn:ietf:params:oauth:grant-type:saml2-bearer\n *\n * @generated from enum value: OAUTH2_GRANT_TYPE_SAML2_BEARER = 4;\n */\n SAML2_BEARER = 4,\n}\n\n/**\n * The OAuth2 grant type\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.Oauth2GrantType\n */\nexport type Oauth2GrantTypeJson = \"OAUTH2_GRANT_TYPE_UNSPECIFIED\" | \"OAUTH2_GRANT_TYPE_AUTHORIZATION_CODE\" | \"OAUTH2_GRANT_TYPE_CLIENT_CREDENTIALS\" | \"OAUTH2_GRANT_TYPE_JWT_BEARER\" | \"OAUTH2_GRANT_TYPE_SAML2_BEARER\";\n\n/**\n * Describes the enum mochabugapis.adapt.plugins.v1.Oauth2GrantType.\n */\nexport const Oauth2GrantTypeSchema: GenEnum<Oauth2GrantType, Oauth2GrantTypeJson> = /*@__PURE__*/\n enumDesc(file_mochabugapis_adapt_plugins_v1_plugins, 1);\n\n/**\n * The OAuth2 client authentication method\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.Oauth2AuthType\n */\nexport enum Oauth2AuthType {\n /**\n * Not specified (invalid)\n *\n * @generated from enum value: OAUTH2_AUTH_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Basic Authentication (client ID and secret in Authorization header)\n *\n * @generated from enum value: OAUTH2_AUTH_TYPE_BASIC = 1;\n */\n BASIC = 1,\n\n /**\n * Form Authentication (client ID and secret in form body)\n *\n * @generated from enum value: OAUTH2_AUTH_TYPE_FORM = 2;\n */\n FORM = 2,\n\n /**\n * Private Key JWT Authentication\n * client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer\n *\n * @generated from enum value: OAUTH2_AUTH_TYPE_PRIVATE_KEY_JWT = 3;\n */\n PRIVATE_KEY_JWT = 3,\n\n /**\n * Mutual TLS Authentication\n *\n * @generated from enum value: OAUTH2_AUTH_TYPE_MTLS = 4;\n */\n MTLS = 4,\n\n /**\n * SAML 2.0 Bearer Assertion for Client Authentication\n * client_assertion_type=urn:ietf:params:oauth:client-assertion-type:saml2-bearer\n *\n * @generated from enum value: OAUTH2_AUTH_TYPE_SAML2_BEARER = 5;\n */\n SAML2_BEARER = 5,\n}\n\n/**\n * The OAuth2 client authentication method\n *\n * @generated from enum mochabugapis.adapt.plugins.v1.Oauth2AuthType\n */\nexport type Oauth2AuthTypeJson = \"OAUTH2_AUTH_TYPE_UNSPECIFIED\" | \"OAUTH2_AUTH_TYPE_BASIC\" | \"OAUTH2_AUTH_TYPE_FORM\" | \"OAUTH2_AUTH_TYPE_PRIVATE_KEY_JWT\" | \"OAUTH2_AUTH_TYPE_MTLS\" | \"OAUTH2_AUTH_TYPE_SAML2_BEARER\";\n\n/**\n * Describes the enum mochabugapis.adapt.plugins.v1.Oauth2AuthType.\n */\nexport const Oauth2AuthTypeSchema: GenEnum<Oauth2AuthType, Oauth2AuthTypeJson> = /*@__PURE__*/\n enumDesc(file_mochabugapis_adapt_plugins_v1_plugins, 2);\n\n/**\n * PluginService provides a service for uploading a plugin.\n *\n * @generated from service mochabugapis.adapt.plugins.v1.PluginService\n */\nexport const PluginService: GenService<{\n /**\n * UploadPlugin is a streaming RPC method that allows uploading a plugin in\n * chunks. The client can send multiple UploadPluginRequest messages, and the\n * server will respond with a single UploadPluginResponse after processing all\n * requests.\n *\n * @generated from rpc mochabugapis.adapt.plugins.v1.PluginService.UploadPlugin\n */\n uploadPlugin: {\n methodKind: \"client_streaming\";\n input: typeof UploadPluginRequestSchema;\n output: typeof UploadPluginResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_mochabugapis_adapt_plugins_v1_plugins, 0);\n\n", "// Copyright 2023, mochabug AB\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 { execSync } from 'child_process';\nimport fs from 'fs';\nimport { mkdirp } from 'mkdirp';\nimport path from 'path';\nimport { VertexConfigMetadataJson } from './genproto/mochabugapis/adapt/graph/vertex_config_pb';\nimport {\n Vertex_VertexTypeJson,\n VertexJson\n} from './genproto/mochabugapis/adapt/plugins/v1/plugins_pb';\nimport { labelize, readAsset, writeFile } from './utils';\n\nfunction convertVertexType(type: string): Vertex_VertexTypeJson {\n switch (type) {\n case 'action':\n return 'VERTEX_TYPE_ACTION';\n case 'cron-trigger':\n return 'VERTEX_TYPE_CRON_TRIGGER';\n case 'external-trigger':\n return 'VERTEX_TYPE_EXTERNAL_TRIGGER';\n case 'browser':\n return 'VERTEX_TYPE_BROWSER';\n default:\n throw new Error('The node type is invalid');\n }\n}\n\nexport function addVertex(\n cwd: string,\n name: string,\n type: string,\n hasConfigurator: boolean,\n existingVertices: VertexJson[],\n frontendLib?: 'none' | 'react' | undefined\n): VertexJson {\n // Create a folder with the vertex name\n const folder = path.join(cwd, 'src', 'vertices', name);\n if (fs.existsSync(folder)) {\n throw new Error(`The folder for the new vertex: ${folder} already exists`);\n }\n mkdirp.sync(folder);\n const execFile = path.join(folder, 'executor.ts');\n\n const vertex: VertexJson = {\n name,\n label: labelize(name),\n description: `The better description of what ${name} is doing, the better it is for both AI and humans`,\n type: convertVertexType(type),\n metadata: path.join('src', 'vertices', name, 'metadata.json'),\n configurator: hasConfigurator,\n mtls: [],\n codeOauth2: [],\n oauth2: [],\n variables: []\n };\n\n // Write the UI if specified\n if (frontendLib === 'react') {\n execSync('npm install react react-dom @types/react @types/react-dom', {\n cwd: cwd,\n stdio: 'inherit'\n });\n const uiPath = path.join(cwd, 'src/vertices', name, 'ui');\n if (hasConfigurator) {\n writeFile(\n path.join(uiPath, 'configurator.App.tsx'),\n readAsset('configurator.App.tsx')\n );\n writeFile(\n path.join(uiPath, 'configurator.main.tsx'),\n readAsset('configurator.main.tsx')\n );\n writeFile(\n path.join(uiPath, 'configurator.ssg.tsx'),\n readAsset('configurator.ssg.tsx')\n );\n }\n if (type === 'browser') {\n writeFile(\n path.join(uiPath, 'executor.App.tsx'),\n readAsset('executor.App.tsx')\n );\n writeFile(\n path.join(uiPath, 'executor.main.tsx'),\n readAsset('executor.main.tsx')\n );\n writeFile(\n path.join(uiPath, 'executor.ssg.tsx'),\n readAsset('executor.ssg.tsx')\n );\n }\n // If the build doesn't exists since before\n if (!fs.existsSync(path.join(cwd, 'build-client.js'))) {\n writeFile(\n path.join(cwd, 'build-client.js'),\n readAsset('build-client.js')\n );\n }\n }\n\n // Write the new task\n switch (vertex.type) {\n case 'VERTEX_TYPE_ACTION':\n writeFile(execFile, readAsset('executor_action.ts'));\n break;\n case 'VERTEX_TYPE_BROWSER':\n if (frontendLib === 'react') {\n writeFile(\n execFile,\n readAsset('executor_browser_react.tsx').replaceAll(\n '___VERTEX_NAME___',\n name\n )\n );\n } else {\n writeFile(execFile, readAsset('executor_browser_none.ts'));\n }\n break;\n case 'VERTEX_TYPE_EXTERNAL_TRIGGER':\n writeFile(execFile, readAsset('executor_external_trigger.ts'));\n break;\n case 'VERTEX_TYPE_CRON_TRIGGER':\n writeFile(execFile, readAsset('executor_cron_trigger.ts'));\n break;\n default:\n throw new Error('The vertex type is invalid');\n }\n\n // Write the export file for executors\n fs.writeFileSync(\n path.join(cwd, 'src', 'executors.ts'),\n generateExport(\n [name, ...existingVertices.map((v) => v.name!)],\n 'ExecutorEnvironment'\n )\n );\n\n const vertexConfig: VertexConfigMetadataJson = {\n complete: true,\n receivers: [\n {\n name: 'input',\n description: 'Default input receiver',\n bindings: []\n }\n ],\n transmitters: [\n {\n name: 'output',\n description: 'Default output transmitter',\n signals: [],\n failure: false\n }\n ],\n procedures: [],\n streams: []\n };\n\n // Runs every 5 seconds\n if (vertex.type === 'VERTEX_TYPE_CRON_TRIGGER') {\n vertexConfig.cronSchedule = '/5 * * * * *';\n }\n\n if (hasConfigurator) {\n if (frontendLib === 'react') {\n writeFile(\n path.join(folder, 'configurator.ts'),\n readAsset('configurator_react.tsx').replaceAll(\n '___VERTEX_NAME___',\n name\n )\n );\n } else {\n writeFile(\n path.join(folder, 'configurator.ts'),\n readAsset('configurator_none.ts')\n );\n }\n\n // If we have a config, make sure we don't say that the config is complete by default\n vertexConfig.complete = false;\n\n // Write the export file for configurators\n fs.writeFileSync(\n path.join(cwd, 'src', 'configurators.ts'),\n generateExport(\n [\n name,\n ...existingVertices.filter((v) => v.configurator).map((v) => v.name!)\n ],\n 'ConfiguratorEnvironment'\n )\n );\n }\n\n // Write the config json file\n fs.writeFileSync(\n path.join(folder, 'metadata.json'),\n JSON.stringify(vertexConfig, null, 2)\n );\n\n return vertex;\n}\n\nfunction generateExport(\n vertices: string[],\n env: 'ExecutorEnvironment' | 'ConfiguratorEnvironment'\n): string {\n const imports = vertices\n .map(\n (v) =>\n `import ${v} from './vertices/${v}/${\n env === 'ExecutorEnvironment' ? 'executor' : 'configurator'\n }';`\n )\n .join('\\n');\n\n return `/**\n * ---------------------------------------------------------------------------\n * THIS FILE IS AUTOGENERATED - DO NOT EDIT MANUALLY\n * ---------------------------------------------------------------------------\n * \n * This file was generated by the tool @mochabug/adaptkit.\n * Any modifications to this file will be overwritten the next time the\n * tool runs. To customize functionality, please adjust the source files\n * or configuration that this tool uses as input.\n *\n * Tool: @mochabug/adaptkit\n * Generated on: ${new Date().toISOString()} \n * ---------------------------------------------------------------------------\n */\nimport { selectVertex } from '@mochabug/adapt-plugin-toolkit/router';\n${imports}\n\nexport default {\n async fetch(req: Request, env: ${env}, ctx: ExecutionContext): Promise<Response> {\n return await selectVertex(req, env, ctx, { ${vertices.join(', ')} });\n },\n};`;\n}\n", "// Copyright 2023, mochabug AB\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 { fromJsonString } from '@bufbuild/protobuf';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport { mkdirp } from 'mkdirp';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport {\n Manifest,\n ManifestSchema\n} from './genproto/mochabugapis/adapt/plugins/v1/plugins_pb';\n\nexport function readAsset(name: string): string {\n return fs\n .readFileSync(\n path.join(\n path.dirname(fileURLToPath(import.meta.url)),\n '..',\n 'assets',\n name\n )\n )\n .toString();\n}\n\nexport function writeFile(filePath: string, content: string) {\n const dir = path.dirname(filePath);\n mkdirp.sync(dir);\n fs.writeFileSync(filePath, content);\n}\n\nexport function readManifest(filePath: string): Manifest | null {\n const fullPath = path.resolve(filePath);\n if (!fs.existsSync(fullPath)) {\n console.error(\n chalk.red(`Invalid command: Manifest file not found at ${fullPath}.`)\n );\n return null;\n }\n\n try {\n const manifestData = fs.readFileSync(fullPath).toString();\n return fromJsonString(ManifestSchema, manifestData);\n } catch (error: any) {\n console.error(chalk.red(`An error occurred while reading the manifest`));\n console.error(error.message);\n return null;\n }\n}\n\nexport function labelize(val: string): string {\n return (val.charAt(0).toUpperCase() + val.substring(1)).replace('_', ' ');\n}\n", "// Copyright 2023, mochabug AB\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 { confirm, input, select } from '@inquirer/prompts';\nimport chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport fs from 'fs';\nimport { mkdirp } from 'mkdirp';\nimport path from 'path';\nimport { ManifestJson } from './genproto/mochabugapis/adapt/plugins/v1/plugins_pb';\nimport { labelize, readAsset, writeFile } from './utils';\nimport { addVertex } from './vertices';\n\nexport async function init(dir: string) {\n const name = await input({\n message: 'Type plugin name',\n transformer: (val: string): string => {\n return val.trim().toLowerCase();\n },\n validate: (val: string): boolean => {\n return /^[_a-z][_a-z0-9]*$/.test(val);\n }\n });\n const vertexType = await select({\n message: 'Choose your vertex type',\n choices: [\n {\n name: 'action',\n value: 'action',\n description:\n 'An action is a vertex that performs a task, such as sending an email or updating a database.'\n },\n {\n name: 'browser',\n value: 'browser',\n description:\n 'A browser is a vertex that interacts with a web browser, such as navigating to a page or clicking a button.'\n },\n {\n name: 'cron-trigger',\n value: 'cron-trigger',\n description:\n 'A cron trigger is a vertex that triggers at a specific time, such as every day at 3:00 PM.'\n },\n {\n name: 'external-trigger',\n value: 'external-trigger',\n description:\n 'An external trigger is a vertex that triggers from an external event, such as a webhook or a message queue.'\n }\n ]\n });\n const vertexName = await input({\n message: 'Type a new unused vertex name',\n transformer: (val: string): string => {\n return val.trim().toLowerCase();\n },\n validate: (val: string): boolean => {\n return /^[_a-z][_a-z0-9]*$/.test(val);\n }\n });\n const hasConfigurator = await confirm({\n message: 'Need a configurator for the vertex?'\n });\n\n // Check which frontend to use, if any\n let frontendLib: 'none' | 'react' | undefined;\n if (hasConfigurator || vertexType === 'browser') {\n frontendLib = await select({\n message: 'Choose frontend library',\n choices: [\n {\n name: 'React',\n value: 'react',\n description: 'React with TypeScript'\n },\n {\n name: 'None',\n value: 'none',\n description: 'I do it myself'\n }\n ]\n });\n }\n\n mkdirp.sync(dir);\n\n const cwd = !path.isAbsolute(dir) ? path.join(process.cwd(), dir) : dir;\n\n writeFile(path.join(cwd, '.gitignore'), readAsset('gitignore'));\n const defPackage = {\n name: name,\n version: '',\n private: true,\n type: 'module',\n scripts: {\n 'build-client':\n \"node -e \\\"if(require('fs').existsSync('build-client.js')) require('child_process').execSync('node build-client.js', { stdio: 'inherit' })\\\"\",\n 'build-common': 'rimraf dist && npm run build-client && node build.js',\n 'build-dev':\n 'export PLUGINS_CDN=https://cdn-dev.mochabug.com/adapt/plugins && npm run build-common',\n 'build-prod':\n 'export PLUGINS_CDN=https://cdn.mochabug.com/adapt/plugins && npm run build-common',\n 'build-emulate':\n 'export PLUGINS_CDN=http://localhost:51002 && npm run build-common',\n build: 'npm run build-dev',\n emulate: 'npm run build-emulate && adaptkit emulate',\n add: 'adaptkit add'\n },\n devDependencies: {\n unenv: 'npm:unenv-nightly@*'\n }\n };\n writeFile(\n path.join(cwd, 'package.json'),\n JSON.stringify(defPackage, null, 2)\n );\n writeFile(path.join(cwd, 'README.md'), readAsset('readme.md'));\n writeFile(path.join(cwd, 'LICENSE.md'), readAsset('license.md'));\n\n execSync(\n 'npm install --save-dev @mochabug/adapt-plugin-typings typescript @cloudflare/unenv-preset @types/node esbuild rimraf glob',\n {\n cwd: cwd,\n stdio: 'inherit'\n }\n );\n execSync('npm install @mochabug/adapt-plugin-toolkit', {\n cwd: cwd,\n stdio: 'inherit'\n });\n writeFile(path.join(cwd, 'global.d.ts'), readAsset('global.d.ts'));\n writeFile(path.join(cwd, 'tsconfig.json'), readAsset('tsconf.json'));\n writeFile(path.join(cwd, 'build.js'), readAsset('build.js'));\n writeFile(path.join(cwd, 'inject.js'), readAsset('inject.js'));\n\n const vertex = addVertex(\n cwd,\n vertexName,\n vertexType,\n hasConfigurator,\n [],\n frontendLib\n );\n\n console.log(chalk.magenta('Creating manifest...'));\n const manifest: ManifestJson = {\n name: name,\n organization: '00000000-0000-0000-0000-000000000000',\n version: '0.1.0',\n label: labelize(name),\n description: `A nice description of what ${name} does`,\n author: 'John Doe',\n bugs: 'bugs@foobar.com',\n homepage: `https://www.foobar.com`,\n repository: `https://github.com`,\n vertices: [vertex],\n executors: 'dist/executors.js',\n pluginVariables: [],\n pluginOauth2: [],\n pluginMtls: []\n };\n\n if (frontendLib === 'react') {\n mkdirp.sync(path.join(dir, 'cdn'));\n manifest.cdn = 'cdn';\n }\n\n if (!vertex.metadata) {\n throw new Error('This cannot happen');\n }\n\n if (vertex.configurator) {\n manifest.configurators = 'dist/configurators.js';\n }\n\n // Write out the actual manifest and we're done\n fs.writeFileSync(\n path.join(cwd, 'manifest.json'),\n JSON.stringify(manifest, null, 2)\n );\n console.log(chalk.bgGreen('Success'));\n}\n", "// Copyright 2023, mochabug AB\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 chalk from 'chalk';\nimport { randomBytes } from 'crypto';\nimport express, { Request, Response } from 'express';\nimport { Server } from 'http';\nimport fetch from 'node-fetch';\nimport open from 'open';\nimport pkceChallenge from 'pkce-challenge';\nimport { readAsset } from './utils';\n\nconst OAUTH_CALLBACK_PORT = 51421;\nconst PORT_RANGE = 5;\nconst OAUTH_SCOPE = 'https://www.mochabugapis.com/auth/adapt/plugins.upload';\nconst AUDIENCE = 'https://adapt-dev.mochabugapis.com';\n\ninterface OAuth2Options {\n clientId: string;\n redirectUri: string;\n scope: string;\n state: string;\n authUrl: string;\n codeChallenge: string;\n audience: string;\n}\n\ninterface TokenResponse {\n access_token: string;\n expires_in: number;\n token_type: string;\n scope?: string;\n}\n\ninterface OAuthErrorResponse {\n error: string;\n error_description?: string;\n error_uri?: string;\n}\n\nfunction createCodeUrl({\n clientId,\n redirectUri,\n scope,\n state,\n authUrl,\n codeChallenge,\n audience\n}: OAuth2Options): string {\n const res = new URL(authUrl);\n res.searchParams.set('response_type', 'code');\n res.searchParams.set('client_id', clientId);\n res.searchParams.set('audience', audience);\n res.searchParams.set('redirect_uri', redirectUri);\n res.searchParams.set('scope', scope);\n res.searchParams.set('state', state);\n res.searchParams.set('code_challenge', codeChallenge);\n res.searchParams.set('code_challenge_method', 'S256');\n\n return res.toString();\n}\n\ninterface CodeExchangeOptions {\n redirectUri: string;\n clientId: string;\n codeVerifier: string;\n code: string;\n}\n\nfunction createExchangeBody({\n redirectUri,\n codeVerifier,\n clientId,\n code\n}: CodeExchangeOptions): string {\n const res = new URLSearchParams();\n res.set('grant_type', 'authorization_code');\n res.set('code_verifier', codeVerifier);\n res.set('client_id', clientId);\n res.set('code', code);\n res.set('redirect_uri', redirectUri);\n\n return res.toString();\n}\n\nfunction startServer(\n app: express.Express,\n attempt: number = 0\n): Promise<{ server: Server; port: number }> {\n return new Promise((resolve, reject) => {\n // Calculate the current port to try based on the base port and the attempt number.\n const currentPort = OAUTH_CALLBACK_PORT + attempt;\n\n // Attempt to listen on the current port.\n const server = app.listen(currentPort, () => {\n console.log(\n chalk.green.bold(\n `Server running on http://localhost:${currentPort} to listen to OAuth2 callbacks`\n )\n );\n resolve({ server, port: currentPort });\n });\n\n // Handle the error event when the server fails to start.\n server.on('error', (err: any) => {\n if (err.code === 'EADDRINUSE' && attempt < PORT_RANGE - 1) {\n // If the address is in use, close the current server and try the next port.\n console.log(\n chalk.yellow.bold(\n `Port ${currentPort} is in use, trying next available port.`\n )\n );\n server.close();\n resolve(startServer(app, attempt + 1));\n } else {\n reject(err);\n }\n });\n });\n}\n\n// Define constants or import them\nconst LOGGING_PREFIX = '[waitForConsent]';\n\n// Returns the access token\nexport async function waitForConsent(\n issuerUrl: string,\n errorUrl: string,\n clientId: string\n): Promise<string | undefined> {\n console.info(\n `${LOGGING_PREFIX} Starting OAuth2 consent workflow for client: ${clientId}`\n );\n const authUrl = `${issuerUrl}/oauth2/auth`;\n const tokenUrl = `${issuerUrl}/oauth2/token`;\n console.info(`${LOGGING_PREFIX} Authorization URL: ${authUrl}`);\n console.info(`${LOGGING_PREFIX} Token URL: ${tokenUrl}`);\n\n const app = express();\n const state = randomBytes(32).toString('hex');\n\n console.info(`${LOGGING_PREFIX} Generated state for CSRF protection`);\n\n const localUrls = {\n base: ``,\n redirect: ``\n };\n\n const { code_verifier, code_challenge } = await pkceChallenge();\n\n console.info(`${LOGGING_PREFIX} PKCE Challenge generated`);\n\n let resolveToken: () => void;\n let rejectToken: () => void;\n let token: string | undefined;\n const tokenPromise = new Promise<void>((resolve, reject) => {\n resolveToken = resolve;\n rejectToken = reject;\n });\n\n app.get('/', async (_: Request, res: Response) => {\n const codeUrl = createCodeUrl({\n authUrl,\n clientId,\n redirectUri: localUrls.redirect,\n scope: OAUTH_SCOPE,\n state,\n codeChallenge: code_challenge,\n audience: AUDIENCE\n });\n console.info(`${LOGGING_PREFIX} Redirecting to code URL for user consent`);\n res.redirect(codeUrl);\n });\n\n // We need to use callbacks to the success / failed pages so that we don't\n // expose the code longer than necessary.\n app.get('/callback', async (req: Request, res: Response) => {\n if ('error' in req.query) {\n console.error(`${LOGGING_PREFIX} OAuth Error: error in callback`);\n const queryString = req.url.split('?')[1];\n res.redirect(`${errorUrl}?${queryString}`);\n rejectToken();\n return;\n }\n\n if (req.query.state !== state) {\n console.error(\n `${LOGGING_PREFIX} OAuth Error: Invalid state. Received state does not match.`\n );\n const errorDescription = encodeURIComponent('Invalid state parameter.');\n res.redirect(\n `${errorUrl}?error=invalid_request&error_description=${errorDescription}`\n );\n rejectToken();\n return;\n }\n\n console.info(`${LOGGING_PREFIX} OAuth state validated`);\n\n const body = createExchangeBody({\n clientId,\n redirectUri: localUrls.redirect,\n codeVerifier: code_verifier,\n code: req.query.code as string\n });\n\n try {\n console.info(`${LOGGING_PREFIX} Exchanging code for token`);\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json'\n },\n body\n });\n\n // Redirect to error\n if (!response.ok) {\n console.error(\n `${LOGGING_PREFIX} OAuth Error: could not exchange code for token`\n );\n const queryString = response.url.split('?')[1];\n res.redirect(`${errorUrl}?${queryString}`);\n rejectToken();\n return;\n }\n\n const data = (await response.json()) as TokenResponse;\n console.info(`${LOGGING_PREFIX} Token exchange successful`);\n console.info(`${LOGGING_PREFIX} Token exchange successful. Details: `, {\n expires_in: data.expires_in,\n scope: data.scope,\n type: data.token_type,\n token: '<secret>'\n });\n token = data.access_token;\n res.redirect('/success');\n } catch (error) {\n console.error(`${LOGGING_PREFIX} Error exchanging token: ${error}`);\n res.redirect(\n `${errorUrl}?error=unkown&error_description=${encodeURIComponent(\n 'Unknown error during token exchange'\n )}`\n );\n rejectToken();\n }\n });\n\n app.get('/success', (_: Request, res: Response) => {\n res.send(readAsset('success_page.html'));\n if (!token) {\n console.error('Token is undefined');\n rejectToken();\n }\n resolveToken();\n });\n\n let server: Server;\n try {\n console.info(`${LOGGING_PREFIX} Starting local server to handle callbacks`);\n const serverStart = await startServer(app);\n server = serverStart.server;\n localUrls.base = `http://localhost:${serverStart.port}`;\n localUrls.redirect = `${localUrls.base}/callback`;\n console.info(`${LOGGING_PREFIX} Server started on ${localUrls.base}`);\n } catch (e) {\n console.error(`${LOGGING_PREFIX} Error starting server: ${e}`);\n return;\n }\n\n try {\n console.info(`${LOGGING_PREFIX} Opening user consent page`);\n await open(localUrls.base);\n console.info(`${LOGGING_PREFIX} Waiting for user consent...`);\n await tokenPromise;\n console.info(\n `${LOGGING_PREFIX} OAuth consent workflow completed successfully`\n );\n if (!token) {\n console.error('Token is undefined');\n }\n return token;\n } catch (error) {\n console.error(`${LOGGING_PREFIX} Error in OAuth2 flow: ${error}`);\n return undefined;\n } finally {\n console.info(`${LOGGING_PREFIX} Closing the server...`);\n server.closeAllConnections();\n server.close();\n console.info(`${LOGGING_PREFIX} Server closed`);\n }\n}\n", "// Copyright 2023, mochabug AB\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 { create } from '@bufbuild/protobuf';\nimport { Client, ConnectError, createClient } from '@connectrpc/connect';\nimport { createGrpcTransport } from '@connectrpc/connect-node';\nimport archiver from 'archiver';\nimport chalk from 'chalk';\nimport fg from 'fast-glob';\nimport fs from 'fs';\nimport path from 'path';\nimport sharp from 'sharp';\nimport { PassThrough } from 'stream';\nimport {\n Manifest,\n PluginService,\n UploadPluginRequest,\n UploadPluginRequestSchema\n} from './genproto/mochabugapis/adapt/plugins/v1/plugins_pb';\n\nasync function resize(\n filepath: string,\n height: number,\n width: number\n): Promise<Buffer> {\n const extname = path.extname(filepath);\n switch (extname) {\n case '.avif':\n return await sharp(filepath).resize(height, width).avif().toBuffer();\n case '.gif':\n return await sharp(filepath).resize(height, width).gif().toBuffer();\n case '.jpg':\n case '.jpeg':\n case '.jfif':\n case '.pjpeg':\n case '.pjp':\n return await sharp(filepath).resize(height, width).jpeg().toBuffer();\n case '.png':\n return await sharp(filepath).resize(height, width).png().toBuffer();\n case '.svg':\n return fs.readFileSync(filepath);\n case '.webp':\n return await sharp(filepath).resize(height, width).webp().toBuffer();\n }\n throw new Error('Invalid logotype');\n}\n\nfunction isPathSafe(filePath: string): boolean {\n const currentWorkingDir = path.resolve('.');\n const absoluteFilePath = path.resolve(filePath);\n return absoluteFilePath.startsWith(currentWorkingDir);\n}\n\nfunction folderExists(folderPath: string): boolean {\n try {\n const absolutePath = path.resolve(folderPath);\n if (fs.existsSync(absolutePath)) {\n const stats = fs.statSync(absolutePath);\n return stats.isDirectory();\n } else {\n return false;\n }\n } catch (err) {\n console.error('Error checking if folder exists:', err);\n return false;\n }\n}\n\nfunction createArchive(folder: string): Promise<Buffer> {\n return new Promise<Buffer>((resolve, reject) => {\n if (!folderExists(folder)) {\n reject(`The folder ${folder} does not exist`);\n }\n\n const archive = archiver('tar', {\n gzip: true, // Use gzip compression\n zlib: { level: 9 } // Sets the compression level.\n });\n\n archive.on('error', (err) => {\n reject(err);\n });\n\n const buffers: Buffer[] = [];\n const bufferStream = new PassThrough();\n\n bufferStream.on('data', (data: Buffer) => buffers.push(data));\n\n bufferStream.on('end', () => {\n const res = Buffer.concat(buffers);\n console.log(`${folder} have been compressed successfully into a buffer.`);\n resolve(res); // Resolve the promise with the final buffer\n });\n\n archive.pipe(bufferStream);\n\n fg(path.join(folder, '**', '*'))\n .then((paths) => {\n for (let filepath of paths) {\n if (fs.statSync(filepath).isFile()) {\n const relativePath = path.relative(folder, filepath);\n archive.file(filepath, { name: relativePath });\n }\n }\n archive.finalize();\n })\n .catch((err) => reject(err));\n });\n}\n\nasync function sendPlugin(\n manifest: Manifest,\n client: Client<typeof PluginService>,\n reqHeaders?: HeadersInit\n) {\n // Helper function to send files\n const lookup: { [key: string]: boolean } = {};\n async function createFileRequest(\n filePath?: string,\n imgOpts?: [number, number],\n fileContent?: Buffer\n ): Promise<UploadPluginRequest | undefined> {\n if (!filePath || lookup[filePath]) {\n return;\n }\n\n if (!isPathSafe(filePath)) {\n throw new Error(\n `The file path is not safe: ${filePath}. It must be contained inside the manifest folder. Invalid manifest`\n );\n }\n\n if (!fs.existsSync(filePath)) {\n throw new Error(\n `The path does not exists: ${filePath}. Invalid manifest`\n );\n }\n\n // If image file, we need to compress it\n let buffer: Buffer;\n if (imgOpts) {\n buffer = await resize(filePath, imgOpts[0], imgOpts[1]);\n console.log(\n `Compressed: ${filePath} to ${imgOpts[0]}x${imgOpts[1]} size`\n );\n } else if (fileContent) {\n buffer = fileContent;\n } else {\n buffer = fs.readFileSync(filePath);\n }\n lookup[filePath] = true;\n return create(UploadPluginRequestSchema, {\n data: {\n case: 'file',\n value: {\n data: buffer,\n path: filePath\n }\n }\n });\n }\n\n let resTrailers: Headers = new Headers();\n let resHeaders: Headers = new Headers();\n await client.uploadPlugin(\n (async function* () {\n yield create(UploadPluginRequestSchema, {\n data: {\n case: 'manifest',\n value: manifest\n }\n });\n\n const files: Array<Promise<UploadPluginRequest | undefined>> = [\n createFileRequest('README.md'),\n createFileRequest('LICENSE.md'),\n createFileRequest(manifest.executors),\n createFileRequest(manifest.configurators),\n createFileRequest(manifest.logo, [80, 80])\n ];\n\n if (manifest.assets && fs.existsSync(manifest.assets)) {\n files.push(\n createFileRequest(\n manifest.assets,\n undefined,\n await createArchive(manifest.assets)\n )\n );\n }\n if (manifest.cdn && fs.existsSync(manifest.cdn)) {\n files.push(\n createFileRequest(\n manifest.cdn,\n undefined,\n await createArchive(manifest.cdn)\n )\n );\n }\n for (let vertex of manifest.vertices) {\n files.push(createFileRequest(vertex.logo, [40, 40]));\n files.push(createFileRequest(vertex.metadata));\n if (vertex.config) {\n files.push(createFileRequest(vertex.config));\n }\n }\n\n for await (const file of files) {\n if (file) {\n yield file;\n }\n }\n })(),\n {\n headers: reqHeaders,\n onHeader: (h) => {\n resHeaders = h;\n },\n onTrailer: (h) => {\n resTrailers = h;\n }\n }\n );\n\n printRpcSuccess(resHeaders, resTrailers);\n}\n\nexport async function emulate(manifest: Manifest, endpoint: string) {\n const client = createClient(\n PluginService,\n createGrpcTransport({\n baseUrl: endpoint\n })\n );\n try {\n await sendPlugin(manifest, client);\n } catch (e: any) {\n if (e instanceof ConnectError) {\n printRpcError(e);\n } else {\n console.error(e);\n }\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help emulate')}`\n );\n }\n}\n\nexport async function publish(\n manifest: Manifest,\n endpoint: string,\n accessToken: string,\n _insecure: boolean\n) {\n const client = createClient(\n PluginService,\n createGrpcTransport({\n baseUrl: endpoint\n })\n );\n const metadata: Headers = new Headers({\n authorization: `Bearer ${accessToken}`\n });\n try {\n await sendPlugin(manifest, client, metadata);\n } catch (e: any) {\n if (e instanceof ConnectError) {\n printRpcError(e);\n } else {\n console.error(e);\n }\n console.log(\n `For more information, use: ${chalk.blue('adaptkit help publish')}`\n );\n }\n}\n\nfunction printRpcSuccess(headers: Headers, trailers: Headers) {\n const line = chalk.green(\n '=================================================='\n );\n const title = chalk.bgGreen.black.bold(' RPC Success Details ');\n const statusCode =\n chalk.bold.white('Status Code: ') + chalk.greenBright.bold('OK');\n const statusDetail =\n chalk.bold.white('Details: ') +\n chalk.greenBright('The upload was successful');\n\n const headerInfo =\n chalk.bold.white('Headers:\\n') +\n (headers\n ? chalk.blue(JSON.stringify(headers, null, 2))\n : chalk.gray(' No Metadata'));\n\n const trailerInfo =\n chalk.bold.white('Trailers:\\n') +\n (trailers\n ? chalk.blue(JSON.stringify(trailers, null, 2))\n : chalk.gray(' No Trailers'));\n\n console.log(line);\n console.log(title);\n console.log(line);\n console.log(statusCode);\n console.log(statusDetail);\n console.log(line);\n console.log(headerInfo);\n console.log(line);\n console.log(trailerInfo);\n console.log(line);\n console.log(chalk.bgGreen.black.bold(' SUCCESS '));\n console.log(line);\n}\n\nfunction printRpcError(error: ConnectError) {\n const line = chalk.red('==================================================');\n const title = chalk.bgRed.white.bold(' RPC Error Details ');\n const name = chalk.bold.white('Name: ') + chalk.redBright.bold(error.name);\n const message =\n chalk.bold.white('Message: ') + chalk.redBright(error.message);\n const code = chalk.bold.white('Code: ') + chalk.redBright.bold(error.code);\n\n const methodName = (error as any).methodName\n ? chalk.bold.white('Method Name: ') +\n chalk.yellowBright((error as any).methodName)\n : chalk.gray('No Method Name');\n\n const serviceName = (error as any).serviceName\n ? chalk.bold.white('Service Name: ') +\n chalk.yellowBright((error as any).serviceName)\n : chalk.gray('No Service Name');\n\n const meta =\n chalk.bold.white('Metadata:\\n') +\n (error.metadata\n ? chalk.blue(JSON.stringify([...error.metadata.entries()], null, 2))\n : chalk.gray(' No Metadata'));\n\n console.error(line);\n console.error(title);\n console.error(line);\n console.error(name);\n console.error(message);\n console.error(code);\n console.error(line);\n if (methodName) console.error(methodName);\n if (serviceName) console.error(serviceName);\n console.error(line);\n console.error(meta);\n console.error(line);\n\n const details = error.details;\n console.error(chalk.bold.white('Error Details:'));\n if (details.length === 0) {\n console.error(chalk.gray(' No error details'));\n } else {\n for (const detail of details) {\n console.error(chalk.red(JSON.stringify(detail, null, 2)));\n }\n }\n\n console.error(line);\n console.error(chalk.bgRed.white.bold(' ERROR '));\n console.error(line);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["define_PACKAGE_JSON_default", "isMessage", "arg", "schema", "ScalarType", "varint64read", "lowBits", "highBits", "shift", "b", "middleByte", "varint64write", "lo", "hi", "bytes", "i", "hasNext", "byte", "splitBits", "hasMoreBits", "TWO_PWR_32_DBL", "int64FromString", "dec", "minus", "base", "add1e6digit", "begin", "end", "digit1e6", "negate", "newBits", "int64ToString", "bits", "negative", "result", "uInt64ToString", "toUnsigned", "low", "mid", "high", "digitA", "digitB", "digitC", "decimalFrom1e7WithLeadingZeros", "digit1e7", "partial", "varint32write", "value", "varint32read", "readBytes", "protoInt64", "makeInt64Support", "dv", "MIN", "MAX", "UMIN", "UMAX", "value", "bi", "lo", "hi", "assertInt64String", "assertUInt64String", "int64FromString", "int64ToString", "uInt64ToString", "scalarZeroValue", "type", "longAsString", "ScalarType", "protoInt64", "isScalarZeroValue", "value", "errorNames", "FieldError", "fieldOrOneof", "message", "name", "isFieldError", "arg", "IMPLICIT", "unsafeLocal", "unsafeOneofCase", "target", "oneof", "c", "f", "unsafeIsSet", "field", "name", "isScalarZeroValue", "unsafeIsSetExplicit", "localName", "unsafeGet", "unsafeSet", "value", "unsafeClear", "oneofLocalName", "scalarZeroValue", "isObject", "arg", "isReflectList", "arg", "field", "_a", "_b", "_c", "_d", "isObject", "unsafeLocal", "a", "b", "isReflectMap", "isReflectMessage", "messageDesc", "isWrapper", "arg", "isWrapperTypeName", "isWrapperDesc", "messageDesc", "f", "name", "EDITION_PROTO3", "EDITION_PROTO2", "IMPLICIT", "create", "schema", "init", "isMessage", "message", "createZeroMessage", "initMessage", "messageDesc", "member", "value", "field", "oneofField", "unsafeOneofCase", "unsafeGet", "toMessage", "initScalar", "initList", "initMap", "unsafeSet", "ScalarType", "toU8Arr", "isObject", "convertObjectValues", "val", "item", "isWrapperDesc", "obj", "fn", "ret", "entry", "tokenZeroMessageField", "messagePrototypes", "desc", "msg", "needsPrototypeChain", "cached", "prototype", "members", "createZeroField", "f", "defaultValue", "scalarZeroValue", "symbol", "getTextEncoding", "symbol", "te", "td", "text", "bytes", "WireType", "FLOAT32_MAX", "FLOAT32_MIN", "UINT32_MAX", "INT32_MAX", "INT32_MIN", "BinaryWriter", "encodeUtf8", "getTextEncoding", "len", "i", "bytes", "offset", "chunk", "prev", "fieldNo", "type", "value", "assertUInt32", "assertInt32", "varint32write", "assertFloat32", "view", "tc", "protoInt64", "varint64write", "sign", "lo", "hi", "BinaryReader", "buf", "decodeUtf8", "varint64read", "varint32read", "tag", "wireType", "start", "fn", "wt", "zze", "s", "arg", "o", "checkField", "field", "value", "check", "isReflectList", "isReflectMap", "checkSingular", "reason", "formatReflectList", "formatVal", "formatReflectMap", "reasonSingular", "FieldError", "checkListItem", "index", "checkMapEntry", "key", "checkKey", "checkScalarValue", "checkVal", "v", "isReflectMessage", "scalar", "ScalarType", "FLOAT32_MAX", "FLOAT32_MIN", "INT32_MAX", "INT32_MIN", "UINT32_MAX", "getTextEncoding", "protoInt64", "val", "details", "scalarTypeDescription", "formatReflectMessage", "isMessage", "desc", "reflect", "messageDesc", "message", "check", "ReflectMessageImpl", "_a", "a", "b", "unsafeLocal", "create", "number", "f", "oneof", "assertOwn", "unsafeOneofCase", "field", "unsafeIsSet", "unsafeClear", "value", "unsafeGet", "list", "ReflectListImpl", "map", "ReflectMapImpl", "messageToReflect", "scalarZeroValue", "longToReflect", "err", "checkField", "local", "messageToLocal", "isReflectMap", "isReflectList", "longToLocal", "unsafeSet", "owner", "member", "FieldError", "ReflectListImpl", "field", "unsafeInput", "check", "unsafeLocal", "index", "item", "listItemToReflect", "FieldError", "err", "checkListItem", "listItemToLocal", "i", "ReflectMapImpl", "field", "unsafeInput", "check", "unsafeLocal", "key", "value", "err", "checkMapEntry", "mapKeyToLocal", "mapValueToLocal", "k", "has", "val", "mapValueToReflect", "objKey", "mapKeyToReflect", "objEntry", "callbackfn", "thisArg", "mapEntry", "messageToLocal", "isReflectMessage", "isWrapper", "wktStructToLocal", "messageToReflect", "isWrapperDesc", "longToReflect", "isObject", "wktStructToReflect", "ReflectMessageImpl", "listItemToLocal", "longToLocal", "listItemToReflect", "type", "ScalarType", "n", "protoInt64", "json", "struct", "v", "wktValueToReflect", "wktValueToLocal", "listValue", "e", "base64Decode", "base64Str", "table", "getDecodeTable", "es", "bytes", "bytePos", "groupPos", "b", "p", "i", "base64Encode", "encoding", "getEncodeTable", "pad", "base64", "encodeTableStd", "encodeTableUrl", "decodeTable", "encodeTable", "protoCamelCase", "snakeCase", "capNext", "b", "i", "c", "reservedObjectProperties", "safeObjectProperty", "name", "restoreJsonNames", "message", "f", "unsafeIsSetExplicit", "protoCamelCase", "parseTextFormatEnumValue", "descEnum", "value", "enumValue", "v", "parseTextFormatScalarValue", "type", "ScalarType", "u", "unescapeBytesDefaultValue", "protoInt64", "str", "b", "input", "n", "r", "s", "t", "chunk", "tc", "view", "nestedTypes", "desc", "message", "createFileRegistry", "args", "registry", "createBaseRegistry", "file", "addFile", "recurseDeps", "deps", "protoFileName", "seen", "dep", "resolve", "input", "fileReg", "types", "extendees", "files", "skipTypes", "withDeps", "type", "nestedTypes", "f", "desc", "numberToExt", "typeName", "fileName", "t", "extendee", "no", "_a", "EDITION_PROTO2", "EDITION_PROTO3", "TYPE_STRING", "TYPE_GROUP", "TYPE_MESSAGE", "TYPE_BYTES", "TYPE_ENUM", "LABEL_REPEATED", "LABEL_REQUIRED", "JS_STRING", "IDEMPOTENCY_UNKNOWN", "EXPLICIT", "IMPLICIT", "LEGACY_REQUIRED", "PACKED", "DELIMITED", "OPEN", "featureDefaults", "addFile", "proto", "reg", "_a", "_b", "file", "getFileEdition", "findFileDependencies", "mapEntriesStore", "mapEntries", "typeName", "desc", "assert", "enumProto", "addEnum", "messageProto", "addMessage", "serviceProto", "addService", "addExtensions", "mapEntry", "addFields", "message", "ext", "newField", "allOneofs", "newOneof", "oneofsSeen", "oneof", "findOneof", "field", "o", "child", "parent", "_c", "sharedPrefix", "findEnumSharedPrefix", "makeTypeName", "isEnumOpen", "name", "safeObjectProperty", "_d", "methodProto", "method", "newMethod", "methodKind", "input", "trimLeadingDot", "output", "IDEMPOTENCY_UNKNOWN", "protoCamelCase", "parentOrFile", "isExtension", "getFieldPresence", "extendee", "label", "type", "jstype", "LABEL_REPEATED", "TYPE_MESSAGE", "key", "value", "findMapEntryFields", "TYPE_GROUP", "isDelimitedEncoding", "TYPE_ENUM", "JS_STRING", "isPackedField", "enumeration", "unsafeIsSetExplicit", "parseTextFormatEnumValue", "parseTextFormatScalarValue", "EDITION_PROTO2", "EDITION_PROTO3", "wantName", "dep", "enumName", "values", "prefix", "camelToSnakeCase", "shortName", "camel", "c", "LABEL_REQUIRED", "LEGACY_REQUIRED", "IMPLICIT", "EXPLICIT", "resolveFeature", "TYPE_STRING", "TYPE_BYTES", "PACKED", "f", "ScalarType", "OPEN", "DELIMITED", "ref", "featureSet", "val", "editionDefaults", "condition", "msg", "boot", "root", "bootFileDescriptorProto", "restoreJsonNames", "createFileRegistry", "init", "bootDescriptorProto", "bootEnumDescriptorProto", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "bootFieldDescriptorProto", "e", "bootFieldOptions", "messageDesc", "file", "path", "paths", "acc", "cur", "file_google_protobuf_descriptor", "boot", "FileDescriptorProtoSchema", "messageDesc", "file_google_protobuf_descriptor", "ExtensionRangeOptions_VerificationState", "FieldDescriptorProto_Type", "FieldDescriptorProto_Label", "FileOptions_OptimizeMode", "FieldOptions_CType", "FieldOptions_JSType", "FieldOptions_OptionRetention", "FieldOptions_OptionTargetType", "MethodOptions_IdempotencyLevel", "FeatureSet_FieldPresence", "FeatureSet_EnumType", "FeatureSet_RepeatedFieldEncoding", "FeatureSet_Utf8Validation", "FeatureSet_MessageEncoding", "FeatureSet_JsonFormat", "GeneratedCodeInfo_Annotation_Semantic", "Edition", "readDefaults", "makeReadOptions", "options", "fromBinary", "schema", "bytes", "msg", "reflect", "readMessage", "BinaryReader", "readMessage", "message", "reader", "options", "delimited", "lengthOrDelimitedFieldNo", "_a", "end", "fieldNo", "wireType", "unknownFields", "WireType", "field", "data", "readField", "readScalar", "ScalarType", "readMessageField", "readListField", "readMapEntry", "map", "key", "val", "scalarZeroValue", "reflect", "list", "scalarType", "e", "mergeMessage", "type", "fileDesc", "b64", "imports", "_a", "root", "fromBinary", "FileDescriptorProtoSchema", "base64Decode", "restoreJsonNames", "f", "createFileRegistry", "protoFileName", "file_google_protobuf_timestamp", "fileDesc", "file_google_protobuf_any", "fileDesc", "AnySchema", "messageDesc", "LEGACY_REQUIRED", "writeDefaults", "makeWriteOptions", "options", "toBinary", "schema", "message", "writeFields", "BinaryWriter", "reflect", "writer", "opts", "msg", "_a", "f", "writeField", "no", "wireType", "data", "field", "writeScalar", "ScalarType", "writeListField", "writeMessageField", "key", "val", "writeMapEntry", "scalarType", "fieldNo", "value", "writeScalarValue", "writeTypeOfScalar", "WireType", "list", "item", "type", "anyPack", "schema", "message", "into", "ret", "create", "AnySchema", "toBinary", "typeNameToUrl", "anyIs", "any", "descOrTypeName", "want", "got", "typeUrlToName", "anyUnpack", "registryOrMessageDesc", "desc", "fromBinary", "typeNameToUrl", "name", "typeUrlToName", "url", "slash", "file_google_protobuf_duration", "fileDesc", "file_google_protobuf_struct", "fileDesc", "StructSchema", "messageDesc", "ValueSchema", "ListValueSchema", "NullValue", "getExtension", "message", "extension", "assertExtendee", "ufs", "filterUnknownFields", "container", "field", "get", "createExtensionContainer", "uf", "readField", "BinaryReader", "setExtension", "value", "_a", "writer", "BinaryWriter", "writeField", "reader", "no", "wireType", "data", "filterUnknownFields", "unknownFields", "extension", "i", "uf", "createExtensionContainer", "value", "localName", "field", "desc", "container", "create", "reflect", "isWrapperDesc", "scalarZeroValue", "assertExtendee", "message", "LEGACY_REQUIRED", "IMPLICIT", "jsonWriteDefaults", "makeWriteOptions", "options", "toJson", "schema", "message", "reflectToJson", "reflect", "toJsonString", "_a", "jsonValue", "reflectToJson", "msg", "opts", "_a", "wktJson", "tryWktToJson", "json", "f", "LEGACY_REQUIRED", "IMPLICIT", "jsonValue", "fieldToJson", "jsonName", "tagSeen", "uf", "extension", "value", "getExtension", "container", "field", "createExtensionContainer", "val", "scalarToJson", "enumToJsonInternal", "listToJson", "mapToJson", "map", "jsonObj", "entryKey", "entryValue", "list", "jsonArr", "item", "desc", "enumAsInteger", "formatVal", "_b", "_c", "_d", "_e", "_f", "ScalarType", "checkField", "base64Encode", "anyToJson", "timestampToJson", "durationToJson", "fieldMaskToJson", "structToJson", "valueToJson", "listValueToJson", "isWrapperDesc", "valueField", "registry", "message", "anyUnpack", "reflect", "text", "nanosStr", "p", "protoCamelCase", "k", "v", "ms", "z", "jsonReadDefaults", "makeReadOptions", "options", "fromJsonString", "schema", "json", "fromJson", "parseJsonString", "fromJson", "schema", "json", "options", "msg", "reflect", "readMessage", "makeReadOptions", "e", "isFieldError", "readMessage", "msg", "json", "opts", "_a", "tryWktFromJson", "formatVal", "oneofSeen", "jsonNames", "field", "jsonKey", "jsonValue", "seen", "FieldError", "readField", "extension", "container", "get", "createExtensionContainer", "setExtension", "readScalarField", "readEnumField", "readMessageField", "readListField", "readMapField", "map", "jsonMapKey", "jsonMapValue", "value", "msgValue", "reflect", "readEnum", "tokenIgnoredUnknownEnum", "scalarFromJson", "key", "mapKeyFromJson", "list", "jsonItem", "enumValue", "tokenNull", "scalarValue", "desc", "ignoreUnknownFields", "nullAsZeroValue", "ev", "scalarZeroValue", "ScalarType", "float", "int32FromJson", "base64Decode", "e", "message", "type", "num", "parseJsonString", "jsonString", "typeName", "anyFromJson", "timestampFromJson", "durationFromJson", "fieldMaskFromJson", "structFromJson", "valueFromJson", "listValueFromJson", "isWrapperDesc", "valueField", "any", "typeUrl", "copy", "anyPack", "timestamp", "matches", "ms", "protoInt64", "duration", "match", "longSeconds", "nanosStr", "fieldMask", "camelToSnake", "str", "sc", "letter", "struct", "k", "v", "parsedV", "create", "ValueSchema", "NullValue", "listValue", "ListValueSchema", "StructSchema", "chalk", "program", "figlet", "fs", "path", "semver", "updateNotifier", "confirm", "input", "select", "chalk", "fs", "serviceDesc", "file", "path", "paths", "file_buf_validate_validate", "fileDesc", "file_google_protobuf_descriptor", "file_google_protobuf_duration", "file_google_protobuf_timestamp", "file_google_api_http", "fileDesc", "file_google_api_annotations", "fileDesc", "file_google_api_http", "file_google_protobuf_descriptor", "file_google_api_launch_stage", "fileDesc", "file_google_api_client", "fileDesc", "file_google_api_launch_stage", "file_google_protobuf_descriptor", "file_google_protobuf_duration", "file_mochabugapis_adapt_plugins_v1_plugins", "fileDesc", "file_buf_validate_validate", "file_google_api_annotations", "file_google_api_client", "UploadPluginRequestSchema", "messageDesc", "ManifestSchema", "messageDesc", "file_mochabugapis_adapt_plugins_v1_plugins", "VertexSchema", "PluginService", "serviceDesc", "file_mochabugapis_adapt_plugins_v1_plugins", "execSync", "fs", "mkdirp", "path", "chalk", "fs", "mkdirp", "path", "fileURLToPath", "readAsset", "name", "fs", "path", "fileURLToPath", "writeFile", "filePath", "content", "dir", "mkdirp", "readManifest", "fullPath", "chalk", "manifestData", "fromJsonString", "ManifestSchema", "error", "labelize", "val", "convertVertexType", "type", "addVertex", "cwd", "name", "hasConfigurator", "existingVertices", "frontendLib", "folder", "path", "fs", "mkdirp", "execFile", "vertex", "labelize", "execSync", "uiPath", "writeFile", "readAsset", "generateExport", "v", "vertexConfig", "vertices", "env", "imports", "add", "manifest", "vertexName", "input", "val", "item", "vertexType", "select", "hasConfigurator", "confirm", "frontendLib", "chalk", "vertex", "addVertex", "toJson", "VertexSchema", "fromJson", "fs", "toJsonString", "ManifestSchema", "confirm", "input", "select", "chalk", "execSync", "fs", "mkdirp", "path", "init", "dir", "name", "input", "val", "vertexType", "select", "vertexName", "hasConfigurator", "confirm", "frontendLib", "mkdirp", "cwd", "path", "writeFile", "readAsset", "defPackage", "execSync", "vertex", "addVertex", "chalk", "manifest", "labelize", "fs", "chalk", "randomBytes", "express", "fetch", "open", "pkceChallenge", "OAUTH_CALLBACK_PORT", "PORT_RANGE", "OAUTH_SCOPE", "AUDIENCE", "createCodeUrl", "clientId", "redirectUri", "scope", "state", "authUrl", "codeChallenge", "audience", "res", "createExchangeBody", "codeVerifier", "code", "startServer", "app", "attempt", "resolve", "reject", "currentPort", "server", "chalk", "err", "LOGGING_PREFIX", "waitForConsent", "issuerUrl", "errorUrl", "tokenUrl", "express", "randomBytes", "localUrls", "code_verifier", "code_challenge", "pkceChallenge", "resolveToken", "rejectToken", "token", "tokenPromise", "_", "codeUrl", "req", "queryString", "errorDescription", "body", "response", "fetch", "data", "error", "readAsset", "serverStart", "e", "open", "ConnectError", "createClient", "createGrpcTransport", "archiver", "chalk", "fg", "fs", "path", "sharp", "PassThrough", "resize", "filepath", "height", "width", "path", "sharp", "fs", "isPathSafe", "filePath", "currentWorkingDir", "folderExists", "folderPath", "absolutePath", "err", "createArchive", "folder", "resolve", "reject", "archive", "archiver", "buffers", "bufferStream", "PassThrough", "data", "res", "fg", "paths", "relativePath", "sendPlugin", "manifest", "client", "reqHeaders", "lookup", "createFileRequest", "imgOpts", "fileContent", "buffer", "create", "UploadPluginRequestSchema", "resTrailers", "resHeaders", "files", "vertex", "file", "h", "printRpcSuccess", "emulate", "endpoint", "createClient", "PluginService", "createGrpcTransport", "e", "ConnectError", "printRpcError", "chalk", "publish", "accessToken", "_insecure", "metadata", "headers", "trailers", "line", "title", "statusCode", "statusDetail", "headerInfo", "trailerInfo", "error", "name", "message", "code", "methodName", "serviceName", "meta", "details", "detail", "isValidUrl", "urlString", "banner", "chalk", "figlet", "handleInit", "dir", "cmd", "init", "handleAdd", "manifest", "readManifest", "add", "handlePublish", "endpoint", "authUrl", "client", "insecure", "errorUrl", "accessToken", "waitForConsent", "publish", "handleEmulate", "emulate", "handleVersion", "bump", "manVer", "semver", "prevVersion", "fs", "path", "toJsonString", "ManifestSchema", "main", "updateNotifier", "define_PACKAGE_JSON_default", "program", "DEFAULT_INIT_DIRECTORY", "_", "authority", "major", "minor", "patch", "error"]
|
|
7
7
|
}
|