plugnmeet-protocol-js 1.2.2-7 → 1.2.2-9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +2 -2
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs.js +2 -2
- package/dist/index.mjs.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["src/index.ts","src/gen/plugnmeet_analytics_pb.ts","src/gen/plugnmeet_auth_analytics_pb.ts","src/gen/buf/validate/validate_pb.ts","src/gen/plugnmeet_auth_recording_pb.ts","src/gen/plugnmeet_auth_room_pb.ts","src/gen/livekit_models_pb.ts","src/gen/livekit_metrics_pb.ts","src/gen/logger/options_pb.ts","src/gen/plugnmeet_recording_pb.ts","src/gen/plugnmeet_recorder_pb.ts","src/gen/plugnmeet_breakout_room_pb.ts","src/gen/plugnmeet_common_api_pb.ts","src/gen/plugnmeet_datamessage_pb.ts","src/gen/plugnmeet_nats_msg_pb.ts","src/gen/plugnmeet_common_pb.ts","src/gen/plugnmeet_room_artifacts_pb.ts","src/gen/plugnmeet_create_room_pb.ts","src/gen/plugnmeet_gen_token_pb.ts","src/gen/plugnmeet_ingress_pb.ts","src/gen/plugnmeet_lti_v1_pb.ts","src/gen/plugnmeet_polls_pb.ts","src/gen/plugnmeet_insights_pb.ts","src/gen/plugnmeet_auth_artifact_pb.ts"],"sourcesContent":["export * from \"./gen/plugnmeet_analytics_pb\";\nexport * from \"./gen/plugnmeet_auth_analytics_pb\";\nexport * from \"./gen/plugnmeet_auth_recording_pb\";\nexport * from \"./gen/plugnmeet_auth_room_pb\";\nexport * from \"./gen/plugnmeet_breakout_room_pb\";\nexport * from \"./gen/plugnmeet_common_api_pb\";\nexport * from \"./gen/plugnmeet_common_pb\";\nexport * from \"./gen/plugnmeet_create_room_pb\";\nexport * from \"./gen/plugnmeet_datamessage_pb\";\nexport * from \"./gen/plugnmeet_gen_token_pb\";\nexport * from \"./gen/plugnmeet_ingress_pb\";\nexport * from \"./gen/plugnmeet_lti_v1_pb\";\nexport * from \"./gen/plugnmeet_nats_msg_pb\";\nexport * from \"./gen/plugnmeet_polls_pb\";\nexport * from \"./gen/plugnmeet_recorder_pb\";\nexport * from \"./gen/plugnmeet_recording_pb\";\nexport * from \"./gen/plugnmeet_insights_pb\";\nexport * from \"./gen/plugnmeet_room_artifacts_pb\";\nexport * from \"./gen/plugnmeet_auth_artifact_pb\";\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_analytics.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_analytics.proto.\n */\nexport const file_plugnmeet_analytics: GenFile = /*@__PURE__*/\n fileDesc(\"ChlwbHVnbm1lZXRfYW5hbHl0aWNzLnByb3RvEglwbHVnbm1lZXQiygMKEEFuYWx5dGljc0RhdGFNc2cSMQoKZXZlbnRfdHlwZRgBIAEoDjIdLnBsdWdubWVldC5BbmFseXRpY3NFdmVudFR5cGUSLgoKZXZlbnRfbmFtZRgCIAEoDjIaLnBsdWdubWVldC5BbmFseXRpY3NFdmVudHMSDwoHcm9vbV9pZBgDIAEoCRIQCgR0aW1lGAQgASgDQgIwARIfChJldmVudF92YWx1ZV9zdHJpbmcYBSABKAlIAIgBARIkChNldmVudF92YWx1ZV9pbnRlZ2VyGAYgASgDQgIwAUgBiAEBEhcKCmhzZXRfdmFsdWUYByABKAlIAogBARIVCghyb29tX3NpZBgIIAEoCUgDiAEBEhQKB3VzZXJfaWQYCSABKAlIBIgBARIWCgl1c2VyX25hbWUYCiABKAlIBYgBARIXCgpleHRyYV9kYXRhGAsgASgJSAaIAQFCFQoTX2V2ZW50X3ZhbHVlX3N0cmluZ0IWChRfZXZlbnRfdmFsdWVfaW50ZWdlckINCgtfaHNldF92YWx1ZUILCglfcm9vbV9zaWRCCgoIX3VzZXJfaWRCDAoKX3VzZXJfbmFtZUINCgtfZXh0cmFfZGF0YSI2ChNBbmFseXRpY3NFdmVudFZhbHVlEhAKBHRpbWUYASABKANCAjABEg0KBXZhbHVlGAIgASgJImEKEkFuYWx5dGljc0V2ZW50RGF0YRIMCgRuYW1lGAEgASgJEg0KBXRvdGFsGAIgASgNEi4KBnZhbHVlcxgDIAMoCzIeLnBsdWdubWVldC5BbmFseXRpY3NFdmVudFZhbHVlIukBChFBbmFseXRpY3NSb29tSW5mbxIPCgdyb29tX2lkGAEgASgJEhIKCnJvb21fdGl0bGUYAiABKAkSHAoQcm9vbV90b3RhbF91c2VycxgDIAEoA0ICMAESGQoNcm9vbV9jcmVhdGlvbhgEIAEoA0ICMAESFgoKcm9vbV9lbmRlZBgFIAEoA0ICMAESGQoNcm9vbV9kdXJhdGlvbhgGIAEoA0ICMAESFAoMZW5hYmxlZF9lMmVlGAcgASgIEi0KBmV2ZW50cxgJIAMoCzIdLnBsdWdubWVldC5BbmFseXRpY3NFdmVudERhdGEiwwEKEUFuYWx5dGljc1VzZXJJbmZvEg8KB3VzZXJfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIQCghpc19hZG1pbhgDIAEoCBIXCgpleHRyYV9kYXRhGAQgASgJSACIAQESFwoKZXhfdXNlcl9pZBgFIAEoCUgBiAEBEi0KBmV2ZW50cxgGIAMoCzIdLnBsdWdubWVldC5BbmFseXRpY3NFdmVudERhdGFCDQoLX2V4dHJhX2RhdGFCDQoLX2V4X3VzZXJfaWQiagoPQW5hbHl0aWNzUmVzdWx0EioKBHJvb20YASABKAsyHC5wbHVnbm1lZXQuQW5hbHl0aWNzUm9vbUluZm8SKwoFdXNlcnMYAiADKAsyHC5wbHVnbm1lZXQuQW5hbHl0aWNzVXNlckluZm8ilgEKFkFuYWx5dGljc1JlZGlzVXNlckluZm8SEQoEbmFtZRgBIAEoCUgAiAEBEhAKCGlzX2FkbWluGAIgASgIEhcKCmV4dHJhX2RhdGEYAyABKAlIAYgBARIXCgpleF91c2VyX2lkGAQgASgJSAKIAQFCBwoFX25hbWVCDQoLX2V4dHJhX2RhdGFCDQoLX2V4X3VzZXJfaWQqUgoSQW5hbHl0aWNzRXZlbnRUeXBlEh0KGUFOQUxZVElDU19FVkVOVF9UWVBFX1JPT00QABIdChlBTkFMWVRJQ1NfRVZFTlRfVFlQRV9VU0VSEAEq2g4KD0FuYWx5dGljc0V2ZW50cxIbChdBTkFMWVRJQ1NfRVZFTlRfVU5LTk9XThAAEiMKH0FOQUxZVElDU19FVkVOVF9ST09NX1BPTExfQURERUQQARIjCh9BTkFMWVRJQ1NfRVZFTlRfUk9PTV9QT0xMX0VOREVEEAISHwobQU5BTFlUSUNTX0VWRU5UX1VTRVJfSk9JTkVEEAMSKQolQU5BTFlUSUNTX0VWRU5UX1JPT01fUkVDT1JESU5HX1NUQVRVUxAEEiQKIEFOQUxZVElDU19FVkVOVF9ST09NX1JUTVBfU1RBVFVTEAUSJgoiQU5BTFlUSUNTX0VWRU5UX1JPT01fQlJFQUtPVVRfUk9PTRAGEigKJEFOQUxZVElDU19FVkVOVF9ST09NX0VUSEVSUEFEX1NUQVRVUxAHEjUKMUFOQUxZVElDU19FVkVOVF9ST09NX0VYVEVSTkFMX0RJU1BMQVlfTElOS19TVEFUVVMQCBI1CjFBTkFMWVRJQ1NfRVZFTlRfUk9PTV9FWFRFUk5BTF9NRURJQV9QTEFZRVJfU1RBVFVTEAkSLgoqQU5BTFlUSUNTX0VWRU5UX1JPT01fU1BFRUNIX1NFUlZJQ0VfU1RBVFVTEAoSMwovQU5BTFlUSUNTX0VWRU5UX1JPT01fU1BFRUNIX1NFUlZJQ0VfVE9UQUxfVVNBR0UQCxIoCiRBTkFMWVRJQ1NfRVZFTlRfUk9PTV9JTkdSRVNTX0NSRUFURUQQDBIpCiVBTkFMWVRJQ1NfRVZFTlRfUk9PTV9XSElURUJPQVJEX0ZJTEVTEA0SNgoyQU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfVFJBTlNDUklQVElPTl9TVEFUVVMQHxI7CjdBTkFMWVRJQ1NfRVZFTlRfUk9PTV9JTlNJR0hUU19UUkFOU0NSSVBUSU9OX1RPVEFMX1VTQUdFECASQAo8QU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfU1lOVEhFU0laRURfU1BFRUNIX1RPVEFMX1VTQUdFECESOQo1QU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfQ0hBVF9UUkFOU0xBVElPTl9TVEFUVVMQIhI+CjpBTkFMWVRJQ1NfRVZFTlRfUk9PTV9JTlNJR0hUU19DSEFUX1RSQU5TTEFUSU9OX1RPVEFMX1VTQUdFECMSNQoxQU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfQUlfVEVYVF9DSEFUX1NUQVRVUxAkEkYKQkFOQUxZVElDU19FVkVOVF9ST09NX0lOU0lHSFRTX0FJX1RFWFRfQ0hBVF9JTlRFUkFDVElPTl9UT1RBTF9VU0FHRRAlEkgKREFOQUxZVElDU19FVkVOVF9ST09NX0lOU0lHSFRTX0FJX1RFWFRfQ0hBVF9TVU1NQVJJWkFUSU9OX1RPVEFMX1VTQUdFECYSQQo9QU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfQUlfTUVFVElOR19TVU1NQVJJWkFUSU9OX1NUQVRVUxAnEh0KGUFOQUxZVElDU19FVkVOVF9VU0VSX0xFRlQQDhIjCh9BTkFMWVRJQ1NfRVZFTlRfVVNFUl9NSUNfU1RBVFVTEA8SHwobQU5BTFlUSUNTX0VWRU5UX1VTRVJfVEFMS0VEEBASKAokQU5BTFlUSUNTX0VWRU5UX1VTRVJfVEFMS0VEX0RVUkFUSU9OEBESJgoiQU5BTFlUSUNTX0VWRU5UX1VTRVJfV0VCQ0FNX1NUQVRVUxASEiwKKEFOQUxZVElDU19FVkVOVF9VU0VSX1NDUkVFTl9TSEFSRV9TVEFUVVMQExIjCh9BTkFMWVRJQ1NfRVZFTlRfVVNFUl9WT1RFRF9QT0xMEBQSJAogQU5BTFlUSUNTX0VWRU5UX1VTRVJfUFVCTElDX0NIQVQQFRIlCiFBTkFMWVRJQ1NfRVZFTlRfVVNFUl9QUklWQVRFX0NIQVQQFhIjCh9BTkFMWVRJQ1NfRVZFTlRfVVNFUl9DSEFUX0ZJTEVTEBcSLQopQU5BTFlUSUNTX0VWRU5UX1VTRVJfV0hJVEVCT0FSRF9BTk5PVEFURUQQGBIpCiVBTkFMWVRJQ1NfRVZFTlRfVVNFUl9XSElURUJPQVJEX0ZJTEVTEBkSLgoqQU5BTFlUSUNTX0VWRU5UX1VTRVJfU1BFRUNIX1NFUlZJQ0VTX1VTQUdFEBoSLworQU5BTFlUSUNTX0VWRU5UX1VTRVJfU1BFRUNIX1NFUlZJQ0VTX1NUQVRVUxAbEi0KKUFOQUxZVElDU19FVkVOVF9VU0VSX0lOVEVSRkFDRV9WSVNJQklMSVRZEBwSIwofQU5BTFlUSUNTX0VWRU5UX1VTRVJfUkFJU0VfSEFORBAdEisKJ0FOQUxZVElDU19FVkVOVF9VU0VSX0NPTk5FQ1RJT05fUVVBTElUWRAeKoUBCg9BbmFseXRpY3NTdGF0dXMSHAoYQU5BTFlUSUNTX1NUQVRVU19TVEFSVEVEEAASGgoWQU5BTFlUSUNTX1NUQVRVU19FTkRFRBABEhoKFkFOQUxZVElDU19TVEFUVVNfTVVURUQQAhIcChhBTkFMWVRJQ1NfU1RBVFVTX1VOTVVURUQQA0KgAQoNY29tLnBsdWdubWVldEIXUGx1Z25tZWV0QW5hbHl0aWNzUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * @generated from message plugnmeet.AnalyticsDataMsg\n */\nexport type AnalyticsDataMsg = Message<\"plugnmeet.AnalyticsDataMsg\"> & {\n /**\n * @generated from field: plugnmeet.AnalyticsEventType event_type = 1;\n */\n eventType: AnalyticsEventType;\n\n /**\n * @generated from field: plugnmeet.AnalyticsEvents event_name = 2;\n */\n eventName: AnalyticsEvents;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n\n /**\n * should be unix milliseconds\n *\n * @generated from field: int64 time = 4 [jstype = JS_STRING];\n */\n time: string;\n\n /**\n * if we pass value here then it will use redis SET to set the value for the key\n *\n * @generated from field: optional string event_value_string = 5;\n */\n eventValueString?: string;\n\n /**\n * if we pass value here then it will use redis INCRBY to increment value for the key\n *\n * @generated from field: optional int64 event_value_integer = 6 [jstype = JS_STRING];\n */\n eventValueInteger?: string;\n\n /**\n * if we pass value here then it will use redis HSET to set hash field value for the key\n * hash field will be unix milliseconds, so it will remain unique as always\n *\n * @generated from field: optional string hset_value = 7;\n */\n hsetValue?: string;\n\n /**\n * @generated from field: optional string room_sid = 8;\n */\n roomSid?: string;\n\n /**\n * @generated from field: optional string user_id = 9;\n */\n userId?: string;\n\n /**\n * @generated from field: optional string user_name = 10;\n */\n userName?: string;\n\n /**\n * this extra_data can be use for various purposes like, room or user metadata\n *\n * @generated from field: optional string extra_data = 11;\n */\n extraData?: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsDataMsg.\n * Use `create(AnalyticsDataMsgSchema)` to create a new message.\n */\nexport const AnalyticsDataMsgSchema: GenMessage<AnalyticsDataMsg> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 0);\n\n/**\n * @generated from message plugnmeet.AnalyticsEventValue\n */\nexport type AnalyticsEventValue = Message<\"plugnmeet.AnalyticsEventValue\"> & {\n /**\n * @generated from field: int64 time = 1 [jstype = JS_STRING];\n */\n time: string;\n\n /**\n * @generated from field: string value = 2;\n */\n value: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsEventValue.\n * Use `create(AnalyticsEventValueSchema)` to create a new message.\n */\nexport const AnalyticsEventValueSchema: GenMessage<AnalyticsEventValue> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 1);\n\n/**\n * @generated from message plugnmeet.AnalyticsEventData\n */\nexport type AnalyticsEventData = Message<\"plugnmeet.AnalyticsEventData\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: uint32 total = 2;\n */\n total: number;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsEventValue values = 3;\n */\n values: AnalyticsEventValue[];\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsEventData.\n * Use `create(AnalyticsEventDataSchema)` to create a new message.\n */\nexport const AnalyticsEventDataSchema: GenMessage<AnalyticsEventData> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 2);\n\n/**\n * @generated from message plugnmeet.AnalyticsRoomInfo\n */\nexport type AnalyticsRoomInfo = Message<\"plugnmeet.AnalyticsRoomInfo\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_title = 2;\n */\n roomTitle: string;\n\n /**\n * @generated from field: int64 room_total_users = 3 [jstype = JS_STRING];\n */\n roomTotalUsers: string;\n\n /**\n * @generated from field: int64 room_creation = 4 [jstype = JS_STRING];\n */\n roomCreation: string;\n\n /**\n * @generated from field: int64 room_ended = 5 [jstype = JS_STRING];\n */\n roomEnded: string;\n\n /**\n * @generated from field: int64 room_duration = 6 [jstype = JS_STRING];\n */\n roomDuration: string;\n\n /**\n * @generated from field: bool enabled_e2ee = 7;\n */\n enabledE2ee: boolean;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsEventData events = 9;\n */\n events: AnalyticsEventData[];\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsRoomInfo.\n * Use `create(AnalyticsRoomInfoSchema)` to create a new message.\n */\nexport const AnalyticsRoomInfoSchema: GenMessage<AnalyticsRoomInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 3);\n\n/**\n * @generated from message plugnmeet.AnalyticsUserInfo\n */\nexport type AnalyticsUserInfo = Message<\"plugnmeet.AnalyticsUserInfo\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: bool is_admin = 3;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: optional string extra_data = 4;\n */\n extraData?: string;\n\n /**\n * @generated from field: optional string ex_user_id = 5;\n */\n exUserId?: string;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsEventData events = 6;\n */\n events: AnalyticsEventData[];\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsUserInfo.\n * Use `create(AnalyticsUserInfoSchema)` to create a new message.\n */\nexport const AnalyticsUserInfoSchema: GenMessage<AnalyticsUserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 4);\n\n/**\n * @generated from message plugnmeet.AnalyticsResult\n */\nexport type AnalyticsResult = Message<\"plugnmeet.AnalyticsResult\"> & {\n /**\n * @generated from field: plugnmeet.AnalyticsRoomInfo room = 1;\n */\n room?: AnalyticsRoomInfo;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsUserInfo users = 2;\n */\n users: AnalyticsUserInfo[];\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsResult.\n * Use `create(AnalyticsResultSchema)` to create a new message.\n */\nexport const AnalyticsResultSchema: GenMessage<AnalyticsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 5);\n\n/**\n * @generated from message plugnmeet.AnalyticsRedisUserInfo\n */\nexport type AnalyticsRedisUserInfo = Message<\"plugnmeet.AnalyticsRedisUserInfo\"> & {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: bool is_admin = 2;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: optional string extra_data = 3;\n */\n extraData?: string;\n\n /**\n * @generated from field: optional string ex_user_id = 4;\n */\n exUserId?: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsRedisUserInfo.\n * Use `create(AnalyticsRedisUserInfoSchema)` to create a new message.\n */\nexport const AnalyticsRedisUserInfoSchema: GenMessage<AnalyticsRedisUserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 6);\n\n/**\n * @generated from enum plugnmeet.AnalyticsEventType\n */\nexport enum AnalyticsEventType {\n /**\n * @generated from enum value: ANALYTICS_EVENT_TYPE_ROOM = 0;\n */\n ROOM = 0,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_TYPE_USER = 1;\n */\n USER = 1,\n}\n\n/**\n * Describes the enum plugnmeet.AnalyticsEventType.\n */\nexport const AnalyticsEventTypeSchema: GenEnum<AnalyticsEventType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_analytics, 0);\n\n/**\n * @generated from enum plugnmeet.AnalyticsEvents\n */\nexport enum AnalyticsEvents {\n /**\n * @generated from enum value: ANALYTICS_EVENT_UNKNOWN = 0;\n */\n ANALYTICS_EVENT_UNKNOWN = 0,\n\n /**\n * room related\n *\n * @generated from enum value: ANALYTICS_EVENT_ROOM_POLL_ADDED = 1;\n */\n ANALYTICS_EVENT_ROOM_POLL_ADDED = 1,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_POLL_ENDED = 2;\n */\n ANALYTICS_EVENT_ROOM_POLL_ENDED = 2,\n\n /**\n * user join will be room related\n * after take record it will pass to user\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_JOINED = 3;\n */\n ANALYTICS_EVENT_USER_JOINED = 3,\n\n /**\n * room recorder\n *\n * @generated from enum value: ANALYTICS_EVENT_ROOM_RECORDING_STATUS = 4;\n */\n ANALYTICS_EVENT_ROOM_RECORDING_STATUS = 4,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_RTMP_STATUS = 5;\n */\n ANALYTICS_EVENT_ROOM_RTMP_STATUS = 5,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_BREAKOUT_ROOM = 6;\n */\n ANALYTICS_EVENT_ROOM_BREAKOUT_ROOM = 6,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_ETHERPAD_STATUS = 7;\n */\n ANALYTICS_EVENT_ROOM_ETHERPAD_STATUS = 7,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_EXTERNAL_DISPLAY_LINK_STATUS = 8;\n */\n ANALYTICS_EVENT_ROOM_EXTERNAL_DISPLAY_LINK_STATUS = 8,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_EXTERNAL_MEDIA_PLAYER_STATUS = 9;\n */\n ANALYTICS_EVENT_ROOM_EXTERNAL_MEDIA_PLAYER_STATUS = 9,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_SPEECH_SERVICE_STATUS = 10;\n */\n ANALYTICS_EVENT_ROOM_SPEECH_SERVICE_STATUS = 10,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_SPEECH_SERVICE_TOTAL_USAGE = 11;\n */\n ANALYTICS_EVENT_ROOM_SPEECH_SERVICE_TOTAL_USAGE = 11,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INGRESS_CREATED = 12;\n */\n ANALYTICS_EVENT_ROOM_INGRESS_CREATED = 12,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_WHITEBOARD_FILES = 13;\n */\n ANALYTICS_EVENT_ROOM_WHITEBOARD_FILES = 13,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_TRANSCRIPTION_STATUS = 31;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_TRANSCRIPTION_STATUS = 31,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_TRANSCRIPTION_TOTAL_USAGE = 32;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_TRANSCRIPTION_TOTAL_USAGE = 32,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_SYNTHESIZED_SPEECH_TOTAL_USAGE = 33;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_SYNTHESIZED_SPEECH_TOTAL_USAGE = 33,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_CHAT_TRANSLATION_STATUS = 34;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_CHAT_TRANSLATION_STATUS = 34,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_CHAT_TRANSLATION_TOTAL_USAGE = 35;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_CHAT_TRANSLATION_TOTAL_USAGE = 35,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_STATUS = 36;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_STATUS = 36,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_INTERACTION_TOTAL_USAGE = 37;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_INTERACTION_TOTAL_USAGE = 37,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_SUMMARIZATION_TOTAL_USAGE = 38;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_SUMMARIZATION_TOTAL_USAGE = 38,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_AI_MEETING_SUMMARIZATION_STATUS = 39;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_AI_MEETING_SUMMARIZATION_STATUS = 39,\n\n /**\n * here all related with user\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_LEFT = 14;\n */\n ANALYTICS_EVENT_USER_LEFT = 14,\n\n /**\n * microphone\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_MIC_STATUS = 15;\n */\n ANALYTICS_EVENT_USER_MIC_STATUS = 15,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_TALKED = 16;\n */\n ANALYTICS_EVENT_USER_TALKED = 16,\n\n /**\n * in milliseconds\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_TALKED_DURATION = 17;\n */\n ANALYTICS_EVENT_USER_TALKED_DURATION = 17,\n\n /**\n * webcam\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_WEBCAM_STATUS = 18;\n */\n ANALYTICS_EVENT_USER_WEBCAM_STATUS = 18,\n\n /**\n * screen share\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_SCREEN_SHARE_STATUS = 19;\n */\n ANALYTICS_EVENT_USER_SCREEN_SHARE_STATUS = 19,\n\n /**\n * polls\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_VOTED_POLL = 20;\n */\n ANALYTICS_EVENT_USER_VOTED_POLL = 20,\n\n /**\n * chat\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_PUBLIC_CHAT = 21;\n */\n ANALYTICS_EVENT_USER_PUBLIC_CHAT = 21,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_PRIVATE_CHAT = 22;\n */\n ANALYTICS_EVENT_USER_PRIVATE_CHAT = 22,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_CHAT_FILES = 23;\n */\n ANALYTICS_EVENT_USER_CHAT_FILES = 23,\n\n /**\n * whiteboard\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_WHITEBOARD_ANNOTATED = 24;\n */\n ANALYTICS_EVENT_USER_WHITEBOARD_ANNOTATED = 24,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_WHITEBOARD_FILES = 25;\n */\n ANALYTICS_EVENT_USER_WHITEBOARD_FILES = 25,\n\n /**\n * speech services\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_SPEECH_SERVICES_USAGE = 26;\n */\n ANALYTICS_EVENT_USER_SPEECH_SERVICES_USAGE = 26,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_SPEECH_SERVICES_STATUS = 27;\n */\n ANALYTICS_EVENT_USER_SPEECH_SERVICES_STATUS = 27,\n\n /**\n * etc\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_INTERFACE_VISIBILITY = 28;\n */\n ANALYTICS_EVENT_USER_INTERFACE_VISIBILITY = 28,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_RAISE_HAND = 29;\n */\n ANALYTICS_EVENT_USER_RAISE_HAND = 29,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_CONNECTION_QUALITY = 30;\n */\n ANALYTICS_EVENT_USER_CONNECTION_QUALITY = 30,\n}\n\n/**\n * Describes the enum plugnmeet.AnalyticsEvents.\n */\nexport const AnalyticsEventsSchema: GenEnum<AnalyticsEvents> = /*@__PURE__*/\n enumDesc(file_plugnmeet_analytics, 1);\n\n/**\n * @generated from enum plugnmeet.AnalyticsStatus\n */\nexport enum AnalyticsStatus {\n /**\n * @generated from enum value: ANALYTICS_STATUS_STARTED = 0;\n */\n STARTED = 0,\n\n /**\n * @generated from enum value: ANALYTICS_STATUS_ENDED = 1;\n */\n ENDED = 1,\n\n /**\n * @generated from enum value: ANALYTICS_STATUS_MUTED = 2;\n */\n MUTED = 2,\n\n /**\n * @generated from enum value: ANALYTICS_STATUS_UNMUTED = 3;\n */\n UNMUTED = 3,\n}\n\n/**\n * Describes the enum plugnmeet.AnalyticsStatus.\n */\nexport const AnalyticsStatusSchema: GenEnum<AnalyticsStatus> = /*@__PURE__*/\n enumDesc(file_plugnmeet_analytics, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_auth_analytics.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_auth_analytics.proto.\n */\nexport const file_plugnmeet_auth_analytics: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5wbHVnbm1lZXRfYXV0aF9hbmFseXRpY3MucHJvdG8SCXBsdWdubWVldCJUChFGZXRjaEFuYWx5dGljc1JlcRIQCghyb29tX2lkcxgBIAMoCRIMCgRmcm9tGAIgASgNEg0KBWxpbWl0GAMgASgNEhAKCG9yZGVyX2J5GAQgASgJInIKDUFuYWx5dGljc0luZm8SDwoHcm9vbV9pZBgBIAEoCRIPCgdmaWxlX2lkGAIgASgJEhEKCWZpbGVfbmFtZRgDIAEoCRIRCglmaWxlX3NpemUYBCABKAESGQoNY3JlYXRpb25fdGltZRgFIAEoA0ICMAEilAEKFEZldGNoQW5hbHl0aWNzUmVzdWx0EhsKD3RvdGFsX2FuYWx5dGljcxgBIAEoA0ICMAESDAoEZnJvbRgCIAEoDRINCgVsaW1pdBgDIAEoDRIQCghvcmRlcl9ieRgEIAEoCRIwCg5hbmFseXRpY3NfbGlzdBgFIAMoCzIYLnBsdWdubWVldC5BbmFseXRpY3NJbmZvImEKEUZldGNoQW5hbHl0aWNzUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSLwoGcmVzdWx0GAMgASgLMh8ucGx1Z25tZWV0LkZldGNoQW5hbHl0aWNzUmVzdWx0Ii0KEkRlbGV0ZUFuYWx5dGljc1JlcRIXCgdmaWxlX2lkGAEgASgJQga6SAPIAQEiMQoSRGVsZXRlQW5hbHl0aWNzUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkiNwocR2V0QW5hbHl0aWNzRG93bmxvYWRUb2tlblJlcRIXCgdmaWxlX2lkGAEgASgJQga6SAPIAQEiWQocR2V0QW5hbHl0aWNzRG93bmxvYWRUb2tlblJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhIKBXRva2VuGAMgASgJSACIAQFCCAoGX3Rva2VuQqQBCg1jb20ucGx1Z25tZWV0QhtQbHVnbm1lZXRBdXRoQW5hbHl0aWNzUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_buf_validate_validate]);\n\n/**\n * @generated from message plugnmeet.FetchAnalyticsReq\n */\nexport type FetchAnalyticsReq = Message<\"plugnmeet.FetchAnalyticsReq\"> & {\n /**\n * @generated from field: repeated string room_ids = 1;\n */\n roomIds: string[];\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n};\n\n/**\n * Describes the message plugnmeet.FetchAnalyticsReq.\n * Use `create(FetchAnalyticsReqSchema)` to create a new message.\n */\nexport const FetchAnalyticsReqSchema: GenMessage<FetchAnalyticsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 0);\n\n/**\n * @generated from message plugnmeet.AnalyticsInfo\n */\nexport type AnalyticsInfo = Message<\"plugnmeet.AnalyticsInfo\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string file_id = 2;\n */\n fileId: string;\n\n /**\n * @generated from field: string file_name = 3;\n */\n fileName: string;\n\n /**\n * @generated from field: double file_size = 4;\n */\n fileSize: number;\n\n /**\n * @generated from field: int64 creation_time = 5 [jstype = JS_STRING];\n */\n creationTime: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsInfo.\n * Use `create(AnalyticsInfoSchema)` to create a new message.\n */\nexport const AnalyticsInfoSchema: GenMessage<AnalyticsInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 1);\n\n/**\n * @generated from message plugnmeet.FetchAnalyticsResult\n */\nexport type FetchAnalyticsResult = Message<\"plugnmeet.FetchAnalyticsResult\"> & {\n /**\n * @generated from field: int64 total_analytics = 1 [jstype = JS_STRING];\n */\n totalAnalytics: string;\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsInfo analytics_list = 5;\n */\n analyticsList: AnalyticsInfo[];\n};\n\n/**\n * Describes the message plugnmeet.FetchAnalyticsResult.\n * Use `create(FetchAnalyticsResultSchema)` to create a new message.\n */\nexport const FetchAnalyticsResultSchema: GenMessage<FetchAnalyticsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 2);\n\n/**\n * @generated from message plugnmeet.FetchAnalyticsRes\n */\nexport type FetchAnalyticsRes = Message<\"plugnmeet.FetchAnalyticsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.FetchAnalyticsResult result = 3;\n */\n result?: FetchAnalyticsResult;\n};\n\n/**\n * Describes the message plugnmeet.FetchAnalyticsRes.\n * Use `create(FetchAnalyticsResSchema)` to create a new message.\n */\nexport const FetchAnalyticsResSchema: GenMessage<FetchAnalyticsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 3);\n\n/**\n * @generated from message plugnmeet.DeleteAnalyticsReq\n */\nexport type DeleteAnalyticsReq = Message<\"plugnmeet.DeleteAnalyticsReq\"> & {\n /**\n * @generated from field: string file_id = 1;\n */\n fileId: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteAnalyticsReq.\n * Use `create(DeleteAnalyticsReqSchema)` to create a new message.\n */\nexport const DeleteAnalyticsReqSchema: GenMessage<DeleteAnalyticsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 4);\n\n/**\n * @generated from message plugnmeet.DeleteAnalyticsRes\n */\nexport type DeleteAnalyticsRes = Message<\"plugnmeet.DeleteAnalyticsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteAnalyticsRes.\n * Use `create(DeleteAnalyticsResSchema)` to create a new message.\n */\nexport const DeleteAnalyticsResSchema: GenMessage<DeleteAnalyticsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 5);\n\n/**\n * @generated from message plugnmeet.GetAnalyticsDownloadTokenReq\n */\nexport type GetAnalyticsDownloadTokenReq = Message<\"plugnmeet.GetAnalyticsDownloadTokenReq\"> & {\n /**\n * @generated from field: string file_id = 1;\n */\n fileId: string;\n};\n\n/**\n * Describes the message plugnmeet.GetAnalyticsDownloadTokenReq.\n * Use `create(GetAnalyticsDownloadTokenReqSchema)` to create a new message.\n */\nexport const GetAnalyticsDownloadTokenReqSchema: GenMessage<GetAnalyticsDownloadTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 6);\n\n/**\n * @generated from message plugnmeet.GetAnalyticsDownloadTokenRes\n */\nexport type GetAnalyticsDownloadTokenRes = Message<\"plugnmeet.GetAnalyticsDownloadTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string token = 3;\n */\n token?: string;\n};\n\n/**\n * Describes the message plugnmeet.GetAnalyticsDownloadTokenRes.\n * Use `create(GetAnalyticsDownloadTokenResSchema)` to create a new message.\n */\nexport const GetAnalyticsDownloadTokenResSchema: GenMessage<GetAnalyticsDownloadTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 7);\n\n","// Copyright 2023-2026 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.11.0 with parameter \"target=ts\"\n// @generated from file buf/validate/validate.proto (package buf.validate, syntax proto2)\n/* eslint-disable */\n\n// [Protovalidate](https://protovalidate.com/) is the semantic validation library for Protobuf.\n// It provides standard annotations to validate common rules on messages and fields, as well as the ability to use [CEL](https://cel.dev) to write custom rules.\n// It's the next generation of [protoc-gen-validate](https://github.com/bufbuild/protoc-gen-validate).\n//\n// This package provides the options, messages, and enums that power Protovalidate.\n// Apply its options to messages, fields, and oneofs in your Protobuf schemas to add validation rules:\n//\n// ```proto\n// message User {\n// string id = 1 [(buf.validate.field).string.uuid = true];\n// string first_name = 2 [(buf.validate.field).string.max_len = 64];\n// string last_name = 3 [(buf.validate.field).string.max_len = 64];\n//\n// option (buf.validate.message).cel = {\n// id: \"first_name_requires_last_name\"\n// message: \"last_name must be present if first_name is present\"\n// expression: \"!has(this.first_name) || has(this.last_name)\"\n// };\n// }\n// ```\n//\n// These rules are enforced at runtime by language-specific libraries.\n// See the [developer quickstart](https://protovalidate.com/quickstart/) to get started, or go directly to the runtime library for your language:\n// [Go](https://github.com/bufbuild/protovalidate-go)\n// [JavaScript/TypeScript](https://github.com/bufbuild/protovalidate-es),\n// [Java](https://github.com/bufbuild/protovalidate-java),\n// [Python](https://github.com/bufbuild/protovalidate-python),\n// or [C++](https://github.com/bufbuild/protovalidate-cc).\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Duration, FieldDescriptorProto_Type, FieldMask, FieldOptions, MessageOptions, OneofOptions, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_field_mask, 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(\"ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSLaFwoKRmxvYXRSdWxlcxKDAQoFY29uc3QYASABKAJCdMJIcQpvCgtmbG9hdC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESfwoCaW4YBiADKAJCc8JIcApuCghmbG9hdC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdgoGbm90X2luGAcgAygCQmbCSGMKYQoMZmxvYXQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdQoGZmluaXRlGAggASgIQmXCSGIKYAoMZmxvYXQuZmluaXRlGlBydWxlcy5maW5pdGUgPyAodGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJykgOiAnJxIrCgdleGFtcGxlGAkgAygCQhrCSBcKFQoNZmxvYXQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i7RcKC0RvdWJsZVJ1bGVzEoQBCgVjb25zdBgBIAEoAUJ1wkhyCnAKDGRvdWJsZS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqABCgJsdBgCIAEoAUKRAcJIjQEKigEKCWRvdWJsZS5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKwAQoDbHRlGAMgASgBQqABwkicAQqZAQoKZG91YmxlLmx0ZRqKASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvQHCgJndBgEIAEoAULlB8JI4QcKjgEKCWRvdWJsZS5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsQBCgxkb3VibGUuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrOAQoWZG91YmxlLmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtQBCg1kb3VibGUuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3gEKF2RvdWJsZS5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK/CAoDZ3RlGAUgASgBQq8IwkirCAqcAQoKZG91YmxlLmd0ZRqNASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrTAQoNZG91YmxlLmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3QEKF2RvdWJsZS5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrjAQoOZG91YmxlLmd0ZV9sdGUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCu0BChhkb3VibGUuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygBQnTCSHEKbwoJZG91YmxlLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50MzJSdWxlcxKDAQoFY29uc3QYASABKAVCdMJIcQpvCgtpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygFQnPCSHAKbgoIaW50MzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoBUJmwkhjCmEKDGludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCCADKAVCGsJIFwoVCg1pbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKdFQoKSW50NjRSdWxlcxKFAQoFY29uc3QYASABKANCdjABwkhxCm8KC2ludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgDQn4wAcJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgDQo4BMAHCSIgBCoUBCglpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpkHCgJndBgEIAEoA0KKBzABwkiEBwp6CghpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKswEKC2ludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq7AQoVaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwwEKDGludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKywEKFmludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEuUHCgNndGUYBSABKANC1QcwAcJIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKANCdTABwkhwCm4KCGludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKANCaDABwkhjCmEKDGludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCSADKANCHDABwkgXChUKDWludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIp4VCgtVSW50MzJSdWxlcxKEAQoFY29uc3QYASABKA1CdcJIcgpwCgx1aW50MzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKLAQoCbHQYAiABKA1CfcJIegp4Cgl1aW50MzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnQEKA2x0ZRgDIAEoDUKNAcJIiQEKhgEKCnVpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpwHCgJndBgEIAEoDUKNB8JIiQcKewoJdWludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMdWludDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWdWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg11aW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXdWludDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEugHCgNndGUYBSABKA1C2AfCSNQHCokBCgp1aW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwwEKDXVpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKywEKF3VpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrTAQoOdWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2wEKGHVpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKAAQoCaW4YBiADKA1CdMJIcQpvCgl1aW50MzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEncKBm5vdF9pbhgHIAMoDUJnwkhkCmIKDXVpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygNQhvCSBgKFgoOdWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIq4VCgtVSW50NjRSdWxlcxKGAQoFY29uc3QYASABKARCdzABwkhyCnAKDHVpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo0BCgJsdBgCIAEoBEJ/MAHCSHoKeAoJdWludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKARCjwEwAcJIiQEKhgEKCnVpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEp4HCgJndBgEIAEoBEKPBzABwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6gcKA2d0ZRgFIAEoBELaBzABwkjUBwqJAQoKdWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygEQnYwAcJIcQpvCgl1aW50NjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoBEJpMAHCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKARCHTABwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDMyUnVsZXMShAEKBWNvbnN0GAEgASgRQnXCSHIKcAoMc2ludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygRQnTCSHEKbwoJc2ludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBFCZ8JIZApiCg1zaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKuFQoLU0ludDY0UnVsZXMShgEKBWNvbnN0GAEgASgSQncwAcJIcgpwCgxzaW50NjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKNAQoCbHQYAiABKBJCfzABwkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgSQo8BMAHCSIkBCoYBCgpzaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKeBwoCZ3QYBCABKBJCjwcwAcJIiQcKewoJc2ludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMc2ludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWc2ludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg1zaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXc2ludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEuoHCgNndGUYBSABKBJC2gcwAcJI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoIBCgJpbhgGIAMoEkJ2MAHCSHEKbwoJc2ludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ5CgZub3RfaW4YByADKBJCaTABwkhkCmIKDXNpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygSQh0wAcJIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4irxUKDEZpeGVkMzJSdWxlcxKFAQoFY29uc3QYASABKAdCdsJIcwpxCg1maXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgQEKAmluGAYgAygHQnXCSHIKcAoKZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeAoGbm90X2luGAcgAygHQmjCSGUKYwoOZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxItCgdleGFtcGxlGAggAygHQhzCSBkKFwoPZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLAFQoMRml4ZWQ2NFJ1bGVzEocBCgVjb25zdBgBIAEoBkJ4MAHCSHMKcQoNZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo8BCgJsdBgCIAEoBkKAATABwkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASoAEKA2x0ZRgDIAEoBkKQATABwkiKAQqHAQoLZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqMHCgJndBgEIAEoBkKUBzABwkiOBwp8CgpmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLvBwoDZ3RlGAUgASgGQt8HMAHCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoMBCgJpbhgGIAMoBkJ3MAHCSHIKcAoKZml4ZWQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSegoGbm90X2luGAcgAygGQmowAcJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi8KB2V4YW1wbGUYCCADKAZCHjABwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwBUKDVNGaXhlZDMyUnVsZXMShgEKBWNvbnN0GAEgASgPQnfCSHQKcgoOc2ZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKNAQoCbHQYAiABKA9Cf8JIfAp6CgtzZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgPQo8BwkiLAQqIAQoMc2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKA9ClwfCSJMHCn0KC3NmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoD0LiB8JI3gcKiwEKDHNmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKCAQoCaW4YBiADKA9CdsJIcwpxCgtzZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeQoGbm90X2luGAcgAygPQmnCSGYKZAoPc2ZpeGVkMzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLgoHZXhhbXBsZRgIIAMoD0IdwkgaChgKEHNmaXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuItEVCg1TRml4ZWQ2NFJ1bGVzEogBCgVjb25zdBgBIAEoEEJ5MAHCSHQKcgoOc2ZpeGVkNjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKQAQoCbHQYAiABKBBCgQEwAcJIfAp6CgtzZml4ZWQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKhAQoDbHRlGAMgASgQQpEBMAHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqgHCgJndBgEIAEoEEKZBzABwkiTBwp9CgtzZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvQHCgNndGUYBSABKBBC5AcwAcJI3gcKiwEKDHNmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKEAQoCaW4YBiADKBBCeDABwkhzCnEKC3NmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ7CgZub3RfaW4YByADKBBCazABwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEjAKB2V4YW1wbGUYCCADKBBCHzABwkgaChgKEHNmaXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIscBCglCb29sUnVsZXMSggEKBWNvbnN0GAEgASgIQnPCSHAKbgoKYm9vbC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEioKB2V4YW1wbGUYAiADKAhCGcJIFgoUCgxib29sLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAiKVOQoLU3RyaW5nUnVsZXMShgEKBWNvbnN0GAEgASgJQnfCSHQKcgoMc3RyaW5nLmNvbnN0GmJ0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsIGAlc2AnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKAAQoDbGVuGBMgASgEQnMwAcJIbgpsCgpzdHJpbmcubGVuGl51aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEpsBCgdtaW5fbGVuGAIgASgEQokBMAHCSIMBCoABCg5zdHJpbmcubWluX2xlbhpudWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSmQEKB21heF9sZW4YAyABKARChwEwAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSnQEKCWxlbl9ieXRlcxgUIAEoBEKJATABwkiDAQqAAQoQc3RyaW5nLmxlbl9ieXRlcxpsdWludChieXRlcyh0aGlzKS5zaXplKCkpICE9IHJ1bGVzLmxlbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5sZW5fYnl0ZXNdKSA6ICcnEqUBCgltaW5fYnl0ZXMYBCABKARCkQEwAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fYnl0ZXNdKSA6ICcnEqQBCgltYXhfYnl0ZXMYBSABKARCkAEwAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSgAEKAmluGAogAygJQnTCSHEKbwoJc3RyaW5nLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YCyADKAlCZ8JIZApiCg1zdHJpbmcubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS3wEKBWVtYWlsGAwgASgIQs0BwkjJAQphCgxzdHJpbmcuZW1haWwSI3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGiwhcnVsZXMuZW1haWwgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzRW1haWwoKQpkChJzdHJpbmcuZW1haWxfZW1wdHkSMnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGhohcnVsZXMuZW1haWwgfHwgdGhpcyAhPSAnJ0gAEucBCghob3N0bmFtZRgNIAEoCELSAcJIzgEKZQoPc3RyaW5nLmhvc3RuYW1lEh52YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaMiFydWxlcy5ob3N0bmFtZSB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpCmUKFXN0cmluZy5ob3N0bmFtZV9lbXB0eRItdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lGh0hcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyAhPSAnJ0gAEscBCgJpcBgOIAEoCEK4AcJItAEKVQoJc3RyaW5nLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxomIXJ1bGVzLmlwIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKCkKWwoPc3RyaW5nLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxoXIXJ1bGVzLmlwIHx8IHRoaXMgIT0gJydIABLWAQoEaXB2NBgPIAEoCELFAcJIwQEKXAoLc3RyaW5nLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaKSFydWxlcy5pcHY0IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKDQpCmEKEXN0cmluZy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGhkhcnVsZXMuaXB2NCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjYYECABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGikhcnVsZXMuaXB2NiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg2KQphChFzdHJpbmcuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxoZIXJ1bGVzLmlwdjYgfHwgdGhpcyAhPSAnJ0gAEr8BCgN1cmkYESABKAhCrwHCSKsBClEKCnN0cmluZy51cmkSGXZhbHVlIG11c3QgYmUgYSB2YWxpZCBVUkkaKCFydWxlcy51cmkgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzVXJpKCkKVgoQc3RyaW5nLnVyaV9lbXB0eRIodmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVSSRoYIXJ1bGVzLnVyaSB8fCB0aGlzICE9ICcnSAAScAoHdXJpX3JlZhgSIAEoCEJdwkhaClgKDnN0cmluZy51cmlfcmVmEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJIFJlZmVyZW5jZRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEvUBCgR1bGlkGCMgASgIQuQBwkjgAQqCAQoLc3RyaW5nLnVsaWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVTElEGlchcnVsZXMudWxpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTddWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNX0kJykKWQoRc3RyaW5nLnVsaWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVTElEGhkhcnVsZXMudWxpZCB8fCB0aGlzICE9ICcnSAASqAUKEHdlbGxfa25vd25fcmVnZXgYGCABKA4yGC5idWYudmFsaWRhdGUuS25vd25SZWdleELxBMJI7QQK8AEKI3N0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lEiZ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRqgAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXjo/WzAtOWEtekEtWiEjJCUmXCcqKy0uXl98flx4NjBdKyQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSskJykKjQEKKXN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lX2VtcHR5EjV2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRopcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgIT0gJycK5wEKJHN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl92YWx1ZRIndmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlGpUBcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAyIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXlteXHUwMDAwLVx1MDAwOFx1MDAwQS1cdTAwMUZcdTAwN0ZdKiQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSokJylIABIOCgZzdHJpY3QYGSABKAgSLAoHZXhhbXBsZRgiIAMoCUIbwkgYChYKDnN0cmluZy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLJEgoKQnl0ZXNSdWxlcxKAAQoFY29uc3QYASABKAxCccJIbgpsCgtieXRlcy5jb25zdBpddGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBiZSAleCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEnoKA2xlbhgNIAEoBEJtMAHCSGgKZgoJYnl0ZXMubGVuGll1aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKTAQoHbWluX2xlbhgCIAEoBEKBATABwkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKKAQoHbWF4X2xlbhgDIAEoBEJ5MAHCSHQKcgoNYnl0ZXMubWF4X2xlbhphdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ3ZhbHVlIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfbGVuXSkgOiAnJxKQAQoHcGF0dGVybhgEIAEoCUJ/wkh8CnoKDWJ5dGVzLnBhdHRlcm4aaSFzdHJpbmcodGhpcykubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBtdXN0IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxKBAQoGcHJlZml4GAUgASgMQnHCSG4KbAoMYnl0ZXMucHJlZml4GlwhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ/CgZzdWZmaXgYBiABKAxCb8JIbApqCgxieXRlcy5zdWZmaXgaWiF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKDAQoIY29udGFpbnMYByABKAxCccJIbgpsCg5ieXRlcy5jb250YWlucxpaIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gJXgnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEqcBCgJpbhgIIAMoDEKaAcJIlgEKkwEKCGJ5dGVzLmluGoYBZ2V0RmllbGQocnVsZXMsICdpbicpLnNpemUoKSA+IDAgJiYgISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdgoGbm90X2luGAkgAygMQmbCSGMKYQoMYnl0ZXMubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS6wEKAmlwGAogASgIQtwBwkjYAQp0CghieXRlcy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaRiFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSA9PSAwIHx8IHRoaXMuc2l6ZSgpID09IDQgfHwgdGhpcy5zaXplKCkgPT0gMTYKYAoOYnl0ZXMuaXBfZW1wdHkSL3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBhZGRyZXNzGh0hcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgIT0gMEgAEuQBCgRpcHY0GAsgASgIQtMBwkjPAQplCgpieXRlcy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGjMhcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSA9PSAwIHx8IHRoaXMuc2l6ZSgpID09IDQKZgoQYnl0ZXMuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxofIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEuUBCgRpcHY2GAwgASgIQtQBwkjQAQpmCgpieXRlcy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGjQhcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSA9PSAwIHx8IHRoaXMuc2l6ZSgpID09IDE2CmYKEGJ5dGVzLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaHyFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLVAQoEdXVpZBgPIAEoCELEAcJIwAEKXgoKYnl0ZXMudXVpZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaNCFydWxlcy51dWlkIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKXgoQYnl0ZXMudXVpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVVSUQaHyFydWxlcy51dWlkIHx8IHRoaXMuc2l6ZSgpICE9IDBIABIrCgdleGFtcGxlGA4gAygMQhrCSBcKFQoNYnl0ZXMuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgwKCndlbGxfa25vd24i1AMKCUVudW1SdWxlcxKCAQoFY29uc3QYASABKAVCc8JIcApuCgplbnVtLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSFAoMZGVmaW5lZF9vbmx5GAIgASgIEn4KAmluGAMgAygFQnLCSG8KbQoHZW51bS5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdQoGbm90X2luGAQgAygFQmXCSGIKYAoLZW51bS5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIqCgdleGFtcGxlGAUgAygFQhnCSBYKFAoMZW51bS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi/wMKDVJlcGVhdGVkUnVsZXMSoAEKCW1pbl9pdGVtcxgBIAEoBEKMATABwkiGAQqDAQoScmVwZWF0ZWQubWluX2l0ZW1zGm11aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICd2YWx1ZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEqQBCgltYXhfaXRlbXMYAiABKARCkAEwAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSJwoFaXRlbXMYBCABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlcyoJCOgHEICAgIACIo4DCghNYXBSdWxlcxKRAQoJbWluX3BhaXJzGAEgASgEQn4wAcJIeQp3Cg1tYXAubWluX3BhaXJzGmZ1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBsZWFzdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1pbl9wYWlyc10pIDogJycSkAEKCW1heF9wYWlycxgCIAEoBEJ9MAHCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIpkXCg1EdXJhdGlvblJ1bGVzEqEBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJ3wkh0CnIKDmR1cmF0aW9uLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESnQEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnbCSHMKcQoLZHVyYXRpb24uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEpQBCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CacJIZgpkCg9kdXJhdGlvbi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i/QUKDkZpZWxkTWFza1J1bGVzEr8BCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCkwHCSI8BCowBChBmaWVsZF9tYXNrLmNvbnN0Gnh0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICd2YWx1ZSBtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS2QEKAmluGAIgAygJQswBwkjIAQrFAQoNZmllbGRfbWFzay5pbhqzASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICd2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEvMBCgZub3RfaW4YAyADKAlC4gHCSN4BCtsBChFmaWVsZF9tYXNrLm5vdF9pbhrFASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ3ZhbHVlIG11c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIikhgKDlRpbWVzdGFtcFJ1bGVzEqMBCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCeMJIdQpzCg90aW1lc3RhbXAuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKfAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIPCgdydWxlX2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCL1AgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSEwoFaW5kZXgYBiABKARCAjABSAASEgoIYm9vbF9rZXkYByABKAhIABIVCgdpbnRfa2V5GAggASgDQgIwAUgAEhYKCHVpbnRfa2V5GAkgASgEQgIwAUgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqoQEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIYChRJR05PUkVfSUZfWkVST19WQUxVRRABEhEKDUlHTk9SRV9BTFdBWVMQAyIECAIQAioMSUdOT1JFX0VNUFRZKg5JR05PUkVfREVGQVVMVCoXSUdOT1JFX0lGX0RFRkFVTFRfVkFMVUUqFUlHTk9SRV9JRl9VTlBPUFVMQVRFRCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQrsBChBjb20uYnVmLnZhbGlkYXRlQg1WYWxpZGF0ZVByb3RvUAFaR2J1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcHJvdG92YWxpZGF0ZS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3ZhbGlkYXRlogIDQlZYqgIMQnVmLlZhbGlkYXRlygIMQnVmXFZhbGlkYXRl4gIYQnVmXFZhbGlkYXRlXEdQQk1ldGFkYXRh6gINQnVmOjpWYWxpZGF0ZQ\", [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_timestamp]);\n\n/**\n * `Rule` represents a validation rule written in the Common Expression\n * Language (CEL) syntax. Each Rule includes a unique identifier, an\n * optional error message, and the CEL expression to evaluate. For more\n * information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\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.Rule\n */\nexport type Rule = Message<\"buf.validate.Rule\"> & {\n /**\n * `id` is a string that serves as a machine-readable name for this Rule.\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 Rule 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.Rule.\n * Use `create(RuleSchema)` to create a new message.\n */\nexport const RuleSchema: GenMessage<Rule> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 0);\n\n/**\n * MessageRules represents validation rules that are applied to the entire message.\n * It includes disabling options and a list of Rule messages representing Common Expression Language (CEL) validation rules.\n *\n * @generated from message buf.validate.MessageRules\n */\nexport type MessageRules = Message<\"buf.validate.MessageRules\"> & {\n /**\n * `cel_expression` is a repeated field CEL expressions. Each expression specifies a validation\n * rule to be applied to this message. These rules are written in Common Expression Language (CEL) syntax.\n *\n * This is a simplified form of the `cel` Rule field, where only `expression` is set. This allows for\n * simpler syntax when defining CEL Rules where `id` and `message` derived from the `expression`. `id` will\n * be same as the `expression`.\n *\n * For more information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message MyMessage {\n * // The field `foo` must be greater than 42.\n * option (buf.validate.message).cel_expression = \"this.foo > 42\";\n * // The field `foo` must be less than 84.\n * option (buf.validate.message).cel_expression = \"this.foo < 84\";\n * optional int32 foo = 1;\n * }\n * ```\n *\n * @generated from field: repeated string cel_expression = 5;\n */\n celExpression: string[];\n\n /**\n * `cel` is a repeated field of type Rule. Each Rule specifies a validation rule to be applied to this message.\n * These rules are written in Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\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.Rule cel = 3;\n */\n cel: Rule[];\n\n /**\n * `oneof` is a repeated field of type MessageOneofRule that specifies a list of fields\n * of which at most one can be present. If `required` is also specified, then exactly one\n * of the specified fields _must_ be present.\n *\n * This will enforce oneof-like constraints with a few features not provided by\n * actual Protobuf oneof declarations:\n * 1. Repeated and map fields are allowed in this validation. In a Protobuf oneof,\n * only scalar fields are allowed.\n * 2. Fields with implicit presence are allowed. In a Protobuf oneof, all member\n * fields have explicit presence. This means that, for the purpose of determining\n * how many fields are set, explicitly setting such a field to its zero value is\n * effectively the same as not setting it at all.\n * 3. This will always generate validation errors for a message unmarshalled from\n * serialized data that sets more than one field. With a Protobuf oneof, when\n * multiple fields are present in the serialized form, earlier values are usually\n * silently ignored when unmarshalling, with only the last field being set when\n * unmarshalling completes.\n *\n * Note that adding a field to a `oneof` will also set the IGNORE_IF_ZERO_VALUE on the fields. This means\n * only the field that is set will be validated and the unset fields are not validated according to the field rules.\n * This behavior can be overridden by setting `ignore` against a field.\n *\n * ```proto\n * message MyMessage {\n * // Only one of `field1` or `field2` _can_ be present in this message.\n * option (buf.validate.message).oneof = { fields: [\"field1\", \"field2\"] };\n * // Exactly one of `field3` or `field4` _must_ be present in this message.\n * option (buf.validate.message).oneof = { fields: [\"field3\", \"field4\"], required: true };\n * string field1 = 1;\n * bytes field2 = 2;\n * bool field3 = 3;\n * int32 field4 = 4;\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.MessageOneofRule oneof = 4;\n */\n oneof: MessageOneofRule[];\n};\n\n/**\n * Describes the message buf.validate.MessageRules.\n * Use `create(MessageRulesSchema)` to create a new message.\n */\nexport const MessageRulesSchema: GenMessage<MessageRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 1);\n\n/**\n * @generated from message buf.validate.MessageOneofRule\n */\nexport type MessageOneofRule = Message<\"buf.validate.MessageOneofRule\"> & {\n /**\n * A list of field names to include in the oneof. All field names must be\n * defined in the message. At least one field must be specified, and\n * duplicates are not permitted.\n *\n * @generated from field: repeated string fields = 1;\n */\n fields: string[];\n\n /**\n * If true, one of the fields specified _must_ be set.\n *\n * @generated from field: optional bool required = 2;\n */\n required: boolean;\n};\n\n/**\n * Describes the message buf.validate.MessageOneofRule.\n * Use `create(MessageOneofRuleSchema)` to create a new message.\n */\nexport const MessageOneofRuleSchema: GenMessage<MessageOneofRule> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 2);\n\n/**\n * The `OneofRules` message type enables you to manage rules for\n * oneof fields in your protobuf messages.\n *\n * @generated from message buf.validate.OneofRules\n */\nexport type OneofRules = Message<\"buf.validate.OneofRules\"> & {\n /**\n * If `required` is true, exactly one field of the oneof must be set. A\n * validation error is returned if no fields in the oneof are set. Further rules\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.OneofRules.\n * Use `create(OneofRulesSchema)` to create a new message.\n */\nexport const OneofRulesSchema: GenMessage<OneofRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 3);\n\n/**\n * FieldRules 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.FieldRules\n */\nexport type FieldRules = Message<\"buf.validate.FieldRules\"> & {\n /**\n * `cel_expression` is a repeated field CEL expressions. Each expression specifies a validation\n * rule to be applied to this message. These rules are written in Common Expression Language (CEL) syntax.\n *\n * This is a simplified form of the `cel` Rule field, where only `expression` is set. This allows for\n * simpler syntax when defining CEL Rules where `id` and `message` derived from the `expression`. `id` will\n * be same as the `expression`.\n *\n * For more information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.field).cel_expression = \"this > 42\"];\n * }\n * ```\n *\n * @generated from field: repeated string cel_expression = 29;\n */\n celExpression: string[];\n\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\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.Rule cel = 23;\n */\n cel: Rule[];\n\n /**\n * If `required` is true, the field must be set. A validation error is returned\n * if the field is not set.\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message FieldsWithPresence {\n * // Requires any string to be set, including the empty string.\n * optional string link = 1 [\n * (buf.validate.field).required = true\n * ];\n * // Requires true or false to be set.\n * optional bool disabled = 2 [\n * (buf.validate.field).required = true\n * ];\n * // Requires a message to be set, including the empty message.\n * SomeMessage msg = 4 [\n * (buf.validate.field).required = true\n * ];\n * }\n * ```\n *\n * All fields in the example above track presence. By default, Protovalidate\n * ignores rules on those fields if no value is set. `required` ensures that\n * the fields are set and valid.\n *\n * Fields that don't track presence are always validated by Protovalidate,\n * whether they are set or not. It is not necessary to add `required`. It\n * can be added to indicate that the field cannot be the zero value.\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message FieldsWithoutPresence {\n * // `string.email` always applies, even to an empty string.\n * string link = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * // `repeated.min_items` always applies, even to an empty list.\n * repeated string labels = 2 [\n * (buf.validate.field).repeated.min_items = 1\n * ];\n * // `required`, for fields that don't track presence, indicates\n * // the value of the field can't be the zero value.\n * int32 zero_value_not_allowed = 3 [\n * (buf.validate.field).required = true\n * ];\n * }\n * ```\n *\n * To learn which fields track presence, see the\n * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat).\n *\n * Note: While field rules can be applied to repeated items, map keys, and map\n * values, the elements are always considered to be set. Consequently,\n * specifying `repeated.items.required` is redundant.\n *\n * @generated from field: optional bool required = 25;\n */\n required: boolean;\n\n /**\n * Ignore validation rules on the field if its value matches the specified\n * criteria. See the `Ignore` enum for details.\n *\n * ```proto\n * message UpdateRequest {\n * // The uri rule only applies if the field is not an empty string.\n * string url = 1 [\n * (buf.validate.field).ignore = IGNORE_IF_ZERO_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.FieldRules.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.FieldMaskRules field_mask = 28;\n */\n value: FieldMaskRules;\n case: \"fieldMask\";\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 * Describes the message buf.validate.FieldRules.\n * Use `create(FieldRulesSchema)` to create a new message.\n */\nexport const FieldRulesSchema: GenMessage<FieldRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 4);\n\n/**\n * PredefinedRules are custom rules that can be re-used with\n * multiple fields.\n *\n * @generated from message buf.validate.PredefinedRules\n */\nexport type PredefinedRules = Message<\"buf.validate.PredefinedRules\"> & {\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/predefined-rules/).\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.Rule cel = 1;\n */\n cel: Rule[];\n};\n\n/**\n * Describes the message buf.validate.PredefinedRules.\n * Use `create(PredefinedRulesSchema)` to create a new message.\n */\nexport const PredefinedRulesSchema: GenMessage<PredefinedRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 5);\n\n/**\n * FloatRules describes the rules 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 * 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 * 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 rules. `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 = inf\n * ];\n * }\n * ```\n *\n * @generated from field: repeated float example = 9;\n */\n example: number[];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 6);\n\n/**\n * DoubleRules describes the rules 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 * 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 * 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 rules. `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 = inf\n * ];\n * }\n * ```\n *\n * @generated from field: repeated double example = 9;\n */\n example: number[];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 7);\n\n/**\n * Int32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 8);\n\n/**\n * Int64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated int64 in = 6 [jstype = JS_STRING];\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 * int64 value = 1 [(buf.validate.field).int64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated int64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 9);\n\n/**\n * UInt32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 10);\n\n/**\n * UInt64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated uint64 in = 6 [jstype = JS_STRING];\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 * uint64 value = 1 [(buf.validate.field).uint64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated uint64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 11);\n\n/**\n * SInt32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 12);\n\n/**\n * SInt64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sint64 in = 6 [jstype = JS_STRING];\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 * sint64 value = 1 [(buf.validate.field).sint64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sint64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 13);\n\n/**\n * Fixed32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 14);\n\n/**\n * Fixed64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 in = 6 [jstype = JS_STRING];\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 * fixed64 value = 1 [(buf.validate.field).fixed64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 15);\n\n/**\n * SFixed32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 16);\n\n/**\n * SFixed64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 in = 6 [jstype = JS_STRING];\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 * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 17);\n\n/**\n * BoolRules describes the rules 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 18);\n\n/**\n * StringRules describes the rules 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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 * 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 * 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 rules 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, for\n * example \"foo@example.com\".\n *\n * Conforms to the definition for a valid email address from the [HTML standard](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address).\n * Note that this standard willfully deviates from [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322),\n * which allows many unexpected forms of email addresses and will easily match\n * a typographical error.\n *\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 hostname, for\n * example \"foo.example.com\".\n *\n * A valid hostname follows the rules below:\n * - The name consists of one or more labels, separated by a dot (\".\").\n * - Each label can be 1 to 63 alphanumeric characters.\n * - A label can contain hyphens (\"-\"), but must not start or end with a hyphen.\n * - The right-most label must not be digits only.\n * - The name can have a trailing dot—for example, \"foo.example.com.\".\n * - The name can be 253 characters at most, excluding the optional trailing dot.\n *\n * If the field value isn't a 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 (v4 or v6) address.\n *\n * IPv4 addresses are expected in the dotted decimal format—for example, \"192.168.5.21\".\n * IPv6 addresses are expected in their text representation—for example, \"::1\",\n * or \"2001:0DB8:ABCD:0012::0\".\n *\n * Both formats are well-defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).\n * Zone identifiers for IPv6 addresses (for example, \"fe80::a%en1\") are supported.\n *\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 address—for\n * example \"192.168.5.21\". If the field value isn't a valid IPv4 address, an\n * error message 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 IPv6 address—for\n * example \"::1\", or \"d7a:115c:a1e0:ab12:4843:cd96:626b:430b\". If the field\n * value is 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 URI, for example\n * \"https://example.com/foo/bar?baz=quux#frag\".\n *\n * URI is defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).\n * Zone Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)).\n *\n * If the 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 = 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 Reference—either\n * a URI such as \"https://example.com/foo/bar?baz=quux#frag\", or a Relative\n * Reference such as \"./foo/bar?query\".\n *\n * URI, URI Reference, and Relative Reference are defined in the internet\n * standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Zone\n * Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)).\n *\n * If the field value isn't a valid URI Reference, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid URI Reference\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 * (for example, \"example.com\"), or a valid IP (v4 or v6) address (for example,\n * \"192.168.0.1\", or \"::1\"). If the field value isn't a valid hostname or IP,\n * an error 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://datatracker.ietf.org/doc/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://datatracker.ietf.org/doc/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\n * (v4 or v6) address with prefix length—for example, \"192.168.5.21/16\" or\n * \"2001:0DB8:ABCD:0012::F1/64\". If the field value isn't a valid IP with\n * prefix length, an error message will be generated.\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 length—for example, \"192.168.5.21/16\". If the\n * field value isn't a valid IPv4 address with prefix length, an error\n * 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—for example, \"2001:0DB8:ABCD:0012::F1/64\".\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)\n * prefix—for example, \"192.168.0.0/16\" or \"2001:0DB8:ABCD:0012::0/64\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"2001:0DB8:ABCD:0012::0/64\" designates the left-most 64 bits for the\n * prefix, and the remaining 64 bits must be zero.\n *\n * If the field value isn't a valid IP prefix, an error message will be\n * generated.\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, for example \"192.168.0.0/16\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"192.168.0.0/16\" designates the left-most 16 bits for the prefix,\n * and the remaining 16 bits must be zero.\n *\n * If the field value isn't a valid IPv4 prefix, an error message\n * will be generated.\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—for\n * example, \"2001:0DB8:ABCD:0012::0/64\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"2001:0DB8:ABCD:0012::0/64\" designates the left-most 64 bits for the\n * prefix, and the remaining 64 bits must be zero.\n *\n * If the field value is not a valid IPv6 prefix, an error message will be\n * generated.\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 that the field value must be valid host/port\n * pair—for example, \"example.com:8080\".\n *\n * The host can be one of:\n * - An IPv4 address in dotted decimal format—for example, \"192.168.5.21\".\n * - An IPv6 address enclosed in square brackets—for example, \"[2001:0DB8:ABCD:0012::F1]\".\n * - A hostname—for example, \"example.com\".\n *\n * The port is separated by a colon. It must be non-empty, with a decimal number\n * in the range of 0-65535, inclusive.\n *\n * @generated from field: bool host_and_port = 32;\n */\n value: boolean;\n case: \"hostAndPort\";\n } | {\n /**\n * `ulid` specifies that the field value must be a valid ULID (Universally Unique\n * Lexicographically Sortable Identifier) as defined by the [ULID specification](https://github.com/ulid/spec).\n * If the field value isn't a valid ULID, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid ULID\n * string value = 1 [(buf.validate.field).string.ulid = true];\n * }\n * ```\n *\n * @generated from field: bool ulid = 35;\n */\n value: boolean;\n case: \"ulid\";\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://datatracker.ietf.org/doc/html/rfc7230#section-3.2) |\n * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/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://datatracker.ietf.org/doc/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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 19);\n\n/**\n * BytesRules describe the rules 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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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: 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 * ```proto\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 * ```proto\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 rules 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 rule, 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 rule, 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 rule, 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 } | {\n /**\n * `uuid` ensures that the field `value` encodes the 128-bit UUID data as\n * defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2).\n * The field must contain exactly 16 bytes\n * representing the UUID. If the field value isn't a valid UUID, an error\n * message will be generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be a valid UUID\n * optional bytes value = 1 [(buf.validate.field).bytes.uuid = true];\n * }\n * ```\n *\n * @generated from field: bool uuid = 15;\n */\n value: boolean;\n case: \"uuid\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 * Describes the message buf.validate.BytesRules.\n * Use `create(BytesRulesSchema)` to create a new message.\n */\nexport const BytesRulesSchema: GenMessage<BytesRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 20);\n\n/**\n * EnumRules describe the rules 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 21);\n\n/**\n * RepeatedRules describe the rules 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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\n */\n maxItems: string;\n\n /**\n * `unique` indicates that all elements in this field must\n * be unique. This rule 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 rules to be applied to each item\n * in the field. Even for repeated message fields, validation is executed\n * against each item unless `ignore` is specified.\n *\n * ```proto\n * message MyRepeated {\n * // The items in the field `value` must follow the specified rules.\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 * Note that the `required` rule does not apply. Repeated items\n * cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules items = 4;\n */\n items?: FieldRules;\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 22);\n\n/**\n * MapRules describe the rules 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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\n */\n maxPairs: string;\n\n /**\n * Specifies the rules 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 rules.\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 * Note that the `required` rule does not apply. Map keys cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules keys = 4;\n */\n keys?: FieldRules;\n\n /**\n * Specifies the rules to be applied to the value of each key in the\n * field. Message values will still have their validations evaluated unless\n * `ignore` is specified.\n *\n * ```proto\n * message MyMap {\n * // The values in the field `value` must follow the specified rules.\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 * Note that the `required` rule does not apply. Map values cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules values = 5;\n */\n values?: FieldRules;\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 23);\n\n/**\n * AnyRules describe rules 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 = {\n * in: [\"type.googleapis.com/MyType1\", \"type.googleapis.com/MyType2\"]\n * }];\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 `value` field must not have a `type_url` equal to any of the specified values.\n * google.protobuf.Any value = 1 [(buf.validate.field).any = {\n * not_in: [\"type.googleapis.com/ForbiddenType1\", \"type.googleapis.com/ForbiddenType2\"]\n * }];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 24);\n\n/**\n * DurationRules describe the rules 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 rules. `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 * Describes the message buf.validate.DurationRules.\n * Use `create(DurationRulesSchema)` to create a new message.\n */\nexport const DurationRulesSchema: GenMessage<DurationRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 25);\n\n/**\n * FieldMaskRules describe rules applied exclusively to the `google.protobuf.FieldMask` well-known type.\n *\n * @generated from message buf.validate.FieldMaskRules\n */\nexport type FieldMaskRules = Message<\"buf.validate.FieldMaskRules\"> & {\n /**\n * `const` dictates that the field must match the specified value of the `google.protobuf.FieldMask` 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 MyFieldMask {\n * // value must equal [\"a\"]\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask.const = {\n * paths: [\"a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.FieldMask const = 1;\n */\n const?: FieldMask;\n\n /**\n * `in` requires the field value to only contain paths matching specified\n * values or their subpaths.\n * If any of the field value's paths doesn't match the rule,\n * an error message is generated.\n * See: https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask\n *\n * ```proto\n * message MyFieldMask {\n * // The `value` FieldMask must only contain paths listed in `in`.\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask = {\n * in: [\"a\", \"b\", \"c.a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated string in = 2;\n */\n in: string[];\n\n /**\n * `not_in` requires the field value to not contain paths matching specified\n * values or their subpaths.\n * If any of the field value's paths matches the rule,\n * an error message is generated.\n * See: https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask\n *\n * ```proto\n * message MyFieldMask {\n * // The `value` FieldMask shall not contain paths listed in `not_in`.\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask = {\n * not_in: [\"forbidden\", \"immutable\", \"c.a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 3;\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 MyFieldMask {\n * google.protobuf.FieldMask value = 1 [\n * (buf.validate.field).field_mask.example = { paths: [\"a\", \"b\"] },\n * (buf.validate.field).field_mask.example = { paths: [\"c.a\", \"d\"] },\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.FieldMask example = 4;\n */\n example: FieldMask[];\n};\n\n/**\n * Describes the message buf.validate.FieldMaskRules.\n * Use `create(FieldMaskRulesSchema)` to create a new message.\n */\nexport const FieldMaskRulesSchema: GenMessage<FieldMaskRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 26);\n\n/**\n * TimestampRules describe the rules 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 * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 MyTimestamp {\n * google.protobuf.Timestamp value = 1 [\n * (buf.validate.field).timestamp.example = { seconds: 1672444800 },\n * (buf.validate.field).timestamp.example = { seconds: 1672531200 },\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Timestamp example = 10;\n */\n example: Timestamp[];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 27);\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 `Rule` 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 * Describes the message buf.validate.Violations.\n * Use `create(ViolationsSchema)` to create a new message.\n */\nexport const ViolationsSchema: GenMessage<Violations> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 28);\n\n/**\n * `Violation` represents a single instance where a validation rule, expressed\n * as a `Rule`, was not met. It provides information about the field that\n * caused the violation, the specific rule that wasn't fulfilled, and a\n * human-readable error message.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message User {\n * int32 age = 1 [(buf.validate.field).cel = {\n * id: \"user.age\",\n * expression: \"this < 18 ? 'User must be at least 18 years old' : ''\",\n * }];\n * }\n * ```\n *\n * It could produce the following violation:\n *\n * ```json\n * {\n * \"ruleId\": \"user.age\",\n * \"message\": \"User must be at least 18 years old\",\n * \"field\": {\n * \"elements\": [\n * {\n * \"fieldNumber\": 1,\n * \"fieldName\": \"age\",\n * \"fieldType\": \"TYPE_INT32\"\n * }\n * ]\n * },\n * \"rule\": {\n * \"elements\": [\n * {\n * \"fieldNumber\": 23,\n * \"fieldName\": \"cel\",\n * \"fieldType\": \"TYPE_MESSAGE\",\n * \"index\": \"0\"\n * }\n * ]\n * }\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 rule that failed validation.\n * This will be a nested field starting from the FieldRules of the field that failed validation.\n * For custom rules, this will provide the path of the rule, 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_rule\",\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 * `rule_id` is the unique identifier of the `Rule` that was not fulfilled.\n * This is the same `id` that was specified in the `Rule` message, allowing easy tracing of which rule was violated.\n *\n * @generated from field: optional string rule_id = 2;\n */\n ruleId: 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 `Rule`, 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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 29);\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 * Describes the message buf.validate.FieldPath.\n * Use `create(FieldPathSchema)` to create a new message.\n */\nexport const FieldPathSchema: GenMessage<FieldPath> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 30);\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * Describes the message buf.validate.FieldPathElement.\n * Use `create(FieldPathElementSchema)` to create a new message.\n */\nexport const FieldPathElementSchema: GenMessage<FieldPathElement> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 31);\n\n/**\n * Specifies how `FieldRules.ignore` behaves, depending on the field's value, and\n * whether the field tracks presence.\n *\n * @generated from enum buf.validate.Ignore\n */\nexport enum Ignore {\n /**\n * Ignore rules if the field tracks presence and is unset. This is the default\n * behavior.\n *\n * In proto3, only message fields, members of a Protobuf `oneof`, and fields\n * with the `optional` label track presence. Consequently, the following fields\n * are always validated, whether a value is set or not:\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message RulesApply {\n * string email = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * int32 age = 2 [\n * (buf.validate.field).int32.gt = 0\n * ];\n * repeated string labels = 3 [\n * (buf.validate.field).repeated.min_items = 1\n * ];\n * }\n * ```\n *\n * In contrast, the following fields track presence, and are only validated if\n * a value is set:\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message RulesApplyIfSet {\n * optional string email = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * oneof ref {\n * string reference = 2 [\n * (buf.validate.field).string.uuid = true\n * ];\n * string name = 3 [\n * (buf.validate.field).string.min_len = 4\n * ];\n * }\n * SomeMessage msg = 4 [\n * (buf.validate.field).cel = {/* ... *\\/}\n * ];\n * }\n * ```\n *\n * To ensure that such a field is set, add the `required` rule.\n *\n * To learn which fields track presence, see the\n * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat).\n *\n * @generated from enum value: IGNORE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Ignore rules if the field is unset, or set to the zero value.\n *\n * The zero value depends on the field type:\n * - For strings, the zero value is the empty string.\n * - For bytes, the zero value is empty bytes.\n * - For bool, the zero value is false.\n * - For numeric types, the zero value is zero.\n * - For enums, the zero value is the first defined enum value.\n * - For repeated fields, the zero is an empty list.\n * - For map fields, the zero is an empty map.\n * - For message fields, absence of the message (typically a null-value) is considered zero value.\n *\n * For fields that track presence (e.g. adding the `optional` label in proto3),\n * this a no-op and behavior is the same as the default `IGNORE_UNSPECIFIED`.\n *\n * @generated from enum value: IGNORE_IF_ZERO_VALUE = 1;\n */\n IF_ZERO_VALUE = 1,\n\n /**\n * Always ignore rules, including the `required` rule.\n *\n * This is useful for ignoring the rules of a referenced message, or to\n * temporarily ignore rules during development.\n *\n * ```proto\n * message MyMessage {\n * // The field's rules will always be ignored, including any validations\n * // on value's fields.\n * MyOtherMessage value = 1 [\n * (buf.validate.field).ignore = IGNORE_ALWAYS\n * ];\n * }\n * ```\n *\n * @generated from enum value: IGNORE_ALWAYS = 3;\n */\n ALWAYS = 3,\n}\n\n/**\n * Describes the enum buf.validate.Ignore.\n */\nexport const IgnoreSchema: GenEnum<Ignore> = /*@__PURE__*/\n enumDesc(file_buf_validate_validate, 0);\n\n/**\n * KnownRegex contains 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://datatracker.ietf.org/doc/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://datatracker.ietf.org/doc/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 * Describes the enum buf.validate.KnownRegex.\n */\nexport const KnownRegexSchema: GenEnum<KnownRegex> = /*@__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.MessageRules message = 1159;\n */\nexport const message: GenExtension<MessageOptions, MessageRules> = /*@__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.OneofRules oneof = 1159;\n */\nexport const oneof: GenExtension<OneofOptions, OneofRules> = /*@__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.FieldRules field = 1159;\n */\nexport const field: GenExtension<FieldOptions, FieldRules> = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 2);\n\n/**\n * Specifies predefined rules. When extending a standard rule 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.PredefinedRules predefined = 1160;\n */\nexport const predefined: GenExtension<FieldOptions, PredefinedRules> = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 3);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_auth_recording.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { PastRoomInfo } from \"./plugnmeet_auth_room_pb\";\nimport { file_plugnmeet_auth_room } from \"./plugnmeet_auth_room_pb\";\nimport type { RecordingMetadata } from \"./plugnmeet_recording_pb\";\nimport { file_plugnmeet_recording } from \"./plugnmeet_recording_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_auth_recording.proto.\n */\nexport const file_plugnmeet_auth_recording: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5wbHVnbm1lZXRfYXV0aF9yZWNvcmRpbmcucHJvdG8SCXBsdWdubWVldCJ5ChJGZXRjaFJlY29yZGluZ3NSZXESEAoIcm9vbV9pZHMYASADKAkSFQoIcm9vbV9zaWQYAiABKAlIAIgBARIMCgRmcm9tGAMgASgNEg0KBWxpbWl0GAQgASgNEhAKCG9yZGVyX2J5GAUgASgJQgsKCV9yb29tX3NpZCLoAQoNUmVjb3JkaW5nSW5mbxIRCglyZWNvcmRfaWQYASABKAkSDwoHcm9vbV9pZBgCIAEoCRIQCghyb29tX3NpZBgDIAEoCRIRCglmaWxlX3BhdGgYBCABKAkSEQoJZmlsZV9zaXplGAUgASgCEhkKDWNyZWF0aW9uX3RpbWUYBiABKANCAjABEh4KEnJvb21fY3JlYXRpb25fdGltZRgHIAEoA0ICMAESMwoIbWV0YWRhdGEYCCABKAsyHC5wbHVnbm1lZXQuUmVjb3JkaW5nTWV0YWRhdGFIAIgBAUILCglfbWV0YWRhdGEilwEKFUZldGNoUmVjb3JkaW5nc1Jlc3VsdBIcChB0b3RhbF9yZWNvcmRpbmdzGAEgASgDQgIwARIMCgRmcm9tGAIgASgNEg0KBWxpbWl0GAMgASgNEhAKCG9yZGVyX2J5GAQgASgJEjEKD3JlY29yZGluZ3NfbGlzdBgFIAMoCzIYLnBsdWdubWVldC5SZWNvcmRpbmdJbmZvImMKEkZldGNoUmVjb3JkaW5nc1JlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEjAKBnJlc3VsdBgDIAEoCzIgLnBsdWdubWVldC5GZXRjaFJlY29yZGluZ3NSZXN1bHQiLQoQUmVjb3JkaW5nSW5mb1JlcRIZCglyZWNvcmRfaWQYASABKAlCBrpIA8gBASKNAQoQUmVjb3JkaW5nSW5mb1JlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEjAKDnJlY29yZGluZ19pbmZvGAMgASgLMhgucGx1Z25tZWV0LlJlY29yZGluZ0luZm8SKgoJcm9vbV9pbmZvGAQgASgLMhcucGx1Z25tZWV0LlBhc3RSb29tSW5mbyIvChJEZWxldGVSZWNvcmRpbmdSZXESGQoJcmVjb3JkX2lkGAEgASgJQga6SAPIAQEiMQoSRGVsZXRlUmVjb3JkaW5nUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkiMAoTR2V0RG93bmxvYWRUb2tlblJlcRIZCglyZWNvcmRfaWQYASABKAlCBrpIA8gBASJQChNHZXREb3dubG9hZFRva2VuUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSEgoFdG9rZW4YAyABKAlIAIgBAUIICgZfdG9rZW4iZwoaVXBkYXRlUmVjb3JkaW5nTWV0YWRhdGFSZXESGQoJcmVjb3JkX2lkGAEgASgJQga6SAPIAQESLgoIbWV0YWRhdGEYAiABKAsyHC5wbHVnbm1lZXQuUmVjb3JkaW5nTWV0YWRhdGEiOQoaVXBkYXRlUmVjb3JkaW5nTWV0YWRhdGFSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCUKkAQoNY29tLnBsdWdubWVldEIbUGx1Z25tZWV0QXV0aFJlY29yZGluZ1Byb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\", [file_buf_validate_validate, file_plugnmeet_auth_room, file_plugnmeet_recording]);\n\n/**\n * @generated from message plugnmeet.FetchRecordingsReq\n */\nexport type FetchRecordingsReq = Message<\"plugnmeet.FetchRecordingsReq\"> & {\n /**\n * @generated from field: repeated string room_ids = 1;\n */\n roomIds: string[];\n\n /**\n * To get information about a particular session\n *\n * @generated from field: optional string room_sid = 2;\n */\n roomSid?: string;\n\n /**\n * @generated from field: uint32 from = 3;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 4;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 5;\n */\n orderBy: string;\n};\n\n/**\n * Describes the message plugnmeet.FetchRecordingsReq.\n * Use `create(FetchRecordingsReqSchema)` to create a new message.\n */\nexport const FetchRecordingsReqSchema: GenMessage<FetchRecordingsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 0);\n\n/**\n * @generated from message plugnmeet.RecordingInfo\n */\nexport type RecordingInfo = Message<\"plugnmeet.RecordingInfo\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 3;\n */\n roomSid: string;\n\n /**\n * @generated from field: string file_path = 4;\n */\n filePath: string;\n\n /**\n * @generated from field: float file_size = 5;\n */\n fileSize: number;\n\n /**\n * @generated from field: int64 creation_time = 6 [jstype = JS_STRING];\n */\n creationTime: string;\n\n /**\n * @generated from field: int64 room_creation_time = 7 [jstype = JS_STRING];\n */\n roomCreationTime: string;\n\n /**\n * @generated from field: optional plugnmeet.RecordingMetadata metadata = 8;\n */\n metadata?: RecordingMetadata;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfo.\n * Use `create(RecordingInfoSchema)` to create a new message.\n */\nexport const RecordingInfoSchema: GenMessage<RecordingInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 1);\n\n/**\n * @generated from message plugnmeet.FetchRecordingsResult\n */\nexport type FetchRecordingsResult = Message<\"plugnmeet.FetchRecordingsResult\"> & {\n /**\n * @generated from field: int64 total_recordings = 1 [jstype = JS_STRING];\n */\n totalRecordings: string;\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n\n /**\n * @generated from field: repeated plugnmeet.RecordingInfo recordings_list = 5;\n */\n recordingsList: RecordingInfo[];\n};\n\n/**\n * Describes the message plugnmeet.FetchRecordingsResult.\n * Use `create(FetchRecordingsResultSchema)` to create a new message.\n */\nexport const FetchRecordingsResultSchema: GenMessage<FetchRecordingsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 2);\n\n/**\n * @generated from message plugnmeet.FetchRecordingsRes\n */\nexport type FetchRecordingsRes = Message<\"plugnmeet.FetchRecordingsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.FetchRecordingsResult result = 3;\n */\n result?: FetchRecordingsResult;\n};\n\n/**\n * Describes the message plugnmeet.FetchRecordingsRes.\n * Use `create(FetchRecordingsResSchema)` to create a new message.\n */\nexport const FetchRecordingsResSchema: GenMessage<FetchRecordingsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 3);\n\n/**\n * @generated from message plugnmeet.RecordingInfoReq\n */\nexport type RecordingInfoReq = Message<\"plugnmeet.RecordingInfoReq\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfoReq.\n * Use `create(RecordingInfoReqSchema)` to create a new message.\n */\nexport const RecordingInfoReqSchema: GenMessage<RecordingInfoReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 4);\n\n/**\n * @generated from message plugnmeet.RecordingInfoRes\n */\nexport type RecordingInfoRes = Message<\"plugnmeet.RecordingInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.RecordingInfo recording_info = 3;\n */\n recordingInfo?: RecordingInfo;\n\n /**\n * @generated from field: plugnmeet.PastRoomInfo room_info = 4;\n */\n roomInfo?: PastRoomInfo;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfoRes.\n * Use `create(RecordingInfoResSchema)` to create a new message.\n */\nexport const RecordingInfoResSchema: GenMessage<RecordingInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 5);\n\n/**\n * @generated from message plugnmeet.DeleteRecordingReq\n */\nexport type DeleteRecordingReq = Message<\"plugnmeet.DeleteRecordingReq\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteRecordingReq.\n * Use `create(DeleteRecordingReqSchema)` to create a new message.\n */\nexport const DeleteRecordingReqSchema: GenMessage<DeleteRecordingReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 6);\n\n/**\n * @generated from message plugnmeet.DeleteRecordingRes\n */\nexport type DeleteRecordingRes = Message<\"plugnmeet.DeleteRecordingRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteRecordingRes.\n * Use `create(DeleteRecordingResSchema)` to create a new message.\n */\nexport const DeleteRecordingResSchema: GenMessage<DeleteRecordingRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 7);\n\n/**\n * @generated from message plugnmeet.GetDownloadTokenReq\n */\nexport type GetDownloadTokenReq = Message<\"plugnmeet.GetDownloadTokenReq\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n};\n\n/**\n * Describes the message plugnmeet.GetDownloadTokenReq.\n * Use `create(GetDownloadTokenReqSchema)` to create a new message.\n */\nexport const GetDownloadTokenReqSchema: GenMessage<GetDownloadTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 8);\n\n/**\n * @generated from message plugnmeet.GetDownloadTokenRes\n */\nexport type GetDownloadTokenRes = Message<\"plugnmeet.GetDownloadTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string token = 3;\n */\n token?: string;\n};\n\n/**\n * Describes the message plugnmeet.GetDownloadTokenRes.\n * Use `create(GetDownloadTokenResSchema)` to create a new message.\n */\nexport const GetDownloadTokenResSchema: GenMessage<GetDownloadTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 9);\n\n/**\n * @generated from message plugnmeet.UpdateRecordingMetadataReq\n */\nexport type UpdateRecordingMetadataReq = Message<\"plugnmeet.UpdateRecordingMetadataReq\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n\n /**\n * @generated from field: plugnmeet.RecordingMetadata metadata = 2;\n */\n metadata?: RecordingMetadata;\n};\n\n/**\n * Describes the message plugnmeet.UpdateRecordingMetadataReq.\n * Use `create(UpdateRecordingMetadataReqSchema)` to create a new message.\n */\nexport const UpdateRecordingMetadataReqSchema: GenMessage<UpdateRecordingMetadataReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 10);\n\n/**\n * @generated from message plugnmeet.UpdateRecordingMetadataRes\n */\nexport type UpdateRecordingMetadataRes = Message<\"plugnmeet.UpdateRecordingMetadataRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.UpdateRecordingMetadataRes.\n * Use `create(UpdateRecordingMetadataResSchema)` to create a new message.\n */\nexport const UpdateRecordingMetadataResSchema: GenMessage<UpdateRecordingMetadataRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 11);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_auth_room.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ParticipantInfo } from \"./livekit_models_pb\";\nimport { file_livekit_models } from \"./livekit_models_pb\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_auth_room.proto.\n */\nexport const file_plugnmeet_auth_room: GenFile = /*@__PURE__*/\n fileDesc(\"ChlwbHVnbm1lZXRfYXV0aF9yb29tLnByb3RvEglwbHVnbm1lZXQiLwoUR2V0QWN0aXZlUm9vbUluZm9SZXESFwoHcm9vbV9pZBgBIAEoCUIGukgDyAEBIqYBChFBY3RpdmVSb29tSW5mb1JlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEjEKCXJvb21faW5mbxgDIAEoCzIZLnBsdWdubWVldC5BY3RpdmVSb29tSW5mb0gAiAEBEjMKEXBhcnRpY2lwYW50c19pbmZvGAQgAygLMhgubGl2ZWtpdC5QYXJ0aWNpcGFudEluZm9CDAoKX3Jvb21faW5mbyKZAgoOQWN0aXZlUm9vbUluZm8SEgoKcm9vbV90aXRsZRgBIAEoCRIPCgdyb29tX2lkGAIgASgJEgsKA3NpZBgDIAEoCRIfChNqb2luZWRfcGFydGljaXBhbnRzGAQgASgDQgIwARISCgppc19ydW5uaW5nGAUgASgFEhQKDGlzX3JlY29yZGluZxgGIAEoBRIWCg5pc19hY3RpdmVfcnRtcBgHIAEoBRITCgt3ZWJob29rX3VybBgIIAEoCRIYChBpc19icmVha291dF9yb29tGAkgASgFEhYKDnBhcmVudF9yb29tX2lkGAogASgJEhkKDWNyZWF0aW9uX3RpbWUYCyABKANCAjABEhAKCG1ldGFkYXRhGAwgASgJIiUKClJvb21FbmRSZXESFwoHcm9vbV9pZBgBIAEoCUIGukgDyAEBIikKClJvb21FbmRSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCSIqCg9Jc1Jvb21BY3RpdmVSZXESFwoHcm9vbV9pZBgBIAEoCUIGukgDyAEBIkEKD0lzUm9vbUFjdGl2ZVJlcxIOCgZzdGF0dXMYASABKAgSEQoJaXNfYWN0aXZlGAIgASgIEgsKA21zZxgDIAEoCSKRAQoZQWN0aXZlUm9vbVdpdGhQYXJ0aWNpcGFudBIxCglyb29tX2luZm8YAyABKAsyGS5wbHVnbm1lZXQuQWN0aXZlUm9vbUluZm9IAIgBARIzChFwYXJ0aWNpcGFudHNfaW5mbxgEIAMoCzIYLmxpdmVraXQuUGFydGljaXBhbnRJbmZvQgwKCl9yb29tX2luZm8iZwoUR2V0QWN0aXZlUm9vbUluZm9SZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIyCgRyb29tGAMgASgLMiQucGx1Z25tZWV0LkFjdGl2ZVJvb21XaXRoUGFydGljaXBhbnQiaQoVR2V0QWN0aXZlUm9vbXNJbmZvUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSMwoFcm9vbXMYAyADKAsyJC5wbHVnbm1lZXQuQWN0aXZlUm9vbVdpdGhQYXJ0aWNpcGFudCLRAQoMUGFzdFJvb21JbmZvEhIKCnJvb21fdGl0bGUYASABKAkSDwoHcm9vbV9pZBgCIAEoCRIQCghyb29tX3NpZBgDIAEoCRIfChNqb2luZWRfcGFydGljaXBhbnRzGAQgASgDQgIwARITCgt3ZWJob29rX3VybBgFIAEoCRIPCgdjcmVhdGVkGAYgASgJEg0KBWVuZGVkGAcgASgJEh4KEWFuYWx5dGljc19maWxlX2lkGAggASgJSACIAQFCFAoSX2FuYWx5dGljc19maWxlX2lkIlQKEUZldGNoUGFzdFJvb21zUmVxEhAKCHJvb21faWRzGAEgAygJEgwKBGZyb20YAiABKA0SDQoFbGltaXQYAyABKA0SEAoIb3JkZXJfYnkYBCABKAkiiwEKFEZldGNoUGFzdFJvb21zUmVzdWx0EhcKC3RvdGFsX3Jvb21zGAEgASgDQgIwARIMCgRmcm9tGAIgASgNEg0KBWxpbWl0GAMgASgNEhAKCG9yZGVyX2J5GAQgASgJEisKCnJvb21zX2xpc3QYBSADKAsyFy5wbHVnbm1lZXQuUGFzdFJvb21JbmZvImEKEUZldGNoUGFzdFJvb21zUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSLwoGcmVzdWx0GAMgASgLMh8ucGx1Z25tZWV0LkZldGNoUGFzdFJvb21zUmVzdWx0Iq4BChFHZXRDbGllbnRGaWxlc1JlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEg8KA2NzcxgDIAMoCUICGAESDgoCanMYBCADKAlCAhgBEhEKCWNzc19maWxlcxgFIAMoCRIQCghqc19maWxlcxgGIAMoCRIfChJzdGF0aWNfYXNzZXRzX3BhdGgYByABKAlIAIgBAUIVChNfc3RhdGljX2Fzc2V0c19wYXRoQp8BCg1jb20ucGx1Z25tZWV0QhZQbHVnbm1lZXRBdXRoUm9vbVByb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\", [file_livekit_models, file_buf_validate_validate]);\n\n/**\n * @generated from message plugnmeet.GetActiveRoomInfoReq\n */\nexport type GetActiveRoomInfoReq = Message<\"plugnmeet.GetActiveRoomInfoReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.GetActiveRoomInfoReq.\n * Use `create(GetActiveRoomInfoReqSchema)` to create a new message.\n */\nexport const GetActiveRoomInfoReqSchema: GenMessage<GetActiveRoomInfoReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 0);\n\n/**\n * @generated from message plugnmeet.ActiveRoomInfoRes\n */\nexport type ActiveRoomInfoRes = Message<\"plugnmeet.ActiveRoomInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional plugnmeet.ActiveRoomInfo room_info = 3;\n */\n roomInfo?: ActiveRoomInfo;\n\n /**\n * @generated from field: repeated livekit.ParticipantInfo participants_info = 4;\n */\n participantsInfo: ParticipantInfo[];\n};\n\n/**\n * Describes the message plugnmeet.ActiveRoomInfoRes.\n * Use `create(ActiveRoomInfoResSchema)` to create a new message.\n */\nexport const ActiveRoomInfoResSchema: GenMessage<ActiveRoomInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 1);\n\n/**\n * @generated from message plugnmeet.ActiveRoomInfo\n */\nexport type ActiveRoomInfo = Message<\"plugnmeet.ActiveRoomInfo\"> & {\n /**\n * @generated from field: string room_title = 1;\n */\n roomTitle: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string sid = 3;\n */\n sid: string;\n\n /**\n * @generated from field: int64 joined_participants = 4 [jstype = JS_STRING];\n */\n joinedParticipants: string;\n\n /**\n * @generated from field: int32 is_running = 5;\n */\n isRunning: number;\n\n /**\n * @generated from field: int32 is_recording = 6;\n */\n isRecording: number;\n\n /**\n * @generated from field: int32 is_active_rtmp = 7;\n */\n isActiveRtmp: number;\n\n /**\n * @generated from field: string webhook_url = 8;\n */\n webhookUrl: string;\n\n /**\n * @generated from field: int32 is_breakout_room = 9;\n */\n isBreakoutRoom: number;\n\n /**\n * @generated from field: string parent_room_id = 10;\n */\n parentRoomId: string;\n\n /**\n * @generated from field: int64 creation_time = 11 [jstype = JS_STRING];\n */\n creationTime: string;\n\n /**\n * @generated from field: string metadata = 12;\n */\n metadata: string;\n};\n\n/**\n * Describes the message plugnmeet.ActiveRoomInfo.\n * Use `create(ActiveRoomInfoSchema)` to create a new message.\n */\nexport const ActiveRoomInfoSchema: GenMessage<ActiveRoomInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 2);\n\n/**\n * @generated from message plugnmeet.RoomEndReq\n */\nexport type RoomEndReq = Message<\"plugnmeet.RoomEndReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomEndReq.\n * Use `create(RoomEndReqSchema)` to create a new message.\n */\nexport const RoomEndReqSchema: GenMessage<RoomEndReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 3);\n\n/**\n * @generated from message plugnmeet.RoomEndRes\n */\nexport type RoomEndRes = Message<\"plugnmeet.RoomEndRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomEndRes.\n * Use `create(RoomEndResSchema)` to create a new message.\n */\nexport const RoomEndResSchema: GenMessage<RoomEndRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 4);\n\n/**\n * @generated from message plugnmeet.IsRoomActiveReq\n */\nexport type IsRoomActiveReq = Message<\"plugnmeet.IsRoomActiveReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.IsRoomActiveReq.\n * Use `create(IsRoomActiveReqSchema)` to create a new message.\n */\nexport const IsRoomActiveReqSchema: GenMessage<IsRoomActiveReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 5);\n\n/**\n * @generated from message plugnmeet.IsRoomActiveRes\n */\nexport type IsRoomActiveRes = Message<\"plugnmeet.IsRoomActiveRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: string msg = 3;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.IsRoomActiveRes.\n * Use `create(IsRoomActiveResSchema)` to create a new message.\n */\nexport const IsRoomActiveResSchema: GenMessage<IsRoomActiveRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 6);\n\n/**\n * @generated from message plugnmeet.ActiveRoomWithParticipant\n */\nexport type ActiveRoomWithParticipant = Message<\"plugnmeet.ActiveRoomWithParticipant\"> & {\n /**\n * @generated from field: optional plugnmeet.ActiveRoomInfo room_info = 3;\n */\n roomInfo?: ActiveRoomInfo;\n\n /**\n * @generated from field: repeated livekit.ParticipantInfo participants_info = 4;\n */\n participantsInfo: ParticipantInfo[];\n};\n\n/**\n * Describes the message plugnmeet.ActiveRoomWithParticipant.\n * Use `create(ActiveRoomWithParticipantSchema)` to create a new message.\n */\nexport const ActiveRoomWithParticipantSchema: GenMessage<ActiveRoomWithParticipant> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 7);\n\n/**\n * @generated from message plugnmeet.GetActiveRoomInfoRes\n */\nexport type GetActiveRoomInfoRes = Message<\"plugnmeet.GetActiveRoomInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.ActiveRoomWithParticipant room = 3;\n */\n room?: ActiveRoomWithParticipant;\n};\n\n/**\n * Describes the message plugnmeet.GetActiveRoomInfoRes.\n * Use `create(GetActiveRoomInfoResSchema)` to create a new message.\n */\nexport const GetActiveRoomInfoResSchema: GenMessage<GetActiveRoomInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 8);\n\n/**\n * @generated from message plugnmeet.GetActiveRoomsInfoRes\n */\nexport type GetActiveRoomsInfoRes = Message<\"plugnmeet.GetActiveRoomsInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated plugnmeet.ActiveRoomWithParticipant rooms = 3;\n */\n rooms: ActiveRoomWithParticipant[];\n};\n\n/**\n * Describes the message plugnmeet.GetActiveRoomsInfoRes.\n * Use `create(GetActiveRoomsInfoResSchema)` to create a new message.\n */\nexport const GetActiveRoomsInfoResSchema: GenMessage<GetActiveRoomsInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 9);\n\n/**\n * @generated from message plugnmeet.PastRoomInfo\n */\nexport type PastRoomInfo = Message<\"plugnmeet.PastRoomInfo\"> & {\n /**\n * @generated from field: string room_title = 1;\n */\n roomTitle: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 3;\n */\n roomSid: string;\n\n /**\n * @generated from field: int64 joined_participants = 4 [jstype = JS_STRING];\n */\n joinedParticipants: string;\n\n /**\n * @generated from field: string webhook_url = 5;\n */\n webhookUrl: string;\n\n /**\n * @generated from field: string created = 6;\n */\n created: string;\n\n /**\n * @generated from field: string ended = 7;\n */\n ended: string;\n\n /**\n * @generated from field: optional string analytics_file_id = 8;\n */\n analyticsFileId?: string;\n};\n\n/**\n * Describes the message plugnmeet.PastRoomInfo.\n * Use `create(PastRoomInfoSchema)` to create a new message.\n */\nexport const PastRoomInfoSchema: GenMessage<PastRoomInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 10);\n\n/**\n * @generated from message plugnmeet.FetchPastRoomsReq\n */\nexport type FetchPastRoomsReq = Message<\"plugnmeet.FetchPastRoomsReq\"> & {\n /**\n * @generated from field: repeated string room_ids = 1;\n */\n roomIds: string[];\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n};\n\n/**\n * Describes the message plugnmeet.FetchPastRoomsReq.\n * Use `create(FetchPastRoomsReqSchema)` to create a new message.\n */\nexport const FetchPastRoomsReqSchema: GenMessage<FetchPastRoomsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 11);\n\n/**\n * @generated from message plugnmeet.FetchPastRoomsResult\n */\nexport type FetchPastRoomsResult = Message<\"plugnmeet.FetchPastRoomsResult\"> & {\n /**\n * @generated from field: int64 total_rooms = 1 [jstype = JS_STRING];\n */\n totalRooms: string;\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n\n /**\n * @generated from field: repeated plugnmeet.PastRoomInfo rooms_list = 5;\n */\n roomsList: PastRoomInfo[];\n};\n\n/**\n * Describes the message plugnmeet.FetchPastRoomsResult.\n * Use `create(FetchPastRoomsResultSchema)` to create a new message.\n */\nexport const FetchPastRoomsResultSchema: GenMessage<FetchPastRoomsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 12);\n\n/**\n * @generated from message plugnmeet.FetchPastRoomsRes\n */\nexport type FetchPastRoomsRes = Message<\"plugnmeet.FetchPastRoomsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.FetchPastRoomsResult result = 3;\n */\n result?: FetchPastRoomsResult;\n};\n\n/**\n * Describes the message plugnmeet.FetchPastRoomsRes.\n * Use `create(FetchPastRoomsResSchema)` to create a new message.\n */\nexport const FetchPastRoomsResSchema: GenMessage<FetchPastRoomsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 13);\n\n/**\n * @generated from message plugnmeet.GetClientFilesRes\n */\nexport type GetClientFilesRes = Message<\"plugnmeet.GetClientFilesRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated string css = 3 [deprecated = true];\n * @deprecated\n */\n css: string[];\n\n /**\n * @generated from field: repeated string js = 4 [deprecated = true];\n * @deprecated\n */\n js: string[];\n\n /**\n * @generated from field: repeated string css_files = 5;\n */\n cssFiles: string[];\n\n /**\n * @generated from field: repeated string js_files = 6;\n */\n jsFiles: string[];\n\n /**\n * @generated from field: optional string static_assets_path = 7;\n */\n staticAssetsPath?: string;\n};\n\n/**\n * Describes the message plugnmeet.GetClientFilesRes.\n * Use `create(GetClientFilesResSchema)` to create a new message.\n */\nexport const GetClientFilesResSchema: GenMessage<GetClientFilesRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 14);\n\n","// Copyright 2023 LiveKit, 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.11.0 with parameter \"target=ts\"\n// @generated from file livekit_models.proto (package livekit, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { MetricsBatch } from \"./livekit_metrics_pb\";\nimport { file_livekit_metrics } from \"./livekit_metrics_pb\";\nimport { file_logger_options } from \"./logger/options_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file livekit_models.proto.\n */\nexport const file_livekit_models: GenFile = /*@__PURE__*/\n fileDesc(\"ChRsaXZla2l0X21vZGVscy5wcm90bxIHbGl2ZWtpdCItCgpQYWdpbmF0aW9uEhAKCGFmdGVyX2lkGAEgASgJEg0KBWxpbWl0GAIgASgFIiAKD1Rva2VuUGFnaW5hdGlvbhINCgV0b2tlbhgBIAEoCSJFCgpMaXN0VXBkYXRlEgsKA3NldBgBIAMoCRILCgNhZGQYAiADKAkSDgoGcmVtb3ZlGAMgAygJEg0KBWNsZWFyGAQgASgIIpMDCgRSb29tEgsKA3NpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhUKDWVtcHR5X3RpbWVvdXQYAyABKA0SGQoRZGVwYXJ0dXJlX3RpbWVvdXQYDiABKA0SGAoQbWF4X3BhcnRpY2lwYW50cxgEIAEoDRIZCg1jcmVhdGlvbl90aW1lGAUgASgDQgIwARIcChBjcmVhdGlvbl90aW1lX21zGA8gASgDQgIwARIVCg10dXJuX3Bhc3N3b3JkGAYgASgJEiYKDmVuYWJsZWRfY29kZWNzGAcgAygLMg4ubGl2ZWtpdC5Db2RlYxI4CghtZXRhZGF0YRgIIAEoCUImiOwsAZLsLB48cmVkYWN0ZWQgKHt7IC5TaXplIH19IGJ5dGVzKT4SGAoQbnVtX3BhcnRpY2lwYW50cxgJIAEoDRIWCg5udW1fcHVibGlzaGVycxgLIAEoDRIYChBhY3RpdmVfcmVjb3JkaW5nGAogASgIEiYKB3ZlcnNpb24YDSABKAsyFS5saXZla2l0LlRpbWVkVmVyc2lvbiIoCgVDb2RlYxIMCgRtaW1lGAEgASgJEhEKCWZtdHBfbGluZRgCIAEoCSI5CgxQbGF5b3V0RGVsYXkSDwoHZW5hYmxlZBgBIAEoCBILCgNtaW4YAiABKA0SCwoDbWF4GAMgASgNIqcCChVQYXJ0aWNpcGFudFBlcm1pc3Npb24SFQoNY2FuX3N1YnNjcmliZRgBIAEoCBITCgtjYW5fcHVibGlzaBgCIAEoCBIYChBjYW5fcHVibGlzaF9kYXRhGAMgASgIEjEKE2Nhbl9wdWJsaXNoX3NvdXJjZXMYCSADKA4yFC5saXZla2l0LlRyYWNrU291cmNlEg4KBmhpZGRlbhgHIAEoCBIUCghyZWNvcmRlchgIIAEoCEICGAESGwoTY2FuX3VwZGF0ZV9tZXRhZGF0YRgKIAEoCBIRCgVhZ2VudBgLIAEoCEICGAESHQoVY2FuX3N1YnNjcmliZV9tZXRyaWNzGAwgASgIEiAKGGNhbl9tYW5hZ2VfYWdlbnRfc2Vzc2lvbhgNIAEoCCL1BwoPUGFydGljaXBhbnRJbmZvEgsKA3NpZBgBIAEoCRIQCghpZGVudGl0eRgCIAEoCRItCgVzdGF0ZRgDIAEoDjIeLmxpdmVraXQuUGFydGljaXBhbnRJbmZvLlN0YXRlEiIKBnRyYWNrcxgEIAMoCzISLmxpdmVraXQuVHJhY2tJbmZvEjgKCG1ldGFkYXRhGAUgASgJQiaI7CwBkuwsHjxyZWRhY3RlZCAoe3sgLlNpemUgfX0gYnl0ZXMpPhIVCglqb2luZWRfYXQYBiABKANCAjABEhgKDGpvaW5lZF9hdF9tcxgRIAEoA0ICMAESEgoEbmFtZRgJIAEoCUIEiOwsARIPCgd2ZXJzaW9uGAogASgNEjIKCnBlcm1pc3Npb24YCyABKAsyHi5saXZla2l0LlBhcnRpY2lwYW50UGVybWlzc2lvbhIOCgZyZWdpb24YDCABKAkSFAoMaXNfcHVibGlzaGVyGA0gASgIEisKBGtpbmQYDiABKA4yHS5saXZla2l0LlBhcnRpY2lwYW50SW5mby5LaW5kEmQKCmF0dHJpYnV0ZXMYDyADKAsyKC5saXZla2l0LlBhcnRpY2lwYW50SW5mby5BdHRyaWJ1dGVzRW50cnlCJojsLAGS7CwePHJlZGFjdGVkICh7eyAuU2l6ZSB9fSBieXRlcyk+EjQKEWRpc2Nvbm5lY3RfcmVhc29uGBAgASgOMhkubGl2ZWtpdC5EaXNjb25uZWN0UmVhc29uEjkKDGtpbmRfZGV0YWlscxgSIAMoDjIjLmxpdmVraXQuUGFydGljaXBhbnRJbmZvLktpbmREZXRhaWwSKwoLZGF0YV90cmFja3MYEyADKAsyFi5saXZla2l0LkRhdGFUcmFja0luZm8SFwoPY2xpZW50X3Byb3RvY29sGBQgASgFGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIj4KBVN0YXRlEgsKB0pPSU5JTkcQABIKCgZKT0lORUQQARIKCgZBQ1RJVkUQAhIQCgxESVNDT05ORUNURUQQAyJcCgRLaW5kEgwKCFNUQU5EQVJEEAASCwoHSU5HUkVTUxABEgoKBkVHUkVTUxACEgcKA1NJUBADEgkKBUFHRU5UEAQSDQoJQ09OTkVDVE9SEAcSCgoGQlJJREdFEAgiawoKS2luZERldGFpbBIPCgtDTE9VRF9BR0VOVBAAEg0KCUZPUldBUkRFRBABEhYKEkNPTk5FQ1RPUl9XSEFUU0FQUBACEhQKEENPTk5FQ1RPUl9UV0lMSU8QAxIPCgtCUklER0VfUlRTUBAEIjMKCkVuY3J5cHRpb24iJQoEVHlwZRIICgROT05FEAASBwoDR0NNEAESCgoGQ1VTVE9NEAIiqwEKElNpbXVsY2FzdENvZGVjSW5mbxIRCgltaW1lX3R5cGUYASABKAkSCwoDbWlkGAIgASgJEgsKA2NpZBgDIAEoCRIjCgZsYXllcnMYBCADKAsyEy5saXZla2l0LlZpZGVvTGF5ZXISMgoQdmlkZW9fbGF5ZXJfbW9kZRgFIAEoDjIYLmxpdmVraXQuVmlkZW9MYXllci5Nb2RlEg8KB3NkcF9jaWQYBiABKAkixAQKCVRyYWNrSW5mbxILCgNzaWQYASABKAkSIAoEdHlwZRgCIAEoDjISLmxpdmVraXQuVHJhY2tUeXBlEhIKBG5hbWUYAyABKAlCBIjsLAESDQoFbXV0ZWQYBCABKAgSDQoFd2lkdGgYBSABKA0SDgoGaGVpZ2h0GAYgASgNEhUKCXNpbXVsY2FzdBgHIAEoCEICGAESFwoLZGlzYWJsZV9kdHgYCCABKAhCAhgBEiQKBnNvdXJjZRgJIAEoDjIULmxpdmVraXQuVHJhY2tTb3VyY2USJwoGbGF5ZXJzGAogAygLMhMubGl2ZWtpdC5WaWRlb0xheWVyQgIYARIRCgltaW1lX3R5cGUYCyABKAkSCwoDbWlkGAwgASgJEisKBmNvZGVjcxgNIAMoCzIbLmxpdmVraXQuU2ltdWxjYXN0Q29kZWNJbmZvEhIKBnN0ZXJlbxgOIAEoCEICGAESEwoLZGlzYWJsZV9yZWQYDyABKAgSLAoKZW5jcnlwdGlvbhgQIAEoDjIYLmxpdmVraXQuRW5jcnlwdGlvbi5UeXBlEg4KBnN0cmVhbRgRIAEoCRImCgd2ZXJzaW9uGBIgASgLMhUubGl2ZWtpdC5UaW1lZFZlcnNpb24SMgoOYXVkaW9fZmVhdHVyZXMYEyADKA4yGi5saXZla2l0LkF1ZGlvVHJhY2tGZWF0dXJlEjcKE2JhY2t1cF9jb2RlY19wb2xpY3kYFCABKA4yGi5saXZla2l0LkJhY2t1cENvZGVjUG9saWN5ImwKDURhdGFUcmFja0luZm8SEgoKcHViX2hhbmRsZRgBIAEoDRILCgNzaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIsCgplbmNyeXB0aW9uGAQgASgOMhgubGl2ZWtpdC5FbmNyeXB0aW9uLlR5cGUiZgogRGF0YVRyYWNrRXh0ZW5zaW9uUGFydGljaXBhbnRTaWQSKQoCaWQYASABKA4yHS5saXZla2l0LkRhdGFUcmFja0V4dGVuc2lvbklEEhcKD3BhcnRpY2lwYW50X3NpZBgCIAEoCSJGChxEYXRhVHJhY2tTdWJzY3JpcHRpb25PcHRpb25zEhcKCnRhcmdldF9mcHMYASABKA1IAIgBAUINCgtfdGFyZ2V0X2ZwcyLEAgoKVmlkZW9MYXllchImCgdxdWFsaXR5GAEgASgOMhUubGl2ZWtpdC5WaWRlb1F1YWxpdHkSDQoFd2lkdGgYAiABKA0SDgoGaGVpZ2h0GAMgASgNEg8KB2JpdHJhdGUYBCABKA0SDAoEc3NyYxgFIAEoDRIVCg1zcGF0aWFsX2xheWVyGAYgASgFEgsKA3JpZBgHIAEoCRITCgtyZXBhaXJfc3NyYxgIIAEoDSKWAQoETW9kZRIPCgtNT0RFX1VOVVNFRBAAEiAKHE9ORV9TUEFUSUFMX0xBWUVSX1BFUl9TVFJFQU0QARImCiJNVUxUSVBMRV9TUEFUSUFMX0xBWUVSU19QRVJfU1RSRUFNEAISMwovT05FX1NQQVRJQUxfTEFZRVJfUEVSX1NUUkVBTV9JTkNPTVBMRVRFX1JUQ1BfU1IQAyKnBgoKRGF0YVBhY2tldBIqCgRraW5kGAEgASgOMhgubGl2ZWtpdC5EYXRhUGFja2V0LktpbmRCAhgBEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAQgASgJEh4KFmRlc3RpbmF0aW9uX2lkZW50aXRpZXMYBSADKAkSIwoEdXNlchgCIAEoCzITLmxpdmVraXQuVXNlclBhY2tldEgAEjMKB3NwZWFrZXIYAyABKAsyHC5saXZla2l0LkFjdGl2ZVNwZWFrZXJVcGRhdGVCAhgBSAASJAoIc2lwX2R0bWYYBiABKAsyEC5saXZla2l0LlNpcERUTUZIABIvCg10cmFuc2NyaXB0aW9uGAcgASgLMhYubGl2ZWtpdC5UcmFuc2NyaXB0aW9uSAASKAoHbWV0cmljcxgIIAEoCzIVLmxpdmVraXQuTWV0cmljc0JhdGNoSAASLAoMY2hhdF9tZXNzYWdlGAkgASgLMhQubGl2ZWtpdC5DaGF0TWVzc2FnZUgAEioKC3JwY19yZXF1ZXN0GAogASgLMhMubGl2ZWtpdC5ScGNSZXF1ZXN0SAASIgoHcnBjX2FjaxgLIAEoCzIPLmxpdmVraXQuUnBjQWNrSAASLAoMcnBjX3Jlc3BvbnNlGAwgASgLMhQubGl2ZWtpdC5ScGNSZXNwb25zZUgAEjMKDXN0cmVhbV9oZWFkZXIYDSABKAsyGi5saXZla2l0LkRhdGFTdHJlYW0uSGVhZGVySAASMQoMc3RyZWFtX2NodW5rGA4gASgLMhkubGl2ZWtpdC5EYXRhU3RyZWFtLkNodW5rSAASNQoOc3RyZWFtX3RyYWlsZXIYDyABKAsyGy5saXZla2l0LkRhdGFTdHJlYW0uVHJhaWxlckgAEjQKEGVuY3J5cHRlZF9wYWNrZXQYEiABKAsyGC5saXZla2l0LkVuY3J5cHRlZFBhY2tldEgAEhAKCHNlcXVlbmNlGBAgASgNEhcKD3BhcnRpY2lwYW50X3NpZBgRIAEoCSIfCgRLaW5kEgwKCFJFTElBQkxFEAASCQoFTE9TU1kQAUIHCgV2YWx1ZSJ8Cg9FbmNyeXB0ZWRQYWNrZXQSMQoPZW5jcnlwdGlvbl90eXBlGAEgASgOMhgubGl2ZWtpdC5FbmNyeXB0aW9uLlR5cGUSCgoCaXYYAiABKAwSEQoJa2V5X2luZGV4GAMgASgNEhcKD2VuY3J5cHRlZF92YWx1ZRgEIAEoDCKRAwoWRW5jcnlwdGVkUGFja2V0UGF5bG9hZBIjCgR1c2VyGAEgASgLMhMubGl2ZWtpdC5Vc2VyUGFja2V0SAASLAoMY2hhdF9tZXNzYWdlGAMgASgLMhQubGl2ZWtpdC5DaGF0TWVzc2FnZUgAEioKC3JwY19yZXF1ZXN0GAQgASgLMhMubGl2ZWtpdC5ScGNSZXF1ZXN0SAASIgoHcnBjX2FjaxgFIAEoCzIPLmxpdmVraXQuUnBjQWNrSAASLAoMcnBjX3Jlc3BvbnNlGAYgASgLMhQubGl2ZWtpdC5ScGNSZXNwb25zZUgAEjMKDXN0cmVhbV9oZWFkZXIYByABKAsyGi5saXZla2l0LkRhdGFTdHJlYW0uSGVhZGVySAASMQoMc3RyZWFtX2NodW5rGAggASgLMhkubGl2ZWtpdC5EYXRhU3RyZWFtLkNodW5rSAASNQoOc3RyZWFtX3RyYWlsZXIYCSABKAsyGy5saXZla2l0LkRhdGFTdHJlYW0uVHJhaWxlckgAQgcKBXZhbHVlIkEKE0FjdGl2ZVNwZWFrZXJVcGRhdGUSJgoIc3BlYWtlcnMYASADKAsyFC5saXZla2l0LlNwZWFrZXJJbmZvOgIYASI5CgtTcGVha2VySW5mbxILCgNzaWQYASABKAkSDQoFbGV2ZWwYAiABKAISDgoGYWN0aXZlGAMgASgIIrcCCgpVc2VyUGFja2V0EhsKD3BhcnRpY2lwYW50X3NpZBgBIAEoCUICGAESIAoUcGFydGljaXBhbnRfaWRlbnRpdHkYBSABKAlCAhgBEg8KB3BheWxvYWQYAiABKAwSHAoQZGVzdGluYXRpb25fc2lkcxgDIAMoCUICGAESIgoWZGVzdGluYXRpb25faWRlbnRpdGllcxgGIAMoCUICGAESEgoFdG9waWMYBCABKAlIAIgBARIPCgJpZBgIIAEoCUgBiAEBEhsKCnN0YXJ0X3RpbWUYCSABKARCAjABSAKIAQESGQoIZW5kX3RpbWUYCiABKARCAjABSAOIAQESDQoFbm9uY2UYCyABKAxCCAoGX3RvcGljQgUKA19pZEINCgtfc3RhcnRfdGltZUILCglfZW5kX3RpbWUiJgoHU2lwRFRNRhIMCgRjb2RlGAMgASgNEg0KBWRpZ2l0GAQgASgJInwKDVRyYW5zY3JpcHRpb24SKAogdHJhbnNjcmliZWRfcGFydGljaXBhbnRfaWRlbnRpdHkYAiABKAkSEAoIdHJhY2tfaWQYAyABKAkSLwoIc2VnbWVudHMYBCADKAsyHS5saXZla2l0LlRyYW5zY3JpcHRpb25TZWdtZW50In8KFFRyYW5zY3JpcHRpb25TZWdtZW50EgoKAmlkGAEgASgJEgwKBHRleHQYAiABKAkSFgoKc3RhcnRfdGltZRgDIAEoBEICMAESFAoIZW5kX3RpbWUYBCABKARCAjABEg0KBWZpbmFsGAUgASgIEhAKCGxhbmd1YWdlGAYgASgJIpkBCgtDaGF0TWVzc2FnZRIKCgJpZBgBIAEoCRIVCgl0aW1lc3RhbXAYAiABKANCAjABEh8KDmVkaXRfdGltZXN0YW1wGAMgASgDQgIwAUgAiAEBEg8KB21lc3NhZ2UYBCABKAkSDwoHZGVsZXRlZBgFIAEoCBIRCglnZW5lcmF0ZWQYBiABKAhCEQoPX2VkaXRfdGltZXN0YW1wImcKClJwY1JlcXVlc3QSCgoCaWQYASABKAkSDgoGbWV0aG9kGAIgASgJEg8KB3BheWxvYWQYAyABKAkSGwoTcmVzcG9uc2VfdGltZW91dF9tcxgEIAEoDRIPCgd2ZXJzaW9uGAUgASgNIhwKBlJwY0FjaxISCgpyZXF1ZXN0X2lkGAEgASgJImEKC1JwY1Jlc3BvbnNlEhIKCnJlcXVlc3RfaWQYASABKAkSEQoHcGF5bG9hZBgCIAEoCUgAEiIKBWVycm9yGAMgASgLMhEubGl2ZWtpdC5ScGNFcnJvckgAQgcKBXZhbHVlIjcKCFJwY0Vycm9yEgwKBGNvZGUYASABKA0SDwoHbWVzc2FnZRgCIAEoCRIMCgRkYXRhGAMgASgJIkAKEVBhcnRpY2lwYW50VHJhY2tzEhcKD3BhcnRpY2lwYW50X3NpZBgBIAEoCRISCgp0cmFja19zaWRzGAIgAygJIs4BCgpTZXJ2ZXJJbmZvEiwKB2VkaXRpb24YASABKA4yGy5saXZla2l0LlNlcnZlckluZm8uRWRpdGlvbhIPCgd2ZXJzaW9uGAIgASgJEhAKCHByb3RvY29sGAMgASgFEg4KBnJlZ2lvbhgEIAEoCRIPCgdub2RlX2lkGAUgASgJEhIKCmRlYnVnX2luZm8YBiABKAkSFgoOYWdlbnRfcHJvdG9jb2wYByABKAUiIgoHRWRpdGlvbhIMCghTdGFuZGFyZBAAEgkKBUNsb3VkEAEiugMKCkNsaWVudEluZm8SJAoDc2RrGAEgASgOMhcubGl2ZWtpdC5DbGllbnRJbmZvLlNESxIPCgd2ZXJzaW9uGAIgASgJEhAKCHByb3RvY29sGAMgASgFEgoKAm9zGAQgASgJEhIKCm9zX3ZlcnNpb24YBSABKAkSFAoMZGV2aWNlX21vZGVsGAYgASgJEg8KB2Jyb3dzZXIYByABKAkSFwoPYnJvd3Nlcl92ZXJzaW9uGAggASgJEg8KB2FkZHJlc3MYCSABKAkSDwoHbmV0d29yaxgKIAEoCRISCgpvdGhlcl9zZGtzGAsgASgJEhcKD2NsaWVudF9wcm90b2NvbBgMIAEoBSKzAQoDU0RLEgsKB1VOS05PV04QABIGCgJKUxABEgkKBVNXSUZUEAISCwoHQU5EUk9JRBADEgsKB0ZMVVRURVIQBBIGCgJHTxAFEgkKBVVOSVRZEAYSEAoMUkVBQ1RfTkFUSVZFEAcSCAoEUlVTVBAIEgoKBlBZVEhPThAJEgcKA0NQUBAKEg0KCVVOSVRZX1dFQhALEggKBE5PREUQDBIKCgZVTlJFQUwQDRIJCgVFU1AzMhAOIowCChNDbGllbnRDb25maWd1cmF0aW9uEioKBXZpZGVvGAEgASgLMhsubGl2ZWtpdC5WaWRlb0NvbmZpZ3VyYXRpb24SKwoGc2NyZWVuGAIgASgLMhsubGl2ZWtpdC5WaWRlb0NvbmZpZ3VyYXRpb24SNwoRcmVzdW1lX2Nvbm5lY3Rpb24YAyABKA4yHC5saXZla2l0LkNsaWVudENvbmZpZ1NldHRpbmcSMAoPZGlzYWJsZWRfY29kZWNzGAQgASgLMhcubGl2ZWtpdC5EaXNhYmxlZENvZGVjcxIxCgtmb3JjZV9yZWxheRgFIAEoDjIcLmxpdmVraXQuQ2xpZW50Q29uZmlnU2V0dGluZyJMChJWaWRlb0NvbmZpZ3VyYXRpb24SNgoQaGFyZHdhcmVfZW5jb2RlchgBIAEoDjIcLmxpdmVraXQuQ2xpZW50Q29uZmlnU2V0dGluZyJRCg5EaXNhYmxlZENvZGVjcxIeCgZjb2RlY3MYASADKAsyDi5saXZla2l0LkNvZGVjEh8KB3B1Ymxpc2gYAiADKAsyDi5saXZla2l0LkNvZGVjIpACCghSVFBEcmlmdBIuCgpzdGFydF90aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCghlbmRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEAoIZHVyYXRpb24YAyABKAESGwoPc3RhcnRfdGltZXN0YW1wGAQgASgEQgIwARIZCg1lbmRfdGltZXN0YW1wGAUgASgEQgIwARIbCg9ydHBfY2xvY2tfdGlja3MYBiABKARCAjABEhkKDWRyaWZ0X3NhbXBsZXMYByABKANCAjABEhAKCGRyaWZ0X21zGAggASgBEhIKCmNsb2NrX3JhdGUYCSABKAEi7goKCFJUUFN0YXRzEi4KCnN0YXJ0X3RpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCGVuZF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghkdXJhdGlvbhgDIAEoARIPCgdwYWNrZXRzGAQgASgNEhMKC3BhY2tldF9yYXRlGAUgASgBEhEKBWJ5dGVzGAYgASgEQgIwARIYCgxoZWFkZXJfYnl0ZXMYJyABKARCAjABEg8KB2JpdHJhdGUYByABKAESFAoMcGFja2V0c19sb3N0GAggASgNEhgKEHBhY2tldF9sb3NzX3JhdGUYCSABKAESHgoWcGFja2V0X2xvc3NfcGVyY2VudGFnZRgKIAEoAhIZChFwYWNrZXRzX2R1cGxpY2F0ZRgLIAEoDRIdChVwYWNrZXRfZHVwbGljYXRlX3JhdGUYDCABKAESGwoPYnl0ZXNfZHVwbGljYXRlGA0gASgEQgIwARIiChZoZWFkZXJfYnl0ZXNfZHVwbGljYXRlGCggASgEQgIwARIZChFiaXRyYXRlX2R1cGxpY2F0ZRgOIAEoARIXCg9wYWNrZXRzX3BhZGRpbmcYDyABKA0SGwoTcGFja2V0X3BhZGRpbmdfcmF0ZRgQIAEoARIZCg1ieXRlc19wYWRkaW5nGBEgASgEQgIwARIgChRoZWFkZXJfYnl0ZXNfcGFkZGluZxgpIAEoBEICMAESFwoPYml0cmF0ZV9wYWRkaW5nGBIgASgBEhwKFHBhY2tldHNfb3V0X29mX29yZGVyGBMgASgNEg4KBmZyYW1lcxgUIAEoDRISCgpmcmFtZV9yYXRlGBUgASgBEhYKDmppdHRlcl9jdXJyZW50GBYgASgBEhIKCmppdHRlcl9tYXgYFyABKAESOgoNZ2FwX2hpc3RvZ3JhbRgYIAMoCzIjLmxpdmVraXQuUlRQU3RhdHMuR2FwSGlzdG9ncmFtRW50cnkSDQoFbmFja3MYGSABKA0SEQoJbmFja19hY2tzGCUgASgNEhMKC25hY2tfbWlzc2VzGBogASgNEhUKDW5hY2tfcmVwZWF0ZWQYJiABKA0SDAoEcGxpcxgbIAEoDRIsCghsYXN0X3BsaRgcIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDAoEZmlycxgdIAEoDRIsCghsYXN0X2ZpchgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLcnR0X2N1cnJlbnQYHyABKA0SDwoHcnR0X21heBggIAEoDRISCgprZXlfZnJhbWVzGCEgASgNEjIKDmxhc3Rfa2V5X2ZyYW1lGCIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCg9sYXllcl9sb2NrX3BsaXMYIyABKA0SNwoTbGFzdF9sYXllcl9sb2NrX3BsaRgkIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJwoMcGFja2V0X2RyaWZ0GCwgASgLMhEubGl2ZWtpdC5SVFBEcmlmdBIrChBudHBfcmVwb3J0X2RyaWZ0GC0gASgLMhEubGl2ZWtpdC5SVFBEcmlmdBIvChRyZWJhc2VkX3JlcG9ydF9kcmlmdBguIAEoCzIRLmxpdmVraXQuUlRQRHJpZnQSMAoVcmVjZWl2ZWRfcmVwb3J0X2RyaWZ0GC8gASgLMhEubGl2ZWtpdC5SVFBEcmlmdBozChFHYXBIaXN0b2dyYW1FbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKA06AjgBIrYBChVSVENQU2VuZGVyUmVwb3J0U3RhdGUSFQoNcnRwX3RpbWVzdGFtcBgBIAEoDRIdChFydHBfdGltZXN0YW1wX2V4dBgCIAEoBEICMAESGQoNbnRwX3RpbWVzdGFtcBgDIAEoBEICMAESDgoCYXQYBCABKANCAjABEhcKC2F0X2FkanVzdGVkGAUgASgDQgIwARIPCgdwYWNrZXRzGAYgASgNEhIKBm9jdGV0cxgHIAEoBEICMAEi1QIKEVJUUEZvcndhcmRlclN0YXRlEg8KB3N0YXJ0ZWQYASABKAgSHwoXcmVmZXJlbmNlX2xheWVyX3NwYXRpYWwYAiABKAUSGgoOcHJlX3N0YXJ0X3RpbWUYAyABKANCAjABEh8KE2V4dF9maXJzdF90aW1lc3RhbXAYBCABKARCAjABEigKHGR1bW15X3N0YXJ0X3RpbWVzdGFtcF9vZmZzZXQYBSABKARCAjABEisKCnJ0cF9tdW5nZXIYBiABKAsyFy5saXZla2l0LlJUUE11bmdlclN0YXRlEi0KCnZwOF9tdW5nZXIYByABKAsyFy5saXZla2l0LlZQOE11bmdlclN0YXRlSAASOwoTc2VuZGVyX3JlcG9ydF9zdGF0ZRgIIAMoCzIeLmxpdmVraXQuUlRDUFNlbmRlclJlcG9ydFN0YXRlQg4KDGNvZGVjX211bmdlciLbAQoOUlRQTXVuZ2VyU3RhdGUSJAoYZXh0X2xhc3Rfc2VxdWVuY2VfbnVtYmVyGAEgASgEQgIwARIrCh9leHRfc2Vjb25kX2xhc3Rfc2VxdWVuY2VfbnVtYmVyGAIgASgEQgIwARIeChJleHRfbGFzdF90aW1lc3RhbXAYAyABKARCAjABEiUKGWV4dF9zZWNvbmRfbGFzdF90aW1lc3RhbXAYBCABKARCAjABEhMKC2xhc3RfbWFya2VyGAUgASgIEhoKEnNlY29uZF9sYXN0X21hcmtlchgGIAEoCCK4AQoOVlA4TXVuZ2VyU3RhdGUSGwoTZXh0X2xhc3RfcGljdHVyZV9pZBgBIAEoBRIXCg9waWN0dXJlX2lkX3VzZWQYAiABKAgSGAoQbGFzdF90bDBfcGljX2lkeBgDIAEoDRIYChB0bDBfcGljX2lkeF91c2VkGAQgASgIEhAKCHRpZF91c2VkGAUgASgIEhQKDGxhc3Rfa2V5X2lkeBgGIAEoDRIUCgxrZXlfaWR4X3VzZWQYByABKAgiNQoMVGltZWRWZXJzaW9uEhYKCnVuaXhfbWljcm8YASABKANCAjABEg0KBXRpY2tzGAIgASgFItkHCgpEYXRhU3RyZWFtGqQBCgpUZXh0SGVhZGVyEjkKDm9wZXJhdGlvbl90eXBlGAEgASgOMiEubGl2ZWtpdC5EYXRhU3RyZWFtLk9wZXJhdGlvblR5cGUSDwoHdmVyc2lvbhgCIAEoBRIaChJyZXBseV90b19zdHJlYW1faWQYAyABKAkSGwoTYXR0YWNoZWRfc3RyZWFtX2lkcxgEIAMoCRIRCglnZW5lcmF0ZWQYBSABKAgaGgoKQnl0ZUhlYWRlchIMCgRuYW1lGAEgASgJGq4DCgZIZWFkZXISEQoJc3RyZWFtX2lkGAEgASgJEhUKCXRpbWVzdGFtcBgCIAEoA0ICMAESDQoFdG9waWMYAyABKAkSEQoJbWltZV90eXBlGAQgASgJEh0KDHRvdGFsX2xlbmd0aBgFIAEoBEICMAFIAYgBARI1Cg9lbmNyeXB0aW9uX3R5cGUYByABKA4yGC5saXZla2l0LkVuY3J5cHRpb24uVHlwZUICGAESPgoKYXR0cmlidXRlcxgIIAMoCzIqLmxpdmVraXQuRGF0YVN0cmVhbS5IZWFkZXIuQXR0cmlidXRlc0VudHJ5EjUKC3RleHRfaGVhZGVyGAkgASgLMh4ubGl2ZWtpdC5EYXRhU3RyZWFtLlRleHRIZWFkZXJIABI1CgtieXRlX2hlYWRlchgKIAEoCzIeLmxpdmVraXQuRGF0YVN0cmVhbS5CeXRlSGVhZGVySAAaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCEAoOY29udGVudF9oZWFkZXJCDwoNX3RvdGFsX2xlbmd0aBpxCgVDaHVuaxIRCglzdHJlYW1faWQYASABKAkSFwoLY2h1bmtfaW5kZXgYAiABKARCAjABEg8KB2NvbnRlbnQYAyABKAwSDwoHdmVyc2lvbhgEIAEoBRITCgJpdhgFIAEoDEICGAFIAIgBAUIFCgNfaXYaoAEKB1RyYWlsZXISEQoJc3RyZWFtX2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCRI/CgphdHRyaWJ1dGVzGAMgAygLMisubGl2ZWtpdC5EYXRhU3RyZWFtLlRyYWlsZXIuQXR0cmlidXRlc0VudHJ5GjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkEKDU9wZXJhdGlvblR5cGUSCgoGQ1JFQVRFEAASCgoGVVBEQVRFEAESCgoGREVMRVRFEAISDAoIUkVBQ1RJT04QAyI+CgxGaWx0ZXJQYXJhbXMSFgoOaW5jbHVkZV9ldmVudHMYASADKAkSFgoOZXhjbHVkZV9ldmVudHMYAiADKAkiXwoNV2ViaG9va0NvbmZpZxILCgN1cmwYASABKAkSEwoLc2lnbmluZ19rZXkYAiABKAkSLAoNZmlsdGVyX3BhcmFtcxgDIAEoCzIVLmxpdmVraXQuRmlsdGVyUGFyYW1zIjYKFFN1YnNjcmliZWRBdWRpb0NvZGVjEg0KBWNvZGVjGAEgASgJEg8KB2VuYWJsZWQYAiABKAgqOwoKQXVkaW9Db2RlYxIOCgpERUZBVUxUX0FDEAASCAoET1BVUxABEgcKA0FBQxACEgoKBkFDX01QMxADKlYKClZpZGVvQ29kZWMSDgoKREVGQVVMVF9WQxAAEhEKDUgyNjRfQkFTRUxJTkUQARINCglIMjY0X01BSU4QAhINCglIMjY0X0hJR0gQAxIHCgNWUDgQBCopCgpJbWFnZUNvZGVjEg4KCklDX0RFRkFVTFQQABILCgdJQ19KUEVHEAEqSQoRQmFja3VwQ29kZWNQb2xpY3kSFQoRUFJFRkVSX1JFR1JFU1NJT04QABINCglTSU1VTENBU1QQARIOCgpSRUdSRVNTSU9OEAIqKwoJVHJhY2tUeXBlEgkKBUFVRElPEAASCQoFVklERU8QARIICgREQVRBEAIqYAoLVHJhY2tTb3VyY2USCwoHVU5LTk9XThAAEgoKBkNBTUVSQRABEg4KCk1JQ1JPUEhPTkUQAhIQCgxTQ1JFRU5fU0hBUkUQAxIWChJTQ1JFRU5fU0hBUkVfQVVESU8QBCpCChREYXRhVHJhY2tFeHRlbnNpb25JRBIQCgxEVEVJX0lOVkFMSUQQABIYChREVEVJX1BBUlRJQ0lQQU5UX1NJRBABKjYKDFZpZGVvUXVhbGl0eRIHCgNMT1cQABIKCgZNRURJVU0QARIICgRISUdIEAISBwoDT0ZGEAMqQAoRQ29ubmVjdGlvblF1YWxpdHkSCAoEUE9PUhAAEggKBEdPT0QQARINCglFWENFTExFTlQQAhIICgRMT1NUEAMqOwoTQ2xpZW50Q29uZmlnU2V0dGluZxIJCgVVTlNFVBAAEgwKCERJU0FCTEVEEAESCwoHRU5BQkxFRBACKtcCChBEaXNjb25uZWN0UmVhc29uEhIKDlVOS05PV05fUkVBU09OEAASFAoQQ0xJRU5UX0lOSVRJQVRFRBABEhYKEkRVUExJQ0FURV9JREVOVElUWRACEhMKD1NFUlZFUl9TSFVURE9XThADEhcKE1BBUlRJQ0lQQU5UX1JFTU9WRUQQBBIQCgxST09NX0RFTEVURUQQBRISCg5TVEFURV9NSVNNQVRDSBAGEhAKDEpPSU5fRkFJTFVSRRAHEg0KCU1JR1JBVElPThAIEhAKDFNJR05BTF9DTE9TRRAJEg8KC1JPT01fQ0xPU0VEEAoSFAoQVVNFUl9VTkFWQUlMQUJMRRALEhEKDVVTRVJfUkVKRUNURUQQDBIVChFTSVBfVFJVTktfRkFJTFVSRRANEhYKEkNPTk5FQ1RJT05fVElNRU9VVBAOEhEKDU1FRElBX0ZBSUxVUkUQDyqJAQoPUmVjb25uZWN0UmVhc29uEg4KClJSX1VOS05PV04QABIaChZSUl9TSUdOQUxfRElTQ09OTkVDVEVEEAESFwoTUlJfUFVCTElTSEVSX0ZBSUxFRBACEhgKFFJSX1NVQlNDUklCRVJfRkFJTEVEEAMSFwoTUlJfU1dJVENIX0NBTkRJREFURRAEKlQKEVN1YnNjcmlwdGlvbkVycm9yEg4KClNFX1VOS05PV04QABIYChRTRV9DT0RFQ19VTlNVUFBPUlRFRBABEhUKEVNFX1RSQUNLX05PVEZPVU5EEAIqvQEKEUF1ZGlvVHJhY2tGZWF0dXJlEg0KCVRGX1NURVJFTxAAEg0KCVRGX05PX0RUWBABEhgKFFRGX0FVVE9fR0FJTl9DT05UUk9MEAISGAoUVEZfRUNIT19DQU5DRUxMQVRJT04QAxIYChRURl9OT0lTRV9TVVBQUkVTU0lPThAEEiIKHlRGX0VOSEFOQ0VEX05PSVNFX0NBTkNFTExBVElPThAFEhgKFFRGX1BSRUNPTk5FQ1RfQlVGRkVSEAZCggEKC2NvbS5saXZla2l0QhJMaXZla2l0TW9kZWxzUHJvdG9QAVojZ2l0aHViLmNvbS9saXZla2l0L3Byb3RvY29sL2xpdmVraXSiAgNMWFiqAgdMaXZla2l0ygIHTGl2ZWtpdOICE0xpdmVraXRcR1BCTWV0YWRhdGHqAgdMaXZla2l0YgZwcm90bzM\", [file_google_protobuf_timestamp, file_livekit_metrics, file_logger_options]);\n\n/**\n * @generated from message livekit.Pagination\n */\nexport type Pagination = Message<\"livekit.Pagination\"> & {\n /**\n * list entities which IDs are greater\n *\n * @generated from field: string after_id = 1;\n */\n afterId: string;\n\n /**\n * @generated from field: int32 limit = 2;\n */\n limit: number;\n};\n\n/**\n * Describes the message livekit.Pagination.\n * Use `create(PaginationSchema)` to create a new message.\n */\nexport const PaginationSchema: GenMessage<Pagination> = /*@__PURE__*/\n messageDesc(file_livekit_models, 0);\n\n/**\n * @generated from message livekit.TokenPagination\n */\nexport type TokenPagination = Message<\"livekit.TokenPagination\"> & {\n /**\n * @generated from field: string token = 1;\n */\n token: string;\n};\n\n/**\n * Describes the message livekit.TokenPagination.\n * Use `create(TokenPaginationSchema)` to create a new message.\n */\nexport const TokenPaginationSchema: GenMessage<TokenPagination> = /*@__PURE__*/\n messageDesc(file_livekit_models, 1);\n\n/**\n * ListUpdate is used for updated APIs where 'repeated string' field is modified.\n *\n * @generated from message livekit.ListUpdate\n */\nexport type ListUpdate = Message<\"livekit.ListUpdate\"> & {\n /**\n * set the field to a new list\n *\n * @generated from field: repeated string set = 1;\n */\n set: string[];\n\n /**\n * append items to a list, avoiding duplicates\n *\n * @generated from field: repeated string add = 2;\n */\n add: string[];\n\n /**\n * delete items from a list\n *\n * @generated from field: repeated string remove = 3;\n */\n remove: string[];\n\n /**\n * sets the list to an empty list\n *\n * @generated from field: bool clear = 4;\n */\n clear: boolean;\n};\n\n/**\n * Describes the message livekit.ListUpdate.\n * Use `create(ListUpdateSchema)` to create a new message.\n */\nexport const ListUpdateSchema: GenMessage<ListUpdate> = /*@__PURE__*/\n messageDesc(file_livekit_models, 2);\n\n/**\n * @generated from message livekit.Room\n */\nexport type Room = Message<\"livekit.Room\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: uint32 empty_timeout = 3;\n */\n emptyTimeout: number;\n\n /**\n * @generated from field: uint32 departure_timeout = 14;\n */\n departureTimeout: number;\n\n /**\n * @generated from field: uint32 max_participants = 4;\n */\n maxParticipants: number;\n\n /**\n * @generated from field: int64 creation_time = 5 [jstype = JS_STRING];\n */\n creationTime: string;\n\n /**\n * @generated from field: int64 creation_time_ms = 15 [jstype = JS_STRING];\n */\n creationTimeMs: string;\n\n /**\n * @generated from field: string turn_password = 6;\n */\n turnPassword: string;\n\n /**\n * @generated from field: repeated livekit.Codec enabled_codecs = 7;\n */\n enabledCodecs: Codec[];\n\n /**\n * @generated from field: string metadata = 8;\n */\n metadata: string;\n\n /**\n * @generated from field: uint32 num_participants = 9;\n */\n numParticipants: number;\n\n /**\n * @generated from field: uint32 num_publishers = 11;\n */\n numPublishers: number;\n\n /**\n * @generated from field: bool active_recording = 10;\n */\n activeRecording: boolean;\n\n /**\n * @generated from field: livekit.TimedVersion version = 13;\n */\n version?: TimedVersion;\n};\n\n/**\n * Describes the message livekit.Room.\n * Use `create(RoomSchema)` to create a new message.\n */\nexport const RoomSchema: GenMessage<Room> = /*@__PURE__*/\n messageDesc(file_livekit_models, 3);\n\n/**\n * @generated from message livekit.Codec\n */\nexport type Codec = Message<\"livekit.Codec\"> & {\n /**\n * @generated from field: string mime = 1;\n */\n mime: string;\n\n /**\n * @generated from field: string fmtp_line = 2;\n */\n fmtpLine: string;\n};\n\n/**\n * Describes the message livekit.Codec.\n * Use `create(CodecSchema)` to create a new message.\n */\nexport const CodecSchema: GenMessage<Codec> = /*@__PURE__*/\n messageDesc(file_livekit_models, 4);\n\n/**\n * @generated from message livekit.PlayoutDelay\n */\nexport type PlayoutDelay = Message<\"livekit.PlayoutDelay\"> & {\n /**\n * @generated from field: bool enabled = 1;\n */\n enabled: boolean;\n\n /**\n * @generated from field: uint32 min = 2;\n */\n min: number;\n\n /**\n * @generated from field: uint32 max = 3;\n */\n max: number;\n};\n\n/**\n * Describes the message livekit.PlayoutDelay.\n * Use `create(PlayoutDelaySchema)` to create a new message.\n */\nexport const PlayoutDelaySchema: GenMessage<PlayoutDelay> = /*@__PURE__*/\n messageDesc(file_livekit_models, 5);\n\n/**\n * @generated from message livekit.ParticipantPermission\n */\nexport type ParticipantPermission = Message<\"livekit.ParticipantPermission\"> & {\n /**\n * allow participant to subscribe to other tracks in the room\n *\n * @generated from field: bool can_subscribe = 1;\n */\n canSubscribe: boolean;\n\n /**\n * allow participant to publish new tracks to room\n *\n * @generated from field: bool can_publish = 2;\n */\n canPublish: boolean;\n\n /**\n * allow participant to publish data\n *\n * @generated from field: bool can_publish_data = 3;\n */\n canPublishData: boolean;\n\n /**\n * sources that are allowed to be published\n *\n * @generated from field: repeated livekit.TrackSource can_publish_sources = 9;\n */\n canPublishSources: TrackSource[];\n\n /**\n * indicates that it's hidden to others\n *\n * @generated from field: bool hidden = 7;\n */\n hidden: boolean;\n\n /**\n * indicates it's a recorder instance\n * deprecated: use ParticipantInfo.kind instead\n *\n * @generated from field: bool recorder = 8 [deprecated = true];\n * @deprecated\n */\n recorder: boolean;\n\n /**\n * indicates that participant can update own metadata and attributes\n *\n * @generated from field: bool can_update_metadata = 10;\n */\n canUpdateMetadata: boolean;\n\n /**\n * indicates that participant is an agent\n * deprecated: use ParticipantInfo.kind instead\n *\n * @generated from field: bool agent = 11 [deprecated = true];\n * @deprecated\n */\n agent: boolean;\n\n /**\n * if a participant can subscribe to metrics\n *\n * @generated from field: bool can_subscribe_metrics = 12;\n */\n canSubscribeMetrics: boolean;\n\n /**\n * if a participant can manage an agent session via RemoteSession (control and access state)\n *\n * @generated from field: bool can_manage_agent_session = 13;\n */\n canManageAgentSession: boolean;\n};\n\n/**\n * Describes the message livekit.ParticipantPermission.\n * Use `create(ParticipantPermissionSchema)` to create a new message.\n */\nexport const ParticipantPermissionSchema: GenMessage<ParticipantPermission> = /*@__PURE__*/\n messageDesc(file_livekit_models, 6);\n\n/**\n * @generated from message livekit.ParticipantInfo\n */\nexport type ParticipantInfo = Message<\"livekit.ParticipantInfo\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: string identity = 2;\n */\n identity: string;\n\n /**\n * @generated from field: livekit.ParticipantInfo.State state = 3;\n */\n state: ParticipantInfo_State;\n\n /**\n * @generated from field: repeated livekit.TrackInfo tracks = 4;\n */\n tracks: TrackInfo[];\n\n /**\n * @generated from field: string metadata = 5;\n */\n metadata: string;\n\n /**\n * timestamp when participant joined room, in seconds\n *\n * @generated from field: int64 joined_at = 6 [jstype = JS_STRING];\n */\n joinedAt: string;\n\n /**\n * timestamp when participant joined room, in milliseconds\n *\n * @generated from field: int64 joined_at_ms = 17 [jstype = JS_STRING];\n */\n joinedAtMs: string;\n\n /**\n * @generated from field: string name = 9;\n */\n name: string;\n\n /**\n * @generated from field: uint32 version = 10;\n */\n version: number;\n\n /**\n * @generated from field: livekit.ParticipantPermission permission = 11;\n */\n permission?: ParticipantPermission;\n\n /**\n * @generated from field: string region = 12;\n */\n region: string;\n\n /**\n * indicates the participant has an active publisher connection\n * and can publish to the server\n *\n * @generated from field: bool is_publisher = 13;\n */\n isPublisher: boolean;\n\n /**\n * @generated from field: livekit.ParticipantInfo.Kind kind = 14;\n */\n kind: ParticipantInfo_Kind;\n\n /**\n * @generated from field: map<string, string> attributes = 15;\n */\n attributes: { [key: string]: string };\n\n /**\n * @generated from field: livekit.DisconnectReason disconnect_reason = 16;\n */\n disconnectReason: DisconnectReason;\n\n /**\n * @generated from field: repeated livekit.ParticipantInfo.KindDetail kind_details = 18;\n */\n kindDetails: ParticipantInfo_KindDetail[];\n\n /**\n * @generated from field: repeated livekit.DataTrackInfo data_tracks = 19;\n */\n dataTracks: DataTrackInfo[];\n\n /**\n * protocol version used for client feature compatibility\n *\n * @generated from field: int32 client_protocol = 20;\n */\n clientProtocol: number;\n};\n\n/**\n * Describes the message livekit.ParticipantInfo.\n * Use `create(ParticipantInfoSchema)` to create a new message.\n */\nexport const ParticipantInfoSchema: GenMessage<ParticipantInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 7);\n\n/**\n * @generated from enum livekit.ParticipantInfo.State\n */\nexport enum ParticipantInfo_State {\n /**\n * websocket' connected, but not offered yet\n *\n * @generated from enum value: JOINING = 0;\n */\n JOINING = 0,\n\n /**\n * server received client offer\n *\n * @generated from enum value: JOINED = 1;\n */\n JOINED = 1,\n\n /**\n * ICE connectivity established\n *\n * @generated from enum value: ACTIVE = 2;\n */\n ACTIVE = 2,\n\n /**\n * WS disconnected\n *\n * @generated from enum value: DISCONNECTED = 3;\n */\n DISCONNECTED = 3,\n}\n\n/**\n * Describes the enum livekit.ParticipantInfo.State.\n */\nexport const ParticipantInfo_StateSchema: GenEnum<ParticipantInfo_State> = /*@__PURE__*/\n enumDesc(file_livekit_models, 7, 0);\n\n/**\n * @generated from enum livekit.ParticipantInfo.Kind\n */\nexport enum ParticipantInfo_Kind {\n /**\n * standard participants, e.g. web clients\n *\n * @generated from enum value: STANDARD = 0;\n */\n STANDARD = 0,\n\n /**\n * only ingests streams\n *\n * @generated from enum value: INGRESS = 1;\n */\n INGRESS = 1,\n\n /**\n * only consumes streams\n *\n * @generated from enum value: EGRESS = 2;\n */\n EGRESS = 2,\n\n /**\n * SIP participants\n *\n * @generated from enum value: SIP = 3;\n */\n SIP = 3,\n\n /**\n * LiveKit agents\n *\n * @generated from enum value: AGENT = 4;\n */\n AGENT = 4,\n\n /**\n * Connectors participants\n *\n * @generated from enum value: CONNECTOR = 7;\n */\n CONNECTOR = 7,\n\n /**\n * Bridge participants\n *\n * NEXT_ID: 9\n *\n * @generated from enum value: BRIDGE = 8;\n */\n BRIDGE = 8,\n}\n\n/**\n * Describes the enum livekit.ParticipantInfo.Kind.\n */\nexport const ParticipantInfo_KindSchema: GenEnum<ParticipantInfo_Kind> = /*@__PURE__*/\n enumDesc(file_livekit_models, 7, 1);\n\n/**\n * @generated from enum livekit.ParticipantInfo.KindDetail\n */\nexport enum ParticipantInfo_KindDetail {\n /**\n * @generated from enum value: CLOUD_AGENT = 0;\n */\n CLOUD_AGENT = 0,\n\n /**\n * @generated from enum value: FORWARDED = 1;\n */\n FORWARDED = 1,\n\n /**\n * @generated from enum value: CONNECTOR_WHATSAPP = 2;\n */\n CONNECTOR_WHATSAPP = 2,\n\n /**\n * @generated from enum value: CONNECTOR_TWILIO = 3;\n */\n CONNECTOR_TWILIO = 3,\n\n /**\n * NEXT_ID: 5\n *\n * @generated from enum value: BRIDGE_RTSP = 4;\n */\n BRIDGE_RTSP = 4,\n}\n\n/**\n * Describes the enum livekit.ParticipantInfo.KindDetail.\n */\nexport const ParticipantInfo_KindDetailSchema: GenEnum<ParticipantInfo_KindDetail> = /*@__PURE__*/\n enumDesc(file_livekit_models, 7, 2);\n\n/**\n * @generated from message livekit.Encryption\n */\nexport type Encryption = Message<\"livekit.Encryption\"> & {\n};\n\n/**\n * Describes the message livekit.Encryption.\n * Use `create(EncryptionSchema)` to create a new message.\n */\nexport const EncryptionSchema: GenMessage<Encryption> = /*@__PURE__*/\n messageDesc(file_livekit_models, 8);\n\n/**\n * @generated from enum livekit.Encryption.Type\n */\nexport enum Encryption_Type {\n /**\n * @generated from enum value: NONE = 0;\n */\n NONE = 0,\n\n /**\n * @generated from enum value: GCM = 1;\n */\n GCM = 1,\n\n /**\n * @generated from enum value: CUSTOM = 2;\n */\n CUSTOM = 2,\n}\n\n/**\n * Describes the enum livekit.Encryption.Type.\n */\nexport const Encryption_TypeSchema: GenEnum<Encryption_Type> = /*@__PURE__*/\n enumDesc(file_livekit_models, 8, 0);\n\n/**\n * @generated from message livekit.SimulcastCodecInfo\n */\nexport type SimulcastCodecInfo = Message<\"livekit.SimulcastCodecInfo\"> & {\n /**\n * @generated from field: string mime_type = 1;\n */\n mimeType: string;\n\n /**\n * @generated from field: string mid = 2;\n */\n mid: string;\n\n /**\n * @generated from field: string cid = 3;\n */\n cid: string;\n\n /**\n * @generated from field: repeated livekit.VideoLayer layers = 4;\n */\n layers: VideoLayer[];\n\n /**\n * @generated from field: livekit.VideoLayer.Mode video_layer_mode = 5;\n */\n videoLayerMode: VideoLayer_Mode;\n\n /**\n * cid (client side id for track) could be different between\n * signalling (AddTrackRequest) and SDP offer. This field\n * will be populated only if it is different to avoid\n * duplication and keep the representation concise.\n *\n * @generated from field: string sdp_cid = 6;\n */\n sdpCid: string;\n};\n\n/**\n * Describes the message livekit.SimulcastCodecInfo.\n * Use `create(SimulcastCodecInfoSchema)` to create a new message.\n */\nexport const SimulcastCodecInfoSchema: GenMessage<SimulcastCodecInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 9);\n\n/**\n * @generated from message livekit.TrackInfo\n */\nexport type TrackInfo = Message<\"livekit.TrackInfo\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: livekit.TrackType type = 2;\n */\n type: TrackType;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: bool muted = 4;\n */\n muted: boolean;\n\n /**\n * original width of video (unset for audio)\n * clients may receive a lower resolution version with simulcast\n *\n * @generated from field: uint32 width = 5;\n */\n width: number;\n\n /**\n * original height of video (unset for audio)\n *\n * @generated from field: uint32 height = 6;\n */\n height: number;\n\n /**\n * true if track is simulcasted\n *\n * see `video_layer_mode` in `codecs`\n *\n * @generated from field: bool simulcast = 7 [deprecated = true];\n * @deprecated\n */\n simulcast: boolean;\n\n /**\n * true if DTX (Discontinuous Transmission) is disabled for audio\n *\n * deprecated in favor of `audio_features`\n *\n * @generated from field: bool disable_dtx = 8 [deprecated = true];\n * @deprecated\n */\n disableDtx: boolean;\n\n /**\n * source of media\n *\n * @generated from field: livekit.TrackSource source = 9;\n */\n source: TrackSource;\n\n /**\n * see `codecs` for layers of individual codec\n *\n * @generated from field: repeated livekit.VideoLayer layers = 10 [deprecated = true];\n * @deprecated\n */\n layers: VideoLayer[];\n\n /**\n * mime type of codec\n *\n * @generated from field: string mime_type = 11;\n */\n mimeType: string;\n\n /**\n * @generated from field: string mid = 12;\n */\n mid: string;\n\n /**\n * @generated from field: repeated livekit.SimulcastCodecInfo codecs = 13;\n */\n codecs: SimulcastCodecInfo[];\n\n /**\n * deprecated in favor of `audio_features`\n *\n * @generated from field: bool stereo = 14 [deprecated = true];\n * @deprecated\n */\n stereo: boolean;\n\n /**\n * true if RED (Redundant Encoding) is disabled for audio\n *\n * @generated from field: bool disable_red = 15;\n */\n disableRed: boolean;\n\n /**\n * @generated from field: livekit.Encryption.Type encryption = 16;\n */\n encryption: Encryption_Type;\n\n /**\n * @generated from field: string stream = 17;\n */\n stream: string;\n\n /**\n * @generated from field: livekit.TimedVersion version = 18;\n */\n version?: TimedVersion;\n\n /**\n * @generated from field: repeated livekit.AudioTrackFeature audio_features = 19;\n */\n audioFeatures: AudioTrackFeature[];\n\n /**\n * @generated from field: livekit.BackupCodecPolicy backup_codec_policy = 20;\n */\n backupCodecPolicy: BackupCodecPolicy;\n};\n\n/**\n * Describes the message livekit.TrackInfo.\n * Use `create(TrackInfoSchema)` to create a new message.\n */\nexport const TrackInfoSchema: GenMessage<TrackInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 10);\n\n/**\n * @generated from message livekit.DataTrackInfo\n */\nexport type DataTrackInfo = Message<\"livekit.DataTrackInfo\"> & {\n /**\n * Client-assigned, 16-bit identifier that will be attached to packets sent by the publisher.\n *\n * @generated from field: uint32 pub_handle = 1;\n */\n pubHandle: number;\n\n /**\n * Server-assigned track identifier.\n *\n * @generated from field: string sid = 2;\n */\n sid: string;\n\n /**\n * Human-readable identifier (e.g., `geoLocation`, `servoPosition.x`, etc.), unique per publisher.\n *\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * Method used for end-to-end encryption (E2EE) on packet payloads.\n *\n * @generated from field: livekit.Encryption.Type encryption = 4;\n */\n encryption: Encryption_Type;\n};\n\n/**\n * Describes the message livekit.DataTrackInfo.\n * Use `create(DataTrackInfoSchema)` to create a new message.\n */\nexport const DataTrackInfoSchema: GenMessage<DataTrackInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 11);\n\n/**\n * @generated from message livekit.DataTrackExtensionParticipantSid\n */\nexport type DataTrackExtensionParticipantSid = Message<\"livekit.DataTrackExtensionParticipantSid\"> & {\n /**\n * @generated from field: livekit.DataTrackExtensionID id = 1;\n */\n id: DataTrackExtensionID;\n\n /**\n * @generated from field: string participant_sid = 2;\n */\n participantSid: string;\n};\n\n/**\n * Describes the message livekit.DataTrackExtensionParticipantSid.\n * Use `create(DataTrackExtensionParticipantSidSchema)` to create a new message.\n */\nexport const DataTrackExtensionParticipantSidSchema: GenMessage<DataTrackExtensionParticipantSid> = /*@__PURE__*/\n messageDesc(file_livekit_models, 12);\n\n/**\n * @generated from message livekit.DataTrackSubscriptionOptions\n */\nexport type DataTrackSubscriptionOptions = Message<\"livekit.DataTrackSubscriptionOptions\"> & {\n /**\n * Rate in frames per second (FPS) the subscriber wants to receive frames at.\n * If omitted, the subscriber defaults to the publisher's fps\n *\n * @generated from field: optional uint32 target_fps = 1;\n */\n targetFps?: number;\n};\n\n/**\n * Describes the message livekit.DataTrackSubscriptionOptions.\n * Use `create(DataTrackSubscriptionOptionsSchema)` to create a new message.\n */\nexport const DataTrackSubscriptionOptionsSchema: GenMessage<DataTrackSubscriptionOptions> = /*@__PURE__*/\n messageDesc(file_livekit_models, 13);\n\n/**\n * provide information about available spatial layers\n *\n * @generated from message livekit.VideoLayer\n */\nexport type VideoLayer = Message<\"livekit.VideoLayer\"> & {\n /**\n * for tracks with a single layer, this should be HIGH\n *\n * @generated from field: livekit.VideoQuality quality = 1;\n */\n quality: VideoQuality;\n\n /**\n * @generated from field: uint32 width = 2;\n */\n width: number;\n\n /**\n * @generated from field: uint32 height = 3;\n */\n height: number;\n\n /**\n * target bitrate in bit per second (bps), server will measure actual\n *\n * @generated from field: uint32 bitrate = 4;\n */\n bitrate: number;\n\n /**\n * @generated from field: uint32 ssrc = 5;\n */\n ssrc: number;\n\n /**\n * @generated from field: int32 spatial_layer = 6;\n */\n spatialLayer: number;\n\n /**\n * @generated from field: string rid = 7;\n */\n rid: string;\n\n /**\n * @generated from field: uint32 repair_ssrc = 8;\n */\n repairSsrc: number;\n};\n\n/**\n * Describes the message livekit.VideoLayer.\n * Use `create(VideoLayerSchema)` to create a new message.\n */\nexport const VideoLayerSchema: GenMessage<VideoLayer> = /*@__PURE__*/\n messageDesc(file_livekit_models, 14);\n\n/**\n * @generated from enum livekit.VideoLayer.Mode\n */\nexport enum VideoLayer_Mode {\n /**\n * @generated from enum value: MODE_UNUSED = 0;\n */\n MODE_UNUSED = 0,\n\n /**\n * @generated from enum value: ONE_SPATIAL_LAYER_PER_STREAM = 1;\n */\n ONE_SPATIAL_LAYER_PER_STREAM = 1,\n\n /**\n * @generated from enum value: MULTIPLE_SPATIAL_LAYERS_PER_STREAM = 2;\n */\n MULTIPLE_SPATIAL_LAYERS_PER_STREAM = 2,\n\n /**\n * @generated from enum value: ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR = 3;\n */\n ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR = 3,\n}\n\n/**\n * Describes the enum livekit.VideoLayer.Mode.\n */\nexport const VideoLayer_ModeSchema: GenEnum<VideoLayer_Mode> = /*@__PURE__*/\n enumDesc(file_livekit_models, 14, 0);\n\n/**\n * new DataPacket API\n *\n * @generated from message livekit.DataPacket\n */\nexport type DataPacket = Message<\"livekit.DataPacket\"> & {\n /**\n * @generated from field: livekit.DataPacket.Kind kind = 1 [deprecated = true];\n * @deprecated\n */\n kind: DataPacket_Kind;\n\n /**\n * participant identity of user that sent the message\n *\n * @generated from field: string participant_identity = 4;\n */\n participantIdentity: string;\n\n /**\n * identities of participants who will receive the message (sent to all by default)\n *\n * @generated from field: repeated string destination_identities = 5;\n */\n destinationIdentities: string[];\n\n /**\n * @generated from oneof livekit.DataPacket.value\n */\n value: {\n /**\n * @generated from field: livekit.UserPacket user = 2;\n */\n value: UserPacket;\n case: \"user\";\n } | {\n /**\n * @generated from field: livekit.ActiveSpeakerUpdate speaker = 3 [deprecated = true];\n * @deprecated\n */\n value: ActiveSpeakerUpdate;\n case: \"speaker\";\n } | {\n /**\n * @generated from field: livekit.SipDTMF sip_dtmf = 6;\n */\n value: SipDTMF;\n case: \"sipDtmf\";\n } | {\n /**\n * @generated from field: livekit.Transcription transcription = 7;\n */\n value: Transcription;\n case: \"transcription\";\n } | {\n /**\n * @generated from field: livekit.MetricsBatch metrics = 8;\n */\n value: MetricsBatch;\n case: \"metrics\";\n } | {\n /**\n * @generated from field: livekit.ChatMessage chat_message = 9;\n */\n value: ChatMessage;\n case: \"chatMessage\";\n } | {\n /**\n * @generated from field: livekit.RpcRequest rpc_request = 10;\n */\n value: RpcRequest;\n case: \"rpcRequest\";\n } | {\n /**\n * @generated from field: livekit.RpcAck rpc_ack = 11;\n */\n value: RpcAck;\n case: \"rpcAck\";\n } | {\n /**\n * @generated from field: livekit.RpcResponse rpc_response = 12;\n */\n value: RpcResponse;\n case: \"rpcResponse\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Header stream_header = 13;\n */\n value: DataStream_Header;\n case: \"streamHeader\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Chunk stream_chunk = 14;\n */\n value: DataStream_Chunk;\n case: \"streamChunk\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Trailer stream_trailer = 15;\n */\n value: DataStream_Trailer;\n case: \"streamTrailer\";\n } | {\n /**\n * @generated from field: livekit.EncryptedPacket encrypted_packet = 18;\n */\n value: EncryptedPacket;\n case: \"encryptedPacket\";\n } | { case: undefined; value?: undefined };\n\n /**\n * sequence number of reliable packet\n *\n * @generated from field: uint32 sequence = 16;\n */\n sequence: number;\n\n /**\n * sid of the user that sent the message\n *\n * @generated from field: string participant_sid = 17;\n */\n participantSid: string;\n};\n\n/**\n * Describes the message livekit.DataPacket.\n * Use `create(DataPacketSchema)` to create a new message.\n */\nexport const DataPacketSchema: GenMessage<DataPacket> = /*@__PURE__*/\n messageDesc(file_livekit_models, 15);\n\n/**\n * @generated from enum livekit.DataPacket.Kind\n */\nexport enum DataPacket_Kind {\n /**\n * @generated from enum value: RELIABLE = 0;\n */\n RELIABLE = 0,\n\n /**\n * @generated from enum value: LOSSY = 1;\n */\n LOSSY = 1,\n}\n\n/**\n * Describes the enum livekit.DataPacket.Kind.\n */\nexport const DataPacket_KindSchema: GenEnum<DataPacket_Kind> = /*@__PURE__*/\n enumDesc(file_livekit_models, 15, 0);\n\n/**\n * @generated from message livekit.EncryptedPacket\n */\nexport type EncryptedPacket = Message<\"livekit.EncryptedPacket\"> & {\n /**\n * @generated from field: livekit.Encryption.Type encryption_type = 1;\n */\n encryptionType: Encryption_Type;\n\n /**\n * @generated from field: bytes iv = 2;\n */\n iv: Uint8Array;\n\n /**\n * @generated from field: uint32 key_index = 3;\n */\n keyIndex: number;\n\n /**\n * This is an encrypted EncryptedPacketPayload message representation\n *\n * @generated from field: bytes encrypted_value = 4;\n */\n encryptedValue: Uint8Array;\n};\n\n/**\n * Describes the message livekit.EncryptedPacket.\n * Use `create(EncryptedPacketSchema)` to create a new message.\n */\nexport const EncryptedPacketSchema: GenMessage<EncryptedPacket> = /*@__PURE__*/\n messageDesc(file_livekit_models, 16);\n\n/**\n * @generated from message livekit.EncryptedPacketPayload\n */\nexport type EncryptedPacketPayload = Message<\"livekit.EncryptedPacketPayload\"> & {\n /**\n * @generated from oneof livekit.EncryptedPacketPayload.value\n */\n value: {\n /**\n * @generated from field: livekit.UserPacket user = 1;\n */\n value: UserPacket;\n case: \"user\";\n } | {\n /**\n * @generated from field: livekit.ChatMessage chat_message = 3;\n */\n value: ChatMessage;\n case: \"chatMessage\";\n } | {\n /**\n * @generated from field: livekit.RpcRequest rpc_request = 4;\n */\n value: RpcRequest;\n case: \"rpcRequest\";\n } | {\n /**\n * @generated from field: livekit.RpcAck rpc_ack = 5;\n */\n value: RpcAck;\n case: \"rpcAck\";\n } | {\n /**\n * @generated from field: livekit.RpcResponse rpc_response = 6;\n */\n value: RpcResponse;\n case: \"rpcResponse\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Header stream_header = 7;\n */\n value: DataStream_Header;\n case: \"streamHeader\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Chunk stream_chunk = 8;\n */\n value: DataStream_Chunk;\n case: \"streamChunk\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Trailer stream_trailer = 9;\n */\n value: DataStream_Trailer;\n case: \"streamTrailer\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message livekit.EncryptedPacketPayload.\n * Use `create(EncryptedPacketPayloadSchema)` to create a new message.\n */\nexport const EncryptedPacketPayloadSchema: GenMessage<EncryptedPacketPayload> = /*@__PURE__*/\n messageDesc(file_livekit_models, 17);\n\n/**\n * @generated from message livekit.ActiveSpeakerUpdate\n * @deprecated\n */\nexport type ActiveSpeakerUpdate = Message<\"livekit.ActiveSpeakerUpdate\"> & {\n /**\n * @generated from field: repeated livekit.SpeakerInfo speakers = 1;\n */\n speakers: SpeakerInfo[];\n};\n\n/**\n * Describes the message livekit.ActiveSpeakerUpdate.\n * Use `create(ActiveSpeakerUpdateSchema)` to create a new message.\n * @deprecated\n */\nexport const ActiveSpeakerUpdateSchema: GenMessage<ActiveSpeakerUpdate> = /*@__PURE__*/\n messageDesc(file_livekit_models, 18);\n\n/**\n * @generated from message livekit.SpeakerInfo\n */\nexport type SpeakerInfo = Message<\"livekit.SpeakerInfo\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * audio level, 0-1.0, 1 is loudest\n *\n * @generated from field: float level = 2;\n */\n level: number;\n\n /**\n * true if speaker is currently active\n *\n * @generated from field: bool active = 3;\n */\n active: boolean;\n};\n\n/**\n * Describes the message livekit.SpeakerInfo.\n * Use `create(SpeakerInfoSchema)` to create a new message.\n */\nexport const SpeakerInfoSchema: GenMessage<SpeakerInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 19);\n\n/**\n * @generated from message livekit.UserPacket\n */\nexport type UserPacket = Message<\"livekit.UserPacket\"> & {\n /**\n * participant ID of user that sent the message\n *\n * @generated from field: string participant_sid = 1 [deprecated = true];\n * @deprecated\n */\n participantSid: string;\n\n /**\n * @generated from field: string participant_identity = 5 [deprecated = true];\n * @deprecated\n */\n participantIdentity: string;\n\n /**\n * user defined payload\n *\n * @generated from field: bytes payload = 2;\n */\n payload: Uint8Array;\n\n /**\n * the ID of the participants who will receive the message (sent to all by default)\n *\n * @generated from field: repeated string destination_sids = 3 [deprecated = true];\n * @deprecated\n */\n destinationSids: string[];\n\n /**\n * identities of participants who will receive the message (sent to all by default)\n *\n * @generated from field: repeated string destination_identities = 6 [deprecated = true];\n * @deprecated\n */\n destinationIdentities: string[];\n\n /**\n * topic under which the message was published\n *\n * @generated from field: optional string topic = 4;\n */\n topic?: string;\n\n /**\n * Unique ID to identify the message\n *\n * @generated from field: optional string id = 8;\n */\n id?: string;\n\n /**\n * start and end time allow relating the message to specific media time\n *\n * @generated from field: optional uint64 start_time = 9 [jstype = JS_STRING];\n */\n startTime?: string;\n\n /**\n * @generated from field: optional uint64 end_time = 10 [jstype = JS_STRING];\n */\n endTime?: string;\n\n /**\n * added by SDK to enable de-duping of messages, for INTERNAL USE ONLY\n *\n * @generated from field: bytes nonce = 11;\n */\n nonce: Uint8Array;\n};\n\n/**\n * Describes the message livekit.UserPacket.\n * Use `create(UserPacketSchema)` to create a new message.\n */\nexport const UserPacketSchema: GenMessage<UserPacket> = /*@__PURE__*/\n messageDesc(file_livekit_models, 20);\n\n/**\n * @generated from message livekit.SipDTMF\n */\nexport type SipDTMF = Message<\"livekit.SipDTMF\"> & {\n /**\n * @generated from field: uint32 code = 3;\n */\n code: number;\n\n /**\n * @generated from field: string digit = 4;\n */\n digit: string;\n};\n\n/**\n * Describes the message livekit.SipDTMF.\n * Use `create(SipDTMFSchema)` to create a new message.\n */\nexport const SipDTMFSchema: GenMessage<SipDTMF> = /*@__PURE__*/\n messageDesc(file_livekit_models, 21);\n\n/**\n * @generated from message livekit.Transcription\n */\nexport type Transcription = Message<\"livekit.Transcription\"> & {\n /**\n * Participant that got its speech transcribed\n *\n * @generated from field: string transcribed_participant_identity = 2;\n */\n transcribedParticipantIdentity: string;\n\n /**\n * @generated from field: string track_id = 3;\n */\n trackId: string;\n\n /**\n * @generated from field: repeated livekit.TranscriptionSegment segments = 4;\n */\n segments: TranscriptionSegment[];\n};\n\n/**\n * Describes the message livekit.Transcription.\n * Use `create(TranscriptionSchema)` to create a new message.\n */\nexport const TranscriptionSchema: GenMessage<Transcription> = /*@__PURE__*/\n messageDesc(file_livekit_models, 22);\n\n/**\n * @generated from message livekit.TranscriptionSegment\n */\nexport type TranscriptionSegment = Message<\"livekit.TranscriptionSegment\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: uint64 start_time = 3 [jstype = JS_STRING];\n */\n startTime: string;\n\n /**\n * @generated from field: uint64 end_time = 4 [jstype = JS_STRING];\n */\n endTime: string;\n\n /**\n * @generated from field: bool final = 5;\n */\n final: boolean;\n\n /**\n * @generated from field: string language = 6;\n */\n language: string;\n};\n\n/**\n * Describes the message livekit.TranscriptionSegment.\n * Use `create(TranscriptionSegmentSchema)` to create a new message.\n */\nexport const TranscriptionSegmentSchema: GenMessage<TranscriptionSegment> = /*@__PURE__*/\n messageDesc(file_livekit_models, 23);\n\n/**\n * @generated from message livekit.ChatMessage\n */\nexport type ChatMessage = Message<\"livekit.ChatMessage\"> & {\n /**\n * uuid\n *\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: int64 timestamp = 2 [jstype = JS_STRING];\n */\n timestamp: string;\n\n /**\n * populated only if the intent is to edit/update an existing message\n *\n * @generated from field: optional int64 edit_timestamp = 3 [jstype = JS_STRING];\n */\n editTimestamp?: string;\n\n /**\n * @generated from field: string message = 4;\n */\n message: string;\n\n /**\n * true to remove message\n *\n * @generated from field: bool deleted = 5;\n */\n deleted: boolean;\n\n /**\n * true if the chat message has been generated by an agent from a participant's audio transcription\n *\n * @generated from field: bool generated = 6;\n */\n generated: boolean;\n};\n\n/**\n * Describes the message livekit.ChatMessage.\n * Use `create(ChatMessageSchema)` to create a new message.\n */\nexport const ChatMessageSchema: GenMessage<ChatMessage> = /*@__PURE__*/\n messageDesc(file_livekit_models, 24);\n\n/**\n * @generated from message livekit.RpcRequest\n */\nexport type RpcRequest = Message<\"livekit.RpcRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string method = 2;\n */\n method: string;\n\n /**\n * @generated from field: string payload = 3;\n */\n payload: string;\n\n /**\n * @generated from field: uint32 response_timeout_ms = 4;\n */\n responseTimeoutMs: number;\n\n /**\n * @generated from field: uint32 version = 5;\n */\n version: number;\n};\n\n/**\n * Describes the message livekit.RpcRequest.\n * Use `create(RpcRequestSchema)` to create a new message.\n */\nexport const RpcRequestSchema: GenMessage<RpcRequest> = /*@__PURE__*/\n messageDesc(file_livekit_models, 25);\n\n/**\n * @generated from message livekit.RpcAck\n */\nexport type RpcAck = Message<\"livekit.RpcAck\"> & {\n /**\n * @generated from field: string request_id = 1;\n */\n requestId: string;\n};\n\n/**\n * Describes the message livekit.RpcAck.\n * Use `create(RpcAckSchema)` to create a new message.\n */\nexport const RpcAckSchema: GenMessage<RpcAck> = /*@__PURE__*/\n messageDesc(file_livekit_models, 26);\n\n/**\n * @generated from message livekit.RpcResponse\n */\nexport type RpcResponse = Message<\"livekit.RpcResponse\"> & {\n /**\n * @generated from field: string request_id = 1;\n */\n requestId: string;\n\n /**\n * @generated from oneof livekit.RpcResponse.value\n */\n value: {\n /**\n * @generated from field: string payload = 2;\n */\n value: string;\n case: \"payload\";\n } | {\n /**\n * @generated from field: livekit.RpcError error = 3;\n */\n value: RpcError;\n case: \"error\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message livekit.RpcResponse.\n * Use `create(RpcResponseSchema)` to create a new message.\n */\nexport const RpcResponseSchema: GenMessage<RpcResponse> = /*@__PURE__*/\n messageDesc(file_livekit_models, 27);\n\n/**\n * @generated from message livekit.RpcError\n */\nexport type RpcError = Message<\"livekit.RpcError\"> & {\n /**\n * @generated from field: uint32 code = 1;\n */\n code: number;\n\n /**\n * @generated from field: string message = 2;\n */\n message: string;\n\n /**\n * @generated from field: string data = 3;\n */\n data: string;\n};\n\n/**\n * Describes the message livekit.RpcError.\n * Use `create(RpcErrorSchema)` to create a new message.\n */\nexport const RpcErrorSchema: GenMessage<RpcError> = /*@__PURE__*/\n messageDesc(file_livekit_models, 28);\n\n/**\n * @generated from message livekit.ParticipantTracks\n */\nexport type ParticipantTracks = Message<\"livekit.ParticipantTracks\"> & {\n /**\n * participant ID of participant to whom the tracks belong\n *\n * @generated from field: string participant_sid = 1;\n */\n participantSid: string;\n\n /**\n * @generated from field: repeated string track_sids = 2;\n */\n trackSids: string[];\n};\n\n/**\n * Describes the message livekit.ParticipantTracks.\n * Use `create(ParticipantTracksSchema)` to create a new message.\n */\nexport const ParticipantTracksSchema: GenMessage<ParticipantTracks> = /*@__PURE__*/\n messageDesc(file_livekit_models, 29);\n\n/**\n * details about the server\n *\n * @generated from message livekit.ServerInfo\n */\nexport type ServerInfo = Message<\"livekit.ServerInfo\"> & {\n /**\n * @generated from field: livekit.ServerInfo.Edition edition = 1;\n */\n edition: ServerInfo_Edition;\n\n /**\n * @generated from field: string version = 2;\n */\n version: string;\n\n /**\n * @generated from field: int32 protocol = 3;\n */\n protocol: number;\n\n /**\n * @generated from field: string region = 4;\n */\n region: string;\n\n /**\n * @generated from field: string node_id = 5;\n */\n nodeId: string;\n\n /**\n * additional debugging information. sent only if server is in development mode\n *\n * @generated from field: string debug_info = 6;\n */\n debugInfo: string;\n\n /**\n * @generated from field: int32 agent_protocol = 7;\n */\n agentProtocol: number;\n};\n\n/**\n * Describes the message livekit.ServerInfo.\n * Use `create(ServerInfoSchema)` to create a new message.\n */\nexport const ServerInfoSchema: GenMessage<ServerInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 30);\n\n/**\n * @generated from enum livekit.ServerInfo.Edition\n */\nexport enum ServerInfo_Edition {\n /**\n * @generated from enum value: Standard = 0;\n */\n Standard = 0,\n\n /**\n * @generated from enum value: Cloud = 1;\n */\n Cloud = 1,\n}\n\n/**\n * Describes the enum livekit.ServerInfo.Edition.\n */\nexport const ServerInfo_EditionSchema: GenEnum<ServerInfo_Edition> = /*@__PURE__*/\n enumDesc(file_livekit_models, 30, 0);\n\n/**\n * details about the client\n *\n * @generated from message livekit.ClientInfo\n */\nexport type ClientInfo = Message<\"livekit.ClientInfo\"> & {\n /**\n * @generated from field: livekit.ClientInfo.SDK sdk = 1;\n */\n sdk: ClientInfo_SDK;\n\n /**\n * @generated from field: string version = 2;\n */\n version: string;\n\n /**\n * @generated from field: int32 protocol = 3;\n */\n protocol: number;\n\n /**\n * @generated from field: string os = 4;\n */\n os: string;\n\n /**\n * @generated from field: string os_version = 5;\n */\n osVersion: string;\n\n /**\n * @generated from field: string device_model = 6;\n */\n deviceModel: string;\n\n /**\n * @generated from field: string browser = 7;\n */\n browser: string;\n\n /**\n * @generated from field: string browser_version = 8;\n */\n browserVersion: string;\n\n /**\n * @generated from field: string address = 9;\n */\n address: string;\n\n /**\n * wifi, wired, cellular, vpn, empty if not known\n *\n * @generated from field: string network = 10;\n */\n network: string;\n\n /**\n * comma separated list of additional LiveKit SDKs in use of this client, with versions\n * e.g. \"components-js:1.2.3,track-processors-js:1.2.3\"\n *\n * @generated from field: string other_sdks = 11;\n */\n otherSdks: string;\n\n /**\n * client protocol version\n *\n * @generated from field: int32 client_protocol = 12;\n */\n clientProtocol: number;\n};\n\n/**\n * Describes the message livekit.ClientInfo.\n * Use `create(ClientInfoSchema)` to create a new message.\n */\nexport const ClientInfoSchema: GenMessage<ClientInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 31);\n\n/**\n * @generated from enum livekit.ClientInfo.SDK\n */\nexport enum ClientInfo_SDK {\n /**\n * @generated from enum value: UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: JS = 1;\n */\n JS = 1,\n\n /**\n * @generated from enum value: SWIFT = 2;\n */\n SWIFT = 2,\n\n /**\n * @generated from enum value: ANDROID = 3;\n */\n ANDROID = 3,\n\n /**\n * @generated from enum value: FLUTTER = 4;\n */\n FLUTTER = 4,\n\n /**\n * @generated from enum value: GO = 5;\n */\n GO = 5,\n\n /**\n * @generated from enum value: UNITY = 6;\n */\n UNITY = 6,\n\n /**\n * @generated from enum value: REACT_NATIVE = 7;\n */\n REACT_NATIVE = 7,\n\n /**\n * @generated from enum value: RUST = 8;\n */\n RUST = 8,\n\n /**\n * @generated from enum value: PYTHON = 9;\n */\n PYTHON = 9,\n\n /**\n * @generated from enum value: CPP = 10;\n */\n CPP = 10,\n\n /**\n * @generated from enum value: UNITY_WEB = 11;\n */\n UNITY_WEB = 11,\n\n /**\n * @generated from enum value: NODE = 12;\n */\n NODE = 12,\n\n /**\n * @generated from enum value: UNREAL = 13;\n */\n UNREAL = 13,\n\n /**\n * @generated from enum value: ESP32 = 14;\n */\n ESP32 = 14,\n}\n\n/**\n * Describes the enum livekit.ClientInfo.SDK.\n */\nexport const ClientInfo_SDKSchema: GenEnum<ClientInfo_SDK> = /*@__PURE__*/\n enumDesc(file_livekit_models, 31, 0);\n\n/**\n * server provided client configuration\n *\n * @generated from message livekit.ClientConfiguration\n */\nexport type ClientConfiguration = Message<\"livekit.ClientConfiguration\"> & {\n /**\n * @generated from field: livekit.VideoConfiguration video = 1;\n */\n video?: VideoConfiguration;\n\n /**\n * @generated from field: livekit.VideoConfiguration screen = 2;\n */\n screen?: VideoConfiguration;\n\n /**\n * @generated from field: livekit.ClientConfigSetting resume_connection = 3;\n */\n resumeConnection: ClientConfigSetting;\n\n /**\n * @generated from field: livekit.DisabledCodecs disabled_codecs = 4;\n */\n disabledCodecs?: DisabledCodecs;\n\n /**\n * @generated from field: livekit.ClientConfigSetting force_relay = 5;\n */\n forceRelay: ClientConfigSetting;\n};\n\n/**\n * Describes the message livekit.ClientConfiguration.\n * Use `create(ClientConfigurationSchema)` to create a new message.\n */\nexport const ClientConfigurationSchema: GenMessage<ClientConfiguration> = /*@__PURE__*/\n messageDesc(file_livekit_models, 32);\n\n/**\n * @generated from message livekit.VideoConfiguration\n */\nexport type VideoConfiguration = Message<\"livekit.VideoConfiguration\"> & {\n /**\n * @generated from field: livekit.ClientConfigSetting hardware_encoder = 1;\n */\n hardwareEncoder: ClientConfigSetting;\n};\n\n/**\n * Describes the message livekit.VideoConfiguration.\n * Use `create(VideoConfigurationSchema)` to create a new message.\n */\nexport const VideoConfigurationSchema: GenMessage<VideoConfiguration> = /*@__PURE__*/\n messageDesc(file_livekit_models, 33);\n\n/**\n * @generated from message livekit.DisabledCodecs\n */\nexport type DisabledCodecs = Message<\"livekit.DisabledCodecs\"> & {\n /**\n * disabled for both publish and subscribe\n *\n * @generated from field: repeated livekit.Codec codecs = 1;\n */\n codecs: Codec[];\n\n /**\n * only disable for publish\n *\n * @generated from field: repeated livekit.Codec publish = 2;\n */\n publish: Codec[];\n};\n\n/**\n * Describes the message livekit.DisabledCodecs.\n * Use `create(DisabledCodecsSchema)` to create a new message.\n */\nexport const DisabledCodecsSchema: GenMessage<DisabledCodecs> = /*@__PURE__*/\n messageDesc(file_livekit_models, 34);\n\n/**\n * @generated from message livekit.RTPDrift\n */\nexport type RTPDrift = Message<\"livekit.RTPDrift\"> & {\n /**\n * @generated from field: google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp;\n\n /**\n * @generated from field: double duration = 3;\n */\n duration: number;\n\n /**\n * @generated from field: uint64 start_timestamp = 4 [jstype = JS_STRING];\n */\n startTimestamp: string;\n\n /**\n * @generated from field: uint64 end_timestamp = 5 [jstype = JS_STRING];\n */\n endTimestamp: string;\n\n /**\n * @generated from field: uint64 rtp_clock_ticks = 6 [jstype = JS_STRING];\n */\n rtpClockTicks: string;\n\n /**\n * @generated from field: int64 drift_samples = 7 [jstype = JS_STRING];\n */\n driftSamples: string;\n\n /**\n * @generated from field: double drift_ms = 8;\n */\n driftMs: number;\n\n /**\n * @generated from field: double clock_rate = 9;\n */\n clockRate: number;\n};\n\n/**\n * Describes the message livekit.RTPDrift.\n * Use `create(RTPDriftSchema)` to create a new message.\n */\nexport const RTPDriftSchema: GenMessage<RTPDrift> = /*@__PURE__*/\n messageDesc(file_livekit_models, 35);\n\n/**\n * @generated from message livekit.RTPStats\n */\nexport type RTPStats = Message<\"livekit.RTPStats\"> & {\n /**\n * @generated from field: google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp;\n\n /**\n * @generated from field: double duration = 3;\n */\n duration: number;\n\n /**\n * @generated from field: uint32 packets = 4;\n */\n packets: number;\n\n /**\n * @generated from field: double packet_rate = 5;\n */\n packetRate: number;\n\n /**\n * @generated from field: uint64 bytes = 6 [jstype = JS_STRING];\n */\n bytes: string;\n\n /**\n * @generated from field: uint64 header_bytes = 39 [jstype = JS_STRING];\n */\n headerBytes: string;\n\n /**\n * @generated from field: double bitrate = 7;\n */\n bitrate: number;\n\n /**\n * @generated from field: uint32 packets_lost = 8;\n */\n packetsLost: number;\n\n /**\n * @generated from field: double packet_loss_rate = 9;\n */\n packetLossRate: number;\n\n /**\n * @generated from field: float packet_loss_percentage = 10;\n */\n packetLossPercentage: number;\n\n /**\n * @generated from field: uint32 packets_duplicate = 11;\n */\n packetsDuplicate: number;\n\n /**\n * @generated from field: double packet_duplicate_rate = 12;\n */\n packetDuplicateRate: number;\n\n /**\n * @generated from field: uint64 bytes_duplicate = 13 [jstype = JS_STRING];\n */\n bytesDuplicate: string;\n\n /**\n * @generated from field: uint64 header_bytes_duplicate = 40 [jstype = JS_STRING];\n */\n headerBytesDuplicate: string;\n\n /**\n * @generated from field: double bitrate_duplicate = 14;\n */\n bitrateDuplicate: number;\n\n /**\n * @generated from field: uint32 packets_padding = 15;\n */\n packetsPadding: number;\n\n /**\n * @generated from field: double packet_padding_rate = 16;\n */\n packetPaddingRate: number;\n\n /**\n * @generated from field: uint64 bytes_padding = 17 [jstype = JS_STRING];\n */\n bytesPadding: string;\n\n /**\n * @generated from field: uint64 header_bytes_padding = 41 [jstype = JS_STRING];\n */\n headerBytesPadding: string;\n\n /**\n * @generated from field: double bitrate_padding = 18;\n */\n bitratePadding: number;\n\n /**\n * @generated from field: uint32 packets_out_of_order = 19;\n */\n packetsOutOfOrder: number;\n\n /**\n * @generated from field: uint32 frames = 20;\n */\n frames: number;\n\n /**\n * @generated from field: double frame_rate = 21;\n */\n frameRate: number;\n\n /**\n * @generated from field: double jitter_current = 22;\n */\n jitterCurrent: number;\n\n /**\n * @generated from field: double jitter_max = 23;\n */\n jitterMax: number;\n\n /**\n * @generated from field: map<int32, uint32> gap_histogram = 24;\n */\n gapHistogram: { [key: number]: number };\n\n /**\n * @generated from field: uint32 nacks = 25;\n */\n nacks: number;\n\n /**\n * @generated from field: uint32 nack_acks = 37;\n */\n nackAcks: number;\n\n /**\n * @generated from field: uint32 nack_misses = 26;\n */\n nackMisses: number;\n\n /**\n * @generated from field: uint32 nack_repeated = 38;\n */\n nackRepeated: number;\n\n /**\n * @generated from field: uint32 plis = 27;\n */\n plis: number;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_pli = 28;\n */\n lastPli?: Timestamp;\n\n /**\n * @generated from field: uint32 firs = 29;\n */\n firs: number;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_fir = 30;\n */\n lastFir?: Timestamp;\n\n /**\n * @generated from field: uint32 rtt_current = 31;\n */\n rttCurrent: number;\n\n /**\n * @generated from field: uint32 rtt_max = 32;\n */\n rttMax: number;\n\n /**\n * @generated from field: uint32 key_frames = 33;\n */\n keyFrames: number;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_key_frame = 34;\n */\n lastKeyFrame?: Timestamp;\n\n /**\n * @generated from field: uint32 layer_lock_plis = 35;\n */\n layerLockPlis: number;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_layer_lock_pli = 36;\n */\n lastLayerLockPli?: Timestamp;\n\n /**\n * @generated from field: livekit.RTPDrift packet_drift = 44;\n */\n packetDrift?: RTPDrift;\n\n /**\n * @generated from field: livekit.RTPDrift ntp_report_drift = 45;\n */\n ntpReportDrift?: RTPDrift;\n\n /**\n * @generated from field: livekit.RTPDrift rebased_report_drift = 46;\n */\n rebasedReportDrift?: RTPDrift;\n\n /**\n * NEXT_ID: 48\n *\n * @generated from field: livekit.RTPDrift received_report_drift = 47;\n */\n receivedReportDrift?: RTPDrift;\n};\n\n/**\n * Describes the message livekit.RTPStats.\n * Use `create(RTPStatsSchema)` to create a new message.\n */\nexport const RTPStatsSchema: GenMessage<RTPStats> = /*@__PURE__*/\n messageDesc(file_livekit_models, 36);\n\n/**\n * @generated from message livekit.RTCPSenderReportState\n */\nexport type RTCPSenderReportState = Message<\"livekit.RTCPSenderReportState\"> & {\n /**\n * @generated from field: uint32 rtp_timestamp = 1;\n */\n rtpTimestamp: number;\n\n /**\n * @generated from field: uint64 rtp_timestamp_ext = 2 [jstype = JS_STRING];\n */\n rtpTimestampExt: string;\n\n /**\n * @generated from field: uint64 ntp_timestamp = 3 [jstype = JS_STRING];\n */\n ntpTimestamp: string;\n\n /**\n * time at which this happened\n *\n * @generated from field: int64 at = 4 [jstype = JS_STRING];\n */\n at: string;\n\n /**\n * @generated from field: int64 at_adjusted = 5 [jstype = JS_STRING];\n */\n atAdjusted: string;\n\n /**\n * @generated from field: uint32 packets = 6;\n */\n packets: number;\n\n /**\n * @generated from field: uint64 octets = 7 [jstype = JS_STRING];\n */\n octets: string;\n};\n\n/**\n * Describes the message livekit.RTCPSenderReportState.\n * Use `create(RTCPSenderReportStateSchema)` to create a new message.\n */\nexport const RTCPSenderReportStateSchema: GenMessage<RTCPSenderReportState> = /*@__PURE__*/\n messageDesc(file_livekit_models, 37);\n\n/**\n * @generated from message livekit.RTPForwarderState\n */\nexport type RTPForwarderState = Message<\"livekit.RTPForwarderState\"> & {\n /**\n * @generated from field: bool started = 1;\n */\n started: boolean;\n\n /**\n * @generated from field: int32 reference_layer_spatial = 2;\n */\n referenceLayerSpatial: number;\n\n /**\n * @generated from field: int64 pre_start_time = 3 [jstype = JS_STRING];\n */\n preStartTime: string;\n\n /**\n * @generated from field: uint64 ext_first_timestamp = 4 [jstype = JS_STRING];\n */\n extFirstTimestamp: string;\n\n /**\n * @generated from field: uint64 dummy_start_timestamp_offset = 5 [jstype = JS_STRING];\n */\n dummyStartTimestampOffset: string;\n\n /**\n * @generated from field: livekit.RTPMungerState rtp_munger = 6;\n */\n rtpMunger?: RTPMungerState;\n\n /**\n * @generated from oneof livekit.RTPForwarderState.codec_munger\n */\n codecMunger: {\n /**\n * @generated from field: livekit.VP8MungerState vp8_munger = 7;\n */\n value: VP8MungerState;\n case: \"vp8Munger\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: repeated livekit.RTCPSenderReportState sender_report_state = 8;\n */\n senderReportState: RTCPSenderReportState[];\n};\n\n/**\n * Describes the message livekit.RTPForwarderState.\n * Use `create(RTPForwarderStateSchema)` to create a new message.\n */\nexport const RTPForwarderStateSchema: GenMessage<RTPForwarderState> = /*@__PURE__*/\n messageDesc(file_livekit_models, 38);\n\n/**\n * @generated from message livekit.RTPMungerState\n */\nexport type RTPMungerState = Message<\"livekit.RTPMungerState\"> & {\n /**\n * @generated from field: uint64 ext_last_sequence_number = 1 [jstype = JS_STRING];\n */\n extLastSequenceNumber: string;\n\n /**\n * @generated from field: uint64 ext_second_last_sequence_number = 2 [jstype = JS_STRING];\n */\n extSecondLastSequenceNumber: string;\n\n /**\n * @generated from field: uint64 ext_last_timestamp = 3 [jstype = JS_STRING];\n */\n extLastTimestamp: string;\n\n /**\n * @generated from field: uint64 ext_second_last_timestamp = 4 [jstype = JS_STRING];\n */\n extSecondLastTimestamp: string;\n\n /**\n * @generated from field: bool last_marker = 5;\n */\n lastMarker: boolean;\n\n /**\n * @generated from field: bool second_last_marker = 6;\n */\n secondLastMarker: boolean;\n};\n\n/**\n * Describes the message livekit.RTPMungerState.\n * Use `create(RTPMungerStateSchema)` to create a new message.\n */\nexport const RTPMungerStateSchema: GenMessage<RTPMungerState> = /*@__PURE__*/\n messageDesc(file_livekit_models, 39);\n\n/**\n * @generated from message livekit.VP8MungerState\n */\nexport type VP8MungerState = Message<\"livekit.VP8MungerState\"> & {\n /**\n * @generated from field: int32 ext_last_picture_id = 1;\n */\n extLastPictureId: number;\n\n /**\n * @generated from field: bool picture_id_used = 2;\n */\n pictureIdUsed: boolean;\n\n /**\n * @generated from field: uint32 last_tl0_pic_idx = 3;\n */\n lastTl0PicIdx: number;\n\n /**\n * @generated from field: bool tl0_pic_idx_used = 4;\n */\n tl0PicIdxUsed: boolean;\n\n /**\n * @generated from field: bool tid_used = 5;\n */\n tidUsed: boolean;\n\n /**\n * @generated from field: uint32 last_key_idx = 6;\n */\n lastKeyIdx: number;\n\n /**\n * @generated from field: bool key_idx_used = 7;\n */\n keyIdxUsed: boolean;\n};\n\n/**\n * Describes the message livekit.VP8MungerState.\n * Use `create(VP8MungerStateSchema)` to create a new message.\n */\nexport const VP8MungerStateSchema: GenMessage<VP8MungerState> = /*@__PURE__*/\n messageDesc(file_livekit_models, 40);\n\n/**\n * @generated from message livekit.TimedVersion\n */\nexport type TimedVersion = Message<\"livekit.TimedVersion\"> & {\n /**\n * @generated from field: int64 unix_micro = 1 [jstype = JS_STRING];\n */\n unixMicro: string;\n\n /**\n * @generated from field: int32 ticks = 2;\n */\n ticks: number;\n};\n\n/**\n * Describes the message livekit.TimedVersion.\n * Use `create(TimedVersionSchema)` to create a new message.\n */\nexport const TimedVersionSchema: GenMessage<TimedVersion> = /*@__PURE__*/\n messageDesc(file_livekit_models, 41);\n\n/**\n * @generated from message livekit.DataStream\n */\nexport type DataStream = Message<\"livekit.DataStream\"> & {\n};\n\n/**\n * Describes the message livekit.DataStream.\n * Use `create(DataStreamSchema)` to create a new message.\n */\nexport const DataStreamSchema: GenMessage<DataStream> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42);\n\n/**\n * header properties specific to text streams\n *\n * @generated from message livekit.DataStream.TextHeader\n */\nexport type DataStream_TextHeader = Message<\"livekit.DataStream.TextHeader\"> & {\n /**\n * @generated from field: livekit.DataStream.OperationType operation_type = 1;\n */\n operationType: DataStream_OperationType;\n\n /**\n * Optional: Version for updates/edits\n *\n * @generated from field: int32 version = 2;\n */\n version: number;\n\n /**\n * Optional: Reply to specific message\n *\n * @generated from field: string reply_to_stream_id = 3;\n */\n replyToStreamId: string;\n\n /**\n * file attachments for text streams\n *\n * @generated from field: repeated string attached_stream_ids = 4;\n */\n attachedStreamIds: string[];\n\n /**\n * true if the text has been generated by an agent from a participant's audio transcription\n *\n * @generated from field: bool generated = 5;\n */\n generated: boolean;\n};\n\n/**\n * Describes the message livekit.DataStream.TextHeader.\n * Use `create(DataStream_TextHeaderSchema)` to create a new message.\n */\nexport const DataStream_TextHeaderSchema: GenMessage<DataStream_TextHeader> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 0);\n\n/**\n * header properties specific to byte or file streams\n *\n * @generated from message livekit.DataStream.ByteHeader\n */\nexport type DataStream_ByteHeader = Message<\"livekit.DataStream.ByteHeader\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message livekit.DataStream.ByteHeader.\n * Use `create(DataStream_ByteHeaderSchema)` to create a new message.\n */\nexport const DataStream_ByteHeaderSchema: GenMessage<DataStream_ByteHeader> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 1);\n\n/**\n * main DataStream.Header that contains a oneof for specific headers\n *\n * @generated from message livekit.DataStream.Header\n */\nexport type DataStream_Header = Message<\"livekit.DataStream.Header\"> & {\n /**\n * unique identifier for this data stream\n *\n * @generated from field: string stream_id = 1;\n */\n streamId: string;\n\n /**\n * using int64 for Unix timestamp\n *\n * @generated from field: int64 timestamp = 2 [jstype = JS_STRING];\n */\n timestamp: string;\n\n /**\n * @generated from field: string topic = 3;\n */\n topic: string;\n\n /**\n * @generated from field: string mime_type = 4;\n */\n mimeType: string;\n\n /**\n * only populated for finite streams, if it's a stream of unknown size this stays empty\n *\n * @generated from field: optional uint64 total_length = 5 [jstype = JS_STRING];\n */\n totalLength?: string;\n\n /**\n * this is set on the DataPacket\n *\n * @generated from field: livekit.Encryption.Type encryption_type = 7 [deprecated = true];\n * @deprecated\n */\n encryptionType: Encryption_Type;\n\n /**\n * user defined attributes map that can carry additional info\n *\n * @generated from field: map<string, string> attributes = 8;\n */\n attributes: { [key: string]: string };\n\n /**\n * oneof to choose between specific header types\n *\n * @generated from oneof livekit.DataStream.Header.content_header\n */\n contentHeader: {\n /**\n * @generated from field: livekit.DataStream.TextHeader text_header = 9;\n */\n value: DataStream_TextHeader;\n case: \"textHeader\";\n } | {\n /**\n * @generated from field: livekit.DataStream.ByteHeader byte_header = 10;\n */\n value: DataStream_ByteHeader;\n case: \"byteHeader\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message livekit.DataStream.Header.\n * Use `create(DataStream_HeaderSchema)` to create a new message.\n */\nexport const DataStream_HeaderSchema: GenMessage<DataStream_Header> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 2);\n\n/**\n * @generated from message livekit.DataStream.Chunk\n */\nexport type DataStream_Chunk = Message<\"livekit.DataStream.Chunk\"> & {\n /**\n * unique identifier for this data stream to map it to the correct header\n *\n * @generated from field: string stream_id = 1;\n */\n streamId: string;\n\n /**\n * @generated from field: uint64 chunk_index = 2 [jstype = JS_STRING];\n */\n chunkIndex: string;\n\n /**\n * content as binary (bytes)\n *\n * @generated from field: bytes content = 3;\n */\n content: Uint8Array;\n\n /**\n * a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced\n *\n * @generated from field: int32 version = 4;\n */\n version: number;\n\n /**\n * this is set on the DataPacket\n *\n * @generated from field: optional bytes iv = 5 [deprecated = true];\n * @deprecated\n */\n iv?: Uint8Array;\n};\n\n/**\n * Describes the message livekit.DataStream.Chunk.\n * Use `create(DataStream_ChunkSchema)` to create a new message.\n */\nexport const DataStream_ChunkSchema: GenMessage<DataStream_Chunk> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 3);\n\n/**\n * @generated from message livekit.DataStream.Trailer\n */\nexport type DataStream_Trailer = Message<\"livekit.DataStream.Trailer\"> & {\n /**\n * unique identifier for this data stream\n *\n * @generated from field: string stream_id = 1;\n */\n streamId: string;\n\n /**\n * reason why the stream was closed (could contain \"error\" / \"interrupted\" / empty for expected end)\n *\n * @generated from field: string reason = 2;\n */\n reason: string;\n\n /**\n * finalizing updates for the stream, can also include additional insights for errors or endTime for transcription\n *\n * @generated from field: map<string, string> attributes = 3;\n */\n attributes: { [key: string]: string };\n};\n\n/**\n * Describes the message livekit.DataStream.Trailer.\n * Use `create(DataStream_TrailerSchema)` to create a new message.\n */\nexport const DataStream_TrailerSchema: GenMessage<DataStream_Trailer> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 4);\n\n/**\n * enum for operation types (specific to TextHeader)\n *\n * @generated from enum livekit.DataStream.OperationType\n */\nexport enum DataStream_OperationType {\n /**\n * @generated from enum value: CREATE = 0;\n */\n CREATE = 0,\n\n /**\n * @generated from enum value: UPDATE = 1;\n */\n UPDATE = 1,\n\n /**\n * @generated from enum value: DELETE = 2;\n */\n DELETE = 2,\n\n /**\n * @generated from enum value: REACTION = 3;\n */\n REACTION = 3,\n}\n\n/**\n * Describes the enum livekit.DataStream.OperationType.\n */\nexport const DataStream_OperationTypeSchema: GenEnum<DataStream_OperationType> = /*@__PURE__*/\n enumDesc(file_livekit_models, 42, 0);\n\n/**\n * @generated from message livekit.FilterParams\n */\nexport type FilterParams = Message<\"livekit.FilterParams\"> & {\n /**\n * @generated from field: repeated string include_events = 1;\n */\n includeEvents: string[];\n\n /**\n * @generated from field: repeated string exclude_events = 2;\n */\n excludeEvents: string[];\n};\n\n/**\n * Describes the message livekit.FilterParams.\n * Use `create(FilterParamsSchema)` to create a new message.\n */\nexport const FilterParamsSchema: GenMessage<FilterParams> = /*@__PURE__*/\n messageDesc(file_livekit_models, 43);\n\n/**\n * @generated from message livekit.WebhookConfig\n */\nexport type WebhookConfig = Message<\"livekit.WebhookConfig\"> & {\n /**\n * @generated from field: string url = 1;\n */\n url: string;\n\n /**\n * @generated from field: string signing_key = 2;\n */\n signingKey: string;\n\n /**\n * @generated from field: livekit.FilterParams filter_params = 3;\n */\n filterParams?: FilterParams;\n};\n\n/**\n * Describes the message livekit.WebhookConfig.\n * Use `create(WebhookConfigSchema)` to create a new message.\n */\nexport const WebhookConfigSchema: GenMessage<WebhookConfig> = /*@__PURE__*/\n messageDesc(file_livekit_models, 44);\n\n/**\n * @generated from message livekit.SubscribedAudioCodec\n */\nexport type SubscribedAudioCodec = Message<\"livekit.SubscribedAudioCodec\"> & {\n /**\n * @generated from field: string codec = 1;\n */\n codec: string;\n\n /**\n * @generated from field: bool enabled = 2;\n */\n enabled: boolean;\n};\n\n/**\n * Describes the message livekit.SubscribedAudioCodec.\n * Use `create(SubscribedAudioCodecSchema)` to create a new message.\n */\nexport const SubscribedAudioCodecSchema: GenMessage<SubscribedAudioCodec> = /*@__PURE__*/\n messageDesc(file_livekit_models, 45);\n\n/**\n * @generated from enum livekit.AudioCodec\n */\nexport enum AudioCodec {\n /**\n * @generated from enum value: DEFAULT_AC = 0;\n */\n DEFAULT_AC = 0,\n\n /**\n * @generated from enum value: OPUS = 1;\n */\n OPUS = 1,\n\n /**\n * @generated from enum value: AAC = 2;\n */\n AAC = 2,\n\n /**\n * @generated from enum value: AC_MP3 = 3;\n */\n AC_MP3 = 3,\n}\n\n/**\n * Describes the enum livekit.AudioCodec.\n */\nexport const AudioCodecSchema: GenEnum<AudioCodec> = /*@__PURE__*/\n enumDesc(file_livekit_models, 0);\n\n/**\n * @generated from enum livekit.VideoCodec\n */\nexport enum VideoCodec {\n /**\n * @generated from enum value: DEFAULT_VC = 0;\n */\n DEFAULT_VC = 0,\n\n /**\n * @generated from enum value: H264_BASELINE = 1;\n */\n H264_BASELINE = 1,\n\n /**\n * @generated from enum value: H264_MAIN = 2;\n */\n H264_MAIN = 2,\n\n /**\n * @generated from enum value: H264_HIGH = 3;\n */\n H264_HIGH = 3,\n\n /**\n * @generated from enum value: VP8 = 4;\n */\n VP8 = 4,\n}\n\n/**\n * Describes the enum livekit.VideoCodec.\n */\nexport const VideoCodecSchema: GenEnum<VideoCodec> = /*@__PURE__*/\n enumDesc(file_livekit_models, 1);\n\n/**\n * @generated from enum livekit.ImageCodec\n */\nexport enum ImageCodec {\n /**\n * @generated from enum value: IC_DEFAULT = 0;\n */\n IC_DEFAULT = 0,\n\n /**\n * @generated from enum value: IC_JPEG = 1;\n */\n IC_JPEG = 1,\n}\n\n/**\n * Describes the enum livekit.ImageCodec.\n */\nexport const ImageCodecSchema: GenEnum<ImageCodec> = /*@__PURE__*/\n enumDesc(file_livekit_models, 2);\n\n/**\n * Policy for publisher to handle subscribers that are unable to support the primary codec of a track\n *\n * @generated from enum livekit.BackupCodecPolicy\n */\nexport enum BackupCodecPolicy {\n /**\n * default behavior, the track prefer to regress to backup codec and all subscribers will receive the backup codec,\n * the sfu will try to regress codec if possible but not assured.\n *\n * @generated from enum value: PREFER_REGRESSION = 0;\n */\n PREFER_REGRESSION = 0,\n\n /**\n * encoding/send the primary and backup codec simultaneously\n *\n * @generated from enum value: SIMULCAST = 1;\n */\n SIMULCAST = 1,\n\n /**\n * force the track to regress to backup codec, this option can be used in video conference or the publisher has limited bandwidth/encoding power\n *\n * @generated from enum value: REGRESSION = 2;\n */\n REGRESSION = 2,\n}\n\n/**\n * Describes the enum livekit.BackupCodecPolicy.\n */\nexport const BackupCodecPolicySchema: GenEnum<BackupCodecPolicy> = /*@__PURE__*/\n enumDesc(file_livekit_models, 3);\n\n/**\n * @generated from enum livekit.TrackType\n */\nexport enum TrackType {\n /**\n * @generated from enum value: AUDIO = 0;\n */\n AUDIO = 0,\n\n /**\n * @generated from enum value: VIDEO = 1;\n */\n VIDEO = 1,\n\n /**\n * @generated from enum value: DATA = 2;\n */\n DATA = 2,\n}\n\n/**\n * Describes the enum livekit.TrackType.\n */\nexport const TrackTypeSchema: GenEnum<TrackType> = /*@__PURE__*/\n enumDesc(file_livekit_models, 4);\n\n/**\n * @generated from enum livekit.TrackSource\n */\nexport enum TrackSource {\n /**\n * @generated from enum value: UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: CAMERA = 1;\n */\n CAMERA = 1,\n\n /**\n * @generated from enum value: MICROPHONE = 2;\n */\n MICROPHONE = 2,\n\n /**\n * @generated from enum value: SCREEN_SHARE = 3;\n */\n SCREEN_SHARE = 3,\n\n /**\n * @generated from enum value: SCREEN_SHARE_AUDIO = 4;\n */\n SCREEN_SHARE_AUDIO = 4,\n}\n\n/**\n * Describes the enum livekit.TrackSource.\n */\nexport const TrackSourceSchema: GenEnum<TrackSource> = /*@__PURE__*/\n enumDesc(file_livekit_models, 5);\n\n/**\n * @generated from enum livekit.DataTrackExtensionID\n */\nexport enum DataTrackExtensionID {\n /**\n * @generated from enum value: DTEI_INVALID = 0;\n */\n DTEI_INVALID = 0,\n\n /**\n * @generated from enum value: DTEI_PARTICIPANT_SID = 1;\n */\n DTEI_PARTICIPANT_SID = 1,\n}\n\n/**\n * Describes the enum livekit.DataTrackExtensionID.\n */\nexport const DataTrackExtensionIDSchema: GenEnum<DataTrackExtensionID> = /*@__PURE__*/\n enumDesc(file_livekit_models, 6);\n\n/**\n * @generated from enum livekit.VideoQuality\n */\nexport enum VideoQuality {\n /**\n * @generated from enum value: LOW = 0;\n */\n LOW = 0,\n\n /**\n * @generated from enum value: MEDIUM = 1;\n */\n MEDIUM = 1,\n\n /**\n * @generated from enum value: HIGH = 2;\n */\n HIGH = 2,\n\n /**\n * @generated from enum value: OFF = 3;\n */\n OFF = 3,\n}\n\n/**\n * Describes the enum livekit.VideoQuality.\n */\nexport const VideoQualitySchema: GenEnum<VideoQuality> = /*@__PURE__*/\n enumDesc(file_livekit_models, 7);\n\n/**\n * @generated from enum livekit.ConnectionQuality\n */\nexport enum ConnectionQuality {\n /**\n * @generated from enum value: POOR = 0;\n */\n POOR = 0,\n\n /**\n * @generated from enum value: GOOD = 1;\n */\n GOOD = 1,\n\n /**\n * @generated from enum value: EXCELLENT = 2;\n */\n EXCELLENT = 2,\n\n /**\n * @generated from enum value: LOST = 3;\n */\n LOST = 3,\n}\n\n/**\n * Describes the enum livekit.ConnectionQuality.\n */\nexport const ConnectionQualitySchema: GenEnum<ConnectionQuality> = /*@__PURE__*/\n enumDesc(file_livekit_models, 8);\n\n/**\n * @generated from enum livekit.ClientConfigSetting\n */\nexport enum ClientConfigSetting {\n /**\n * @generated from enum value: UNSET = 0;\n */\n UNSET = 0,\n\n /**\n * @generated from enum value: DISABLED = 1;\n */\n DISABLED = 1,\n\n /**\n * @generated from enum value: ENABLED = 2;\n */\n ENABLED = 2,\n}\n\n/**\n * Describes the enum livekit.ClientConfigSetting.\n */\nexport const ClientConfigSettingSchema: GenEnum<ClientConfigSetting> = /*@__PURE__*/\n enumDesc(file_livekit_models, 9);\n\n/**\n * @generated from enum livekit.DisconnectReason\n */\nexport enum DisconnectReason {\n /**\n * @generated from enum value: UNKNOWN_REASON = 0;\n */\n UNKNOWN_REASON = 0,\n\n /**\n * the client initiated the disconnect\n *\n * @generated from enum value: CLIENT_INITIATED = 1;\n */\n CLIENT_INITIATED = 1,\n\n /**\n * another participant with the same identity has joined the room\n *\n * @generated from enum value: DUPLICATE_IDENTITY = 2;\n */\n DUPLICATE_IDENTITY = 2,\n\n /**\n * the server instance is shutting down\n *\n * @generated from enum value: SERVER_SHUTDOWN = 3;\n */\n SERVER_SHUTDOWN = 3,\n\n /**\n * RoomService.RemoveParticipant was called\n *\n * @generated from enum value: PARTICIPANT_REMOVED = 4;\n */\n PARTICIPANT_REMOVED = 4,\n\n /**\n * RoomService.DeleteRoom was called\n *\n * @generated from enum value: ROOM_DELETED = 5;\n */\n ROOM_DELETED = 5,\n\n /**\n * the client is attempting to resume a session, but server is not aware of it\n *\n * @generated from enum value: STATE_MISMATCH = 6;\n */\n STATE_MISMATCH = 6,\n\n /**\n * client was unable to connect fully\n *\n * @generated from enum value: JOIN_FAILURE = 7;\n */\n JOIN_FAILURE = 7,\n\n /**\n * Cloud-only, the server requested Participant to migrate the connection elsewhere\n *\n * @generated from enum value: MIGRATION = 8;\n */\n MIGRATION = 8,\n\n /**\n * the signal websocket was closed unexpectedly\n *\n * @generated from enum value: SIGNAL_CLOSE = 9;\n */\n SIGNAL_CLOSE = 9,\n\n /**\n * the room was closed, due to all Standard and Ingress participants having left\n *\n * @generated from enum value: ROOM_CLOSED = 10;\n */\n ROOM_CLOSED = 10,\n\n /**\n * SIP callee did not respond in time\n *\n * @generated from enum value: USER_UNAVAILABLE = 11;\n */\n USER_UNAVAILABLE = 11,\n\n /**\n * SIP callee rejected the call (busy)\n *\n * @generated from enum value: USER_REJECTED = 12;\n */\n USER_REJECTED = 12,\n\n /**\n * SIP protocol failure or unexpected response\n *\n * @generated from enum value: SIP_TRUNK_FAILURE = 13;\n */\n SIP_TRUNK_FAILURE = 13,\n\n /**\n * server timed out a participant session\n *\n * @generated from enum value: CONNECTION_TIMEOUT = 14;\n */\n CONNECTION_TIMEOUT = 14,\n\n /**\n * media stream failure or media timeout\n *\n * @generated from enum value: MEDIA_FAILURE = 15;\n */\n MEDIA_FAILURE = 15,\n}\n\n/**\n * Describes the enum livekit.DisconnectReason.\n */\nexport const DisconnectReasonSchema: GenEnum<DisconnectReason> = /*@__PURE__*/\n enumDesc(file_livekit_models, 10);\n\n/**\n * @generated from enum livekit.ReconnectReason\n */\nexport enum ReconnectReason {\n /**\n * @generated from enum value: RR_UNKNOWN = 0;\n */\n RR_UNKNOWN = 0,\n\n /**\n * @generated from enum value: RR_SIGNAL_DISCONNECTED = 1;\n */\n RR_SIGNAL_DISCONNECTED = 1,\n\n /**\n * @generated from enum value: RR_PUBLISHER_FAILED = 2;\n */\n RR_PUBLISHER_FAILED = 2,\n\n /**\n * @generated from enum value: RR_SUBSCRIBER_FAILED = 3;\n */\n RR_SUBSCRIBER_FAILED = 3,\n\n /**\n * @generated from enum value: RR_SWITCH_CANDIDATE = 4;\n */\n RR_SWITCH_CANDIDATE = 4,\n}\n\n/**\n * Describes the enum livekit.ReconnectReason.\n */\nexport const ReconnectReasonSchema: GenEnum<ReconnectReason> = /*@__PURE__*/\n enumDesc(file_livekit_models, 11);\n\n/**\n * @generated from enum livekit.SubscriptionError\n */\nexport enum SubscriptionError {\n /**\n * @generated from enum value: SE_UNKNOWN = 0;\n */\n SE_UNKNOWN = 0,\n\n /**\n * @generated from enum value: SE_CODEC_UNSUPPORTED = 1;\n */\n SE_CODEC_UNSUPPORTED = 1,\n\n /**\n * @generated from enum value: SE_TRACK_NOTFOUND = 2;\n */\n SE_TRACK_NOTFOUND = 2,\n}\n\n/**\n * Describes the enum livekit.SubscriptionError.\n */\nexport const SubscriptionErrorSchema: GenEnum<SubscriptionError> = /*@__PURE__*/\n enumDesc(file_livekit_models, 12);\n\n/**\n * @generated from enum livekit.AudioTrackFeature\n */\nexport enum AudioTrackFeature {\n /**\n * @generated from enum value: TF_STEREO = 0;\n */\n TF_STEREO = 0,\n\n /**\n * @generated from enum value: TF_NO_DTX = 1;\n */\n TF_NO_DTX = 1,\n\n /**\n * @generated from enum value: TF_AUTO_GAIN_CONTROL = 2;\n */\n TF_AUTO_GAIN_CONTROL = 2,\n\n /**\n * @generated from enum value: TF_ECHO_CANCELLATION = 3;\n */\n TF_ECHO_CANCELLATION = 3,\n\n /**\n * @generated from enum value: TF_NOISE_SUPPRESSION = 4;\n */\n TF_NOISE_SUPPRESSION = 4,\n\n /**\n * @generated from enum value: TF_ENHANCED_NOISE_CANCELLATION = 5;\n */\n TF_ENHANCED_NOISE_CANCELLATION = 5,\n\n /**\n * client will buffer audio once available and send it to the server via bytes stream once connected\n *\n * @generated from enum value: TF_PRECONNECT_BUFFER = 6;\n */\n TF_PRECONNECT_BUFFER = 6,\n}\n\n/**\n * Describes the enum livekit.AudioTrackFeature.\n */\nexport const AudioTrackFeatureSchema: GenEnum<AudioTrackFeature> = /*@__PURE__*/\n enumDesc(file_livekit_models, 13);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file livekit_metrics.proto (package livekit, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file livekit_metrics.proto.\n */\nexport const file_livekit_metrics: GenFile = /*@__PURE__*/\n fileDesc(\"ChVsaXZla2l0X21ldHJpY3MucHJvdG8SB2xpdmVraXQiygEKDE1ldHJpY3NCYXRjaBIYCgx0aW1lc3RhbXBfbXMYASABKANCAjABEjgKFG5vcm1hbGl6ZWRfdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghzdHJfZGF0YRgDIAMoCRIuCgt0aW1lX3NlcmllcxgEIAMoCzIZLmxpdmVraXQuVGltZVNlcmllc01ldHJpYxIkCgZldmVudHMYBSADKAsyFC5saXZla2l0LkV2ZW50TWV0cmljIocBChBUaW1lU2VyaWVzTWV0cmljEg0KBWxhYmVsGAEgASgNEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAIgASgNEhEKCXRyYWNrX3NpZBgDIAEoDRImCgdzYW1wbGVzGAQgAygLMhUubGl2ZWtpdC5NZXRyaWNTYW1wbGUSCwoDcmlkGAUgASgNInEKDE1ldHJpY1NhbXBsZRIYCgx0aW1lc3RhbXBfbXMYASABKANCAjABEjgKFG5vcm1hbGl6ZWRfdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV2YWx1ZRgDIAEoAiLkAgoLRXZlbnRNZXRyaWMSDQoFbGFiZWwYASABKA0SHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYAiABKA0SEQoJdHJhY2tfc2lkGAMgASgNEh4KEnN0YXJ0X3RpbWVzdGFtcF9tcxgEIAEoA0ICMAESIQoQZW5kX3RpbWVzdGFtcF9tcxgFIAEoA0ICMAFIAIgBARI+Chpub3JtYWxpemVkX3N0YXJ0X3RpbWVzdGFtcBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoYbm9ybWFsaXplZF9lbmRfdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhAKCG1ldGFkYXRhGAggASgJEgsKA3JpZBgJIAEoDUITChFfZW5kX3RpbWVzdGFtcF9tc0IbChlfbm9ybWFsaXplZF9lbmRfdGltZXN0YW1wIuIBChZNZXRyaWNzUmVjb3JkaW5nSGVhZGVyEg8KB3Jvb21faWQYASABKAkSFAoIZHVyYXRpb24YAyABKARCAjABEi4KCnN0YXJ0X3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkAKCXJvb21fdGFncxgFIAMoCzItLmxpdmVraXQuTWV0cmljc1JlY29yZGluZ0hlYWRlci5Sb29tVGFnc0VudHJ5Gi8KDVJvb21UYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASqBBwoLTWV0cmljTGFiZWwSEwoPQUdFTlRTX0xMTV9UVEZUEAASEwoPQUdFTlRTX1NUVF9UVEZUEAESEwoPQUdFTlRTX1RUU19UVEZCEAISKAokQ0xJRU5UX1ZJREVPX1NVQlNDUklCRVJfRlJFRVpFX0NPVU5UEAMSMQotQ0xJRU5UX1ZJREVPX1NVQlNDUklCRVJfVE9UQUxfRlJFRVpFX0RVUkFUSU9OEAQSJwojQ0xJRU5UX1ZJREVPX1NVQlNDUklCRVJfUEFVU0VfQ09VTlQQBRIxCi1DTElFTlRfVklERU9fU1VCU0NSSUJFUl9UT1RBTF9QQVVTRVNfRFVSQVRJT04QBhItCilDTElFTlRfQVVESU9fU1VCU0NSSUJFUl9DT05DRUFMRURfU0FNUExFUxAHEjQKMENMSUVOVF9BVURJT19TVUJTQ1JJQkVSX1NJTEVOVF9DT05DRUFMRURfU0FNUExFUxAIEi4KKkNMSUVOVF9BVURJT19TVUJTQ1JJQkVSX0NPTkNFQUxNRU5UX0VWRU5UUxAJEi4KKkNMSUVOVF9BVURJT19TVUJTQ1JJQkVSX0lOVEVSUlVQVElPTl9DT1VOVBAKEjcKM0NMSUVOVF9BVURJT19TVUJTQ1JJQkVSX1RPVEFMX0lOVEVSUlVQVElPTl9EVVJBVElPThALEikKJUNMSUVOVF9TVUJTQ1JJQkVSX0pJVFRFUl9CVUZGRVJfREVMQVkQDBIxCi1DTElFTlRfU1VCU0NSSUJFUl9KSVRURVJfQlVGRkVSX0VNSVRURURfQ09VTlQQDRJACjxDTElFTlRfVklERU9fUFVCTElTSEVSX1FVQUxJVFlfTElNSVRBVElPTl9EVVJBVElPTl9CQU5EV0lEVEgQDhI6CjZDTElFTlRfVklERU9fUFVCTElTSEVSX1FVQUxJVFlfTElNSVRBVElPTl9EVVJBVElPTl9DUFUQDxI8CjhDTElFTlRfVklERU9fUFVCTElTSEVSX1FVQUxJVFlfTElNSVRBVElPTl9EVVJBVElPTl9PVEhFUhAQEhEKDVBVQkxJU0hFUl9SVFQQERITCg9TRVJWRVJfTUVTSF9SVFQQEhISCg5TVUJTQ1JJQkVSX1JUVBATEiYKIU1FVFJJQ19MQUJFTF9QUkVERUZJTkVEX01BWF9WQUxVRRCAIEKDAQoLY29tLmxpdmVraXRCE0xpdmVraXRNZXRyaWNzUHJvdG9QAVojZ2l0aHViLmNvbS9saXZla2l0L3Byb3RvY29sL2xpdmVraXSiAgNMWFiqAgdMaXZla2l0ygIHTGl2ZWtpdOICE0xpdmVraXRcR1BCTWV0YWRhdGHqAgdMaXZla2l0YgZwcm90bzM\", [file_google_protobuf_timestamp]);\n\n/**\n * @generated from message livekit.MetricsBatch\n */\nexport type MetricsBatch = Message<\"livekit.MetricsBatch\"> & {\n /**\n * time at which this batch is sent based on a monotonic clock (millisecond resolution)\n *\n * @generated from field: int64 timestamp_ms = 1 [jstype = JS_STRING];\n */\n timestampMs: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp normalized_timestamp = 2;\n */\n normalizedTimestamp?: Timestamp;\n\n /**\n * To avoid repeating string values, we store them in a separate list and reference them by index\n * This is useful for storing participant identities, track names, etc.\n * There is also a predefined list of labels that can be used to reference common metrics.\n * They have reserved indices from 0 to (METRIC_LABEL_PREDEFINED_MAX_VALUE - 1).\n * Indexes pointing at str_data should start from METRIC_LABEL_PREDEFINED_MAX_VALUE,\n * such that str_data[0] == index of METRIC_LABEL_PREDEFINED_MAX_VALUE.\n *\n * @generated from field: repeated string str_data = 3;\n */\n strData: string[];\n\n /**\n * @generated from field: repeated livekit.TimeSeriesMetric time_series = 4;\n */\n timeSeries: TimeSeriesMetric[];\n\n /**\n * @generated from field: repeated livekit.EventMetric events = 5;\n */\n events: EventMetric[];\n};\n\n/**\n * Describes the message livekit.MetricsBatch.\n * Use `create(MetricsBatchSchema)` to create a new message.\n */\nexport const MetricsBatchSchema: GenMessage<MetricsBatch> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 0);\n\n/**\n * @generated from message livekit.TimeSeriesMetric\n */\nexport type TimeSeriesMetric = Message<\"livekit.TimeSeriesMetric\"> & {\n /**\n * Metric name e.g \"speech_probablity\". The string value is not directly stored in the message, but referenced by index\n * in the `str_data` field of `MetricsBatch`\n *\n * @generated from field: uint32 label = 1;\n */\n label: number;\n\n /**\n * index into `str_data`\n *\n * @generated from field: uint32 participant_identity = 2;\n */\n participantIdentity: number;\n\n /**\n * index into `str_data`\n *\n * @generated from field: uint32 track_sid = 3;\n */\n trackSid: number;\n\n /**\n * @generated from field: repeated livekit.MetricSample samples = 4;\n */\n samples: MetricSample[];\n\n /**\n * index into 'str_data'\n *\n * @generated from field: uint32 rid = 5;\n */\n rid: number;\n};\n\n/**\n * Describes the message livekit.TimeSeriesMetric.\n * Use `create(TimeSeriesMetricSchema)` to create a new message.\n */\nexport const TimeSeriesMetricSchema: GenMessage<TimeSeriesMetric> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 1);\n\n/**\n * @generated from message livekit.MetricSample\n */\nexport type MetricSample = Message<\"livekit.MetricSample\"> & {\n /**\n * time of metric based on a monotonic clock (in milliseconds)\n *\n * @generated from field: int64 timestamp_ms = 1 [jstype = JS_STRING];\n */\n timestampMs: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp normalized_timestamp = 2;\n */\n normalizedTimestamp?: Timestamp;\n\n /**\n * @generated from field: float value = 3;\n */\n value: number;\n};\n\n/**\n * Describes the message livekit.MetricSample.\n * Use `create(MetricSampleSchema)` to create a new message.\n */\nexport const MetricSampleSchema: GenMessage<MetricSample> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 2);\n\n/**\n * @generated from message livekit.EventMetric\n */\nexport type EventMetric = Message<\"livekit.EventMetric\"> & {\n /**\n * @generated from field: uint32 label = 1;\n */\n label: number;\n\n /**\n * index into `str_data`\n *\n * @generated from field: uint32 participant_identity = 2;\n */\n participantIdentity: number;\n\n /**\n * index into `str_data`\n *\n * @generated from field: uint32 track_sid = 3;\n */\n trackSid: number;\n\n /**\n * start time of event based on a monotonic clock (in milliseconds)\n *\n * @generated from field: int64 start_timestamp_ms = 4 [jstype = JS_STRING];\n */\n startTimestampMs: string;\n\n /**\n * end time of event based on a monotonic clock (in milliseconds), if needed\n *\n * @generated from field: optional int64 end_timestamp_ms = 5 [jstype = JS_STRING];\n */\n endTimestampMs?: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp normalized_start_timestamp = 6;\n */\n normalizedStartTimestamp?: Timestamp;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp normalized_end_timestamp = 7;\n */\n normalizedEndTimestamp?: Timestamp;\n\n /**\n * @generated from field: string metadata = 8;\n */\n metadata: string;\n\n /**\n * index into 'str_data'\n *\n * @generated from field: uint32 rid = 9;\n */\n rid: number;\n};\n\n/**\n * Describes the message livekit.EventMetric.\n * Use `create(EventMetricSchema)` to create a new message.\n */\nexport const EventMetricSchema: GenMessage<EventMetric> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 3);\n\n/**\n * @generated from message livekit.MetricsRecordingHeader\n */\nexport type MetricsRecordingHeader = Message<\"livekit.MetricsRecordingHeader\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * milliseconds\n *\n * @generated from field: uint64 duration = 3 [jstype = JS_STRING];\n */\n duration: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp start_time = 4;\n */\n startTime?: Timestamp;\n\n /**\n * @generated from field: map<string, string> room_tags = 5;\n */\n roomTags: { [key: string]: string };\n};\n\n/**\n * Describes the message livekit.MetricsRecordingHeader.\n * Use `create(MetricsRecordingHeaderSchema)` to create a new message.\n */\nexport const MetricsRecordingHeaderSchema: GenMessage<MetricsRecordingHeader> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 4);\n\n/**\n * index from [0: MAX_LABEL_PREDEFINED_MAX_VALUE) are for predefined labels (`MetricLabel`)\n *\n * @generated from enum livekit.MetricLabel\n */\nexport enum MetricLabel {\n /**\n * time to first token from LLM\n *\n * @generated from enum value: AGENTS_LLM_TTFT = 0;\n */\n AGENTS_LLM_TTFT = 0,\n\n /**\n * time to final transcription\n *\n * @generated from enum value: AGENTS_STT_TTFT = 1;\n */\n AGENTS_STT_TTFT = 1,\n\n /**\n * time to first byte\n *\n * @generated from enum value: AGENTS_TTS_TTFB = 2;\n */\n AGENTS_TTS_TTFB = 2,\n\n /**\n * Number of video freezes\n *\n * @generated from enum value: CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT = 3;\n */\n CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT = 3,\n\n /**\n * total duration of freezes\n *\n * @generated from enum value: CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION = 4;\n */\n CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION = 4,\n\n /**\n * number of video pauses\n *\n * @generated from enum value: CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT = 5;\n */\n CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT = 5,\n\n /**\n * total duration of pauses\n *\n * @generated from enum value: CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION = 6;\n */\n CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION = 6,\n\n /**\n * number of concealed (synthesized) audio samples\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES = 7;\n */\n CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES = 7,\n\n /**\n * number of silent concealed samples\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES = 8;\n */\n CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES = 8,\n\n /**\n * number of concealment events\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS = 9;\n */\n CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS = 9,\n\n /**\n * number of interruptions\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT = 10;\n */\n CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT = 10,\n\n /**\n * total duration of interruptions\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION = 11;\n */\n CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION = 11,\n\n /**\n * total time spent in jitter buffer\n *\n * @generated from enum value: CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY = 12;\n */\n CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY = 12,\n\n /**\n * total time spent in jitter buffer\n *\n * @generated from enum value: CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT = 13;\n */\n CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT = 13,\n\n /**\n * total duration spent in bandwidth quality limitation\n *\n * @generated from enum value: CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH = 14;\n */\n CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH = 14,\n\n /**\n * total duration spent in cpu quality limitation\n *\n * @generated from enum value: CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU = 15;\n */\n CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU = 15,\n\n /**\n * total duration spent in other quality limitation\n *\n * @generated from enum value: CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER = 16;\n */\n CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER = 16,\n\n /**\n * Publisher RTT (participant -> server)\n *\n * @generated from enum value: PUBLISHER_RTT = 17;\n */\n PUBLISHER_RTT = 17,\n\n /**\n * RTT between publisher node and subscriber node (could involve intermedia node(s))\n *\n * @generated from enum value: SERVER_MESH_RTT = 18;\n */\n SERVER_MESH_RTT = 18,\n\n /**\n * Subscribe RTT (server -> participant)\n *\n * @generated from enum value: SUBSCRIBER_RTT = 19;\n */\n SUBSCRIBER_RTT = 19,\n\n /**\n * @generated from enum value: METRIC_LABEL_PREDEFINED_MAX_VALUE = 4096;\n */\n METRIC_LABEL_PREDEFINED_MAX_VALUE = 4096,\n}\n\n/**\n * Describes the enum livekit.MetricLabel.\n */\nexport const MetricLabelSchema: GenEnum<MetricLabel> = /*@__PURE__*/\n enumDesc(file_livekit_metrics, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file logger/options.proto (package logger, syntax proto3)\n/* eslint-disable */\n\nimport type { GenExtension, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { extDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { FieldOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Describes the file logger/options.proto.\n */\nexport const file_logger_options: GenFile = /*@__PURE__*/\n fileDesc(\"ChRsb2dnZXIvb3B0aW9ucy5wcm90bxIGbG9nZ2VyOjcKBnJlZGFjdBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYwc0FIAEoCFIGcmVkYWN0OkQKDXJlZGFjdF9mb3JtYXQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGMLNBSABKAlSDHJlZGFjdEZvcm1hdEJ+Cgpjb20ubG9nZ2VyQgxPcHRpb25zUHJvdG9QAVoqZ2l0aHViLmNvbS9saXZla2l0L3Byb3RvY29sL2xpdmVraXQvbG9nZ2VyogIDTFhYqgIGTG9nZ2VyygIGTG9nZ2Vy4gISTG9nZ2VyXEdQQk1ldGFkYXRh6gIGTG9nZ2VyYgZwcm90bzM\", [file_google_protobuf_descriptor]);\n\n/**\n * @generated from extension: bool redact = 91841;\n */\nexport const redact: GenExtension<FieldOptions, boolean> = /*@__PURE__*/\n extDesc(file_logger_options, 0);\n\n/**\n * @generated from extension: string redact_format = 91842;\n */\nexport const redact_format: GenExtension<FieldOptions, string> = /*@__PURE__*/\n extDesc(file_logger_options, 1);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_recording.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { CloudRecordingVariants, RecordingTasks } from \"./plugnmeet_recorder_pb\";\nimport { file_plugnmeet_recorder } from \"./plugnmeet_recorder_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_recording.proto.\n */\nexport const file_plugnmeet_recording: GenFile = /*@__PURE__*/\n fileDesc(\"ChlwbHVnbm1lZXRfcmVjb3JkaW5nLnByb3RvEglwbHVnbm1lZXQimwIKDFJlY29yZGluZ1JlcRInCgR0YXNrGAEgASgOMhkucGx1Z25tZWV0LlJlY29yZGluZ1Rhc2tzEg8KB3Jvb21faWQYAiABKAkSGQoNcm9vbV90YWJsZV9pZBgDIAEoA0ICMAESCwoDc2lkGAQgASgJEhUKCHJ0bXBfdXJsGAUgASgJSACIAQESGgoNY3VzdG9tX2Rlc2lnbhgGIAEoCUgBiAEBEkEKEXJlY29yZGluZ192YXJpYW50GAcgASgOMiEucGx1Z25tZWV0LkNsb3VkUmVjb3JkaW5nVmFyaWFudHNIAogBAUILCglfcnRtcF91cmxCEAoOX2N1c3RvbV9kZXNpZ25CFAoSX3JlY29yZGluZ192YXJpYW50IokCChFSZWNvcmRpbmdJbmZvRmlsZRIZCg1yb29tX3RhYmxlX2lkGAEgASgDQgIwARIPCgdyb29tX2lkGAIgASgJEhIKCnJvb21fdGl0bGUYAyABKAkSEAoIcm9vbV9zaWQYBCABKAkSHgoScm9vbV9jcmVhdGlvbl90aW1lGAUgASgDQgIwARIWCgpyb29tX2VuZGVkGAYgASgDQgIwARIUCgxyZWNvcmRpbmdfaWQYByABKAkSEwoLcmVjb3JkZXJfaWQYCCABKAkSEQoJZmlsZV9wYXRoGAkgASgJEhEKCWZpbGVfc2l6ZRgKIAEoAhIZCg1jcmVhdGlvbl90aW1lGAsgASgDQgIwASIvChFSZWNvcmRpbmdTdWJ0aXRsZRINCgVsYWJlbBgBIAEoCRILCgN1cmwYAiABKAki3gIKEVJlY29yZGluZ01ldGFkYXRhEhIKBXRpdGxlGAEgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAiABKAlIAYgBARI+CglzdWJ0aXRsZXMYAyADKAsyKy5wbHVnbm1lZXQuUmVjb3JkaW5nTWV0YWRhdGEuU3VidGl0bGVzRW50cnkSPwoKZXh0cmFfZGF0YRgEIAMoCzIrLnBsdWdubWVldC5SZWNvcmRpbmdNZXRhZGF0YS5FeHRyYURhdGFFbnRyeRpOCg5TdWJ0aXRsZXNFbnRyeRILCgNrZXkYASABKAkSKwoFdmFsdWUYAiABKAsyHC5wbHVnbm1lZXQuUmVjb3JkaW5nU3VidGl0bGU6AjgBGjAKDkV4dHJhRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCAoGX3RpdGxlQg4KDF9kZXNjcmlwdGlvbkKgAQoNY29tLnBsdWdubWVldEIXUGx1Z25tZWV0UmVjb3JkaW5nUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_plugnmeet_recorder]);\n\n/**\n * @generated from message plugnmeet.RecordingReq\n */\nexport type RecordingReq = Message<\"plugnmeet.RecordingReq\"> & {\n /**\n * @generated from field: plugnmeet.RecordingTasks task = 1;\n */\n task: RecordingTasks;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: int64 room_table_id = 3 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * @generated from field: string sid = 4;\n */\n sid: string;\n\n /**\n * @generated from field: optional string rtmp_url = 5;\n */\n rtmpUrl?: string;\n\n /**\n * @generated from field: optional string custom_design = 6;\n */\n customDesign?: string;\n\n /**\n * @generated from field: optional plugnmeet.CloudRecordingVariants recording_variant = 7;\n */\n recordingVariant?: CloudRecordingVariants;\n};\n\n/**\n * Describes the message plugnmeet.RecordingReq.\n * Use `create(RecordingReqSchema)` to create a new message.\n */\nexport const RecordingReqSchema: GenMessage<RecordingReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recording, 0);\n\n/**\n * @generated from message plugnmeet.RecordingInfoFile\n */\nexport type RecordingInfoFile = Message<\"plugnmeet.RecordingInfoFile\"> & {\n /**\n * @generated from field: int64 room_table_id = 1 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_title = 3;\n */\n roomTitle: string;\n\n /**\n * @generated from field: string room_sid = 4;\n */\n roomSid: string;\n\n /**\n * @generated from field: int64 room_creation_time = 5 [jstype = JS_STRING];\n */\n roomCreationTime: string;\n\n /**\n * @generated from field: int64 room_ended = 6 [jstype = JS_STRING];\n */\n roomEnded: string;\n\n /**\n * @generated from field: string recording_id = 7;\n */\n recordingId: string;\n\n /**\n * @generated from field: string recorder_id = 8;\n */\n recorderId: string;\n\n /**\n * @generated from field: string file_path = 9;\n */\n filePath: string;\n\n /**\n * @generated from field: float file_size = 10;\n */\n fileSize: number;\n\n /**\n * @generated from field: int64 creation_time = 11 [jstype = JS_STRING];\n */\n creationTime: string;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfoFile.\n * Use `create(RecordingInfoFileSchema)` to create a new message.\n */\nexport const RecordingInfoFileSchema: GenMessage<RecordingInfoFile> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recording, 1);\n\n/**\n * @generated from message plugnmeet.RecordingSubtitle\n */\nexport type RecordingSubtitle = Message<\"plugnmeet.RecordingSubtitle\"> & {\n /**\n * @generated from field: string label = 1;\n */\n label: string;\n\n /**\n * @generated from field: string url = 2;\n */\n url: string;\n};\n\n/**\n * Describes the message plugnmeet.RecordingSubtitle.\n * Use `create(RecordingSubtitleSchema)` to create a new message.\n */\nexport const RecordingSubtitleSchema: GenMessage<RecordingSubtitle> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recording, 2);\n\n/**\n * @generated from message plugnmeet.RecordingMetadata\n */\nexport type RecordingMetadata = Message<\"plugnmeet.RecordingMetadata\"> & {\n /**\n * @generated from field: optional string title = 1;\n */\n title?: string;\n\n /**\n * @generated from field: optional string description = 2;\n */\n description?: string;\n\n /**\n * e.g. map<language, RecordingSubtitle>\n *\n * @generated from field: map<string, plugnmeet.RecordingSubtitle> subtitles = 3;\n */\n subtitles: { [key: string]: RecordingSubtitle };\n\n /**\n * @generated from field: map<string, string> extra_data = 4;\n */\n extraData: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.RecordingMetadata.\n * Use `create(RecordingMetadataSchema)` to create a new message.\n */\nexport const RecordingMetadataSchema: GenMessage<RecordingMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recording, 3);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_recorder.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_recorder.proto.\n */\nexport const file_plugnmeet_recorder: GenFile = /*@__PURE__*/\n fileDesc(\"ChhwbHVnbm1lZXRfcmVjb3JkZXIucHJvdG8SCXBsdWdubWVldCLvAQoTUGx1Z05tZWV0VG9SZWNvcmRlchIMCgRmcm9tGAEgASgJEicKBHRhc2sYAiABKA4yGS5wbHVnbm1lZXQuUmVjb3JkaW5nVGFza3MSGQoNcm9vbV90YWJsZV9pZBgDIAEoA0ICMAESDwoHcm9vbV9pZBgEIAEoCRIQCghyb29tX3NpZBgFIAEoCRIUCgxyZWNvcmRpbmdfaWQYBiABKAkSEwoLcmVjb3JkZXJfaWQYByABKAkSFAoMYWNjZXNzX3Rva2VuGAggASgJEhUKCHJ0bXBfdXJsGAkgASgJSACIAQFCCwoJX3J0bXBfdXJsItECChNSZWNvcmRlclRvUGx1Z05tZWV0EgwKBGZyb20YASABKAkSJwoEdGFzaxgCIAEoDjIZLnBsdWdubWVldC5SZWNvcmRpbmdUYXNrcxIOCgZzdGF0dXMYAyABKAgSCwoDbXNnGAQgASgJEhQKDHJlY29yZGluZ19pZBgFIAEoCRIZCg1yb29tX3RhYmxlX2lkGAsgASgDQgIwARIPCgdyb29tX2lkGAYgASgJEhAKCHJvb21fc2lkGAcgASgJEhMKC3JlY29yZGVyX2lkGAggASgJEhEKCWZpbGVfcGF0aBgJIAEoCRIRCglmaWxlX3NpemUYCiABKAISQQoRcmVjb3JkaW5nX3ZhcmlhbnQYDCABKA4yIS5wbHVnbm1lZXQuQ2xvdWRSZWNvcmRpbmdWYXJpYW50c0gAiAEBQhQKEl9yZWNvcmRpbmdfdmFyaWFudCLeAQoPVHJhbnNjb2RpbmdUYXNrEhQKDHJlY29yZGluZ19pZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEhAKCHJvb21fc2lkGAMgASgJEhEKCWZpbGVfcGF0aBgEIAEoCRIRCglmaWxlX25hbWUYBSABKAkSGQoNcm9vbV90YWJsZV9pZBgGIAEoA0ICMAESEwoLcmVjb3JkZXJfaWQYByABKAkSPAoRcmVjb3JkaW5nX3ZhcmlhbnQYCCABKA4yIS5wbHVnbm1lZXQuQ2xvdWRSZWNvcmRpbmdWYXJpYW50cyqcAQoOUmVjb3JkaW5nVGFza3MSEwoPU1RBUlRfUkVDT1JESU5HEAASEgoOU1RPUF9SRUNPUkRJTkcQARIOCgpTVEFSVF9SVE1QEAISDQoJU1RPUF9SVE1QEAMSEQoNRU5EX1JFQ09SRElORxAEEgwKCEVORF9SVE1QEAUSFwoTUkVDT1JESU5HX1BST0NFRURFRBAGEggKBFNUT1AQBypwChBSZWNvcmRlckluZm9LZXlzEhsKF1JFQ09SREVSX0lORk9fTUFYX0xJTUlUEAASGwoXUkVDT1JERVJfSU5GT19MQVNUX1BJTkcQARIiCh5SRUNPUkRFUl9JTkZPX0NVUlJFTlRfUFJPR1JFU1MQAypZChZDbG91ZFJlY29yZGluZ1ZhcmlhbnRzEh8KG0ZVTExfU0NSRUVOX0NMT1VEX1JFQ09SRElORxAAEh4KGk1FRElBX09OTFlfQ0xPVURfUkVDT1JESU5HEAFCnwEKDWNvbS5wbHVnbm1lZXRCFlBsdWdubWVldFJlY29yZGVyUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * @generated from message plugnmeet.PlugNmeetToRecorder\n */\nexport type PlugNmeetToRecorder = Message<\"plugnmeet.PlugNmeetToRecorder\"> & {\n /**\n * @generated from field: string from = 1;\n */\n from: string;\n\n /**\n * @generated from field: plugnmeet.RecordingTasks task = 2;\n */\n task: RecordingTasks;\n\n /**\n * @generated from field: int64 room_table_id = 3 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 5;\n */\n roomSid: string;\n\n /**\n * @generated from field: string recording_id = 6;\n */\n recordingId: string;\n\n /**\n * @generated from field: string recorder_id = 7;\n */\n recorderId: string;\n\n /**\n * @generated from field: string access_token = 8;\n */\n accessToken: string;\n\n /**\n * @generated from field: optional string rtmp_url = 9;\n */\n rtmpUrl?: string;\n};\n\n/**\n * Describes the message plugnmeet.PlugNmeetToRecorder.\n * Use `create(PlugNmeetToRecorderSchema)` to create a new message.\n */\nexport const PlugNmeetToRecorderSchema: GenMessage<PlugNmeetToRecorder> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recorder, 0);\n\n/**\n * @generated from message plugnmeet.RecorderToPlugNmeet\n */\nexport type RecorderToPlugNmeet = Message<\"plugnmeet.RecorderToPlugNmeet\"> & {\n /**\n * @generated from field: string from = 1;\n */\n from: string;\n\n /**\n * @generated from field: plugnmeet.RecordingTasks task = 2;\n */\n task: RecordingTasks;\n\n /**\n * @generated from field: bool status = 3;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 4;\n */\n msg: string;\n\n /**\n * @generated from field: string recording_id = 5;\n */\n recordingId: string;\n\n /**\n * @generated from field: int64 room_table_id = 11 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * @generated from field: string room_id = 6;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 7;\n */\n roomSid: string;\n\n /**\n * @generated from field: string recorder_id = 8;\n */\n recorderId: string;\n\n /**\n * @generated from field: string file_path = 9;\n */\n filePath: string;\n\n /**\n * @generated from field: float file_size = 10;\n */\n fileSize: number;\n\n /**\n * next key 13\n *\n * @generated from field: optional plugnmeet.CloudRecordingVariants recording_variant = 12;\n */\n recordingVariant?: CloudRecordingVariants;\n};\n\n/**\n * Describes the message plugnmeet.RecorderToPlugNmeet.\n * Use `create(RecorderToPlugNmeetSchema)` to create a new message.\n */\nexport const RecorderToPlugNmeetSchema: GenMessage<RecorderToPlugNmeet> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recorder, 1);\n\n/**\n * TranscodingTask will be the job for the transcoding worker.\n *\n * @generated from message plugnmeet.TranscodingTask\n */\nexport type TranscodingTask = Message<\"plugnmeet.TranscodingTask\"> & {\n /**\n * @generated from field: string recording_id = 1;\n */\n recordingId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 3;\n */\n roomSid: string;\n\n /**\n * directory where raw file is stored\n *\n * @generated from field: string file_path = 4;\n */\n filePath: string;\n\n /**\n * raw file name e.g. rec-xxx_raw.mp4\n *\n * @generated from field: string file_name = 5;\n */\n fileName: string;\n\n /**\n * @generated from field: int64 room_table_id = 6 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * ID of the original recorder that captured the file\n *\n * @generated from field: string recorder_id = 7;\n */\n recorderId: string;\n\n /**\n * The variant of the recording\n *\n * @generated from field: plugnmeet.CloudRecordingVariants recording_variant = 8;\n */\n recordingVariant: CloudRecordingVariants;\n};\n\n/**\n * Describes the message plugnmeet.TranscodingTask.\n * Use `create(TranscodingTaskSchema)` to create a new message.\n */\nexport const TranscodingTaskSchema: GenMessage<TranscodingTask> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recorder, 2);\n\n/**\n * @generated from enum plugnmeet.RecordingTasks\n */\nexport enum RecordingTasks {\n /**\n * @generated from enum value: START_RECORDING = 0;\n */\n START_RECORDING = 0,\n\n /**\n * @generated from enum value: STOP_RECORDING = 1;\n */\n STOP_RECORDING = 1,\n\n /**\n * @generated from enum value: START_RTMP = 2;\n */\n START_RTMP = 2,\n\n /**\n * @generated from enum value: STOP_RTMP = 3;\n */\n STOP_RTMP = 3,\n\n /**\n * @generated from enum value: END_RECORDING = 4;\n */\n END_RECORDING = 4,\n\n /**\n * @generated from enum value: END_RTMP = 5;\n */\n END_RTMP = 5,\n\n /**\n * @generated from enum value: RECORDING_PROCEEDED = 6;\n */\n RECORDING_PROCEEDED = 6,\n\n /**\n * @generated from enum value: STOP = 7;\n */\n STOP = 7,\n}\n\n/**\n * Describes the enum plugnmeet.RecordingTasks.\n */\nexport const RecordingTasksSchema: GenEnum<RecordingTasks> = /*@__PURE__*/\n enumDesc(file_plugnmeet_recorder, 0);\n\n/**\n * @generated from enum plugnmeet.RecorderInfoKeys\n */\nexport enum RecorderInfoKeys {\n /**\n * @generated from enum value: RECORDER_INFO_MAX_LIMIT = 0;\n */\n RECORDER_INFO_MAX_LIMIT = 0,\n\n /**\n * @generated from enum value: RECORDER_INFO_LAST_PING = 1;\n */\n RECORDER_INFO_LAST_PING = 1,\n\n /**\n * @generated from enum value: RECORDER_INFO_CURRENT_PROGRESS = 3;\n */\n RECORDER_INFO_CURRENT_PROGRESS = 3,\n}\n\n/**\n * Describes the enum plugnmeet.RecorderInfoKeys.\n */\nexport const RecorderInfoKeysSchema: GenEnum<RecorderInfoKeys> = /*@__PURE__*/\n enumDesc(file_plugnmeet_recorder, 1);\n\n/**\n * @generated from enum plugnmeet.CloudRecordingVariants\n */\nexport enum CloudRecordingVariants {\n /**\n * @generated from enum value: FULL_SCREEN_CLOUD_RECORDING = 0;\n */\n FULL_SCREEN_CLOUD_RECORDING = 0,\n\n /**\n * @generated from enum value: MEDIA_ONLY_CLOUD_RECORDING = 1;\n */\n MEDIA_ONLY_CLOUD_RECORDING = 1,\n}\n\n/**\n * Describes the enum plugnmeet.CloudRecordingVariants.\n */\nexport const CloudRecordingVariantsSchema: GenEnum<CloudRecordingVariants> = /*@__PURE__*/\n enumDesc(file_plugnmeet_recorder, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_breakout_room.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_breakout_room.proto.\n */\nexport const file_plugnmeet_breakout_room: GenFile = /*@__PURE__*/\n fileDesc(\"Ch1wbHVnbm1lZXRfYnJlYWtvdXRfcm9vbS5wcm90bxIJcGx1Z25tZWV0IqwBChZDcmVhdGVCcmVha291dFJvb21zUmVxEg8KB3Jvb21faWQYASABKAkSGQoRcmVxdWVzdGVkX3VzZXJfaWQYAiABKAkSFAoIZHVyYXRpb24YAyABKARCAjABEhgKC3dlbGNvbWVfbXNnGAQgASgJSACIAQESJgoFcm9vbXMYBSADKAsyFy5wbHVnbm1lZXQuQnJlYWtvdXRSb29tQg4KDF93ZWxjb21lX21zZyKRAQoMQnJlYWtvdXRSb29tEgoKAmlkGAEgASgJEg0KBXRpdGxlGAIgASgJEhQKCGR1cmF0aW9uGAMgASgEQgIwARIPCgdzdGFydGVkGAQgASgIEhMKB2NyZWF0ZWQYBSABKARCAjABEioKBXVzZXJzGAYgAygLMhsucGx1Z25tZWV0LkJyZWFrb3V0Um9vbVVzZXIiPAoQQnJlYWtvdXRSb29tVXNlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg4KBmpvaW5lZBgDIAEoCCJiCh9JbmNyZWFzZUJyZWFrb3V0Um9vbUR1cmF0aW9uUmVxEhgKEGJyZWFrb3V0X3Jvb21faWQYASABKAkSFAoIZHVyYXRpb24YAiABKARCAjABEg8KB3Jvb21faWQYAyABKAkiOwobQnJvYWRjYXN0QnJlYWtvdXRSb29tTXNnUmVxEgsKA21zZxgBIAEoCRIPCgdyb29tX2lkGAMgASgJImMKE0pvaW5CcmVha291dFJvb21SZXESGAoQYnJlYWtvdXRfcm9vbV9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEg8KB3Jvb21faWQYAyABKAkSEAoIaXNfYWRtaW4YBCABKAgiPwoSRW5kQnJlYWtvdXRSb29tUmVxEhgKEGJyZWFrb3V0X3Jvb21faWQYASABKAkSDwoHcm9vbV9pZBgDIAEoCSKpAQoPQnJlYWtvdXRSb29tUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSEgoFdG9rZW4YAyABKAlIAIgBARIqCgRyb29tGAQgASgLMhcucGx1Z25tZWV0LkJyZWFrb3V0Um9vbUgBiAEBEiYKBXJvb21zGAUgAygLMhcucGx1Z25tZWV0LkJyZWFrb3V0Um9vbUIICgZfdG9rZW5CBwoFX3Jvb21CowEKDWNvbS5wbHVnbm1lZXRCGlBsdWdubWVldEJyZWFrb3V0Um9vbVByb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\");\n\n/**\n * @generated from message plugnmeet.CreateBreakoutRoomsReq\n */\nexport type CreateBreakoutRoomsReq = Message<\"plugnmeet.CreateBreakoutRoomsReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string requested_user_id = 2;\n */\n requestedUserId: string;\n\n /**\n * @generated from field: uint64 duration = 3 [jstype = JS_STRING];\n */\n duration: string;\n\n /**\n * @generated from field: optional string welcome_msg = 4;\n */\n welcomeMsg?: string;\n\n /**\n * @generated from field: repeated plugnmeet.BreakoutRoom rooms = 5;\n */\n rooms: BreakoutRoom[];\n};\n\n/**\n * Describes the message plugnmeet.CreateBreakoutRoomsReq.\n * Use `create(CreateBreakoutRoomsReqSchema)` to create a new message.\n */\nexport const CreateBreakoutRoomsReqSchema: GenMessage<CreateBreakoutRoomsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 0);\n\n/**\n * @generated from message plugnmeet.BreakoutRoom\n */\nexport type BreakoutRoom = Message<\"plugnmeet.BreakoutRoom\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string title = 2;\n */\n title: string;\n\n /**\n * @generated from field: uint64 duration = 3 [jstype = JS_STRING];\n */\n duration: string;\n\n /**\n * @generated from field: bool started = 4;\n */\n started: boolean;\n\n /**\n * @generated from field: uint64 created = 5 [jstype = JS_STRING];\n */\n created: string;\n\n /**\n * @generated from field: repeated plugnmeet.BreakoutRoomUser users = 6;\n */\n users: BreakoutRoomUser[];\n};\n\n/**\n * Describes the message plugnmeet.BreakoutRoom.\n * Use `create(BreakoutRoomSchema)` to create a new message.\n */\nexport const BreakoutRoomSchema: GenMessage<BreakoutRoom> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 1);\n\n/**\n * @generated from message plugnmeet.BreakoutRoomUser\n */\nexport type BreakoutRoomUser = Message<\"plugnmeet.BreakoutRoomUser\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: bool joined = 3;\n */\n joined: boolean;\n};\n\n/**\n * Describes the message plugnmeet.BreakoutRoomUser.\n * Use `create(BreakoutRoomUserSchema)` to create a new message.\n */\nexport const BreakoutRoomUserSchema: GenMessage<BreakoutRoomUser> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 2);\n\n/**\n * @generated from message plugnmeet.IncreaseBreakoutRoomDurationReq\n */\nexport type IncreaseBreakoutRoomDurationReq = Message<\"plugnmeet.IncreaseBreakoutRoomDurationReq\"> & {\n /**\n * @generated from field: string breakout_room_id = 1;\n */\n breakoutRoomId: string;\n\n /**\n * @generated from field: uint64 duration = 2 [jstype = JS_STRING];\n */\n duration: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.IncreaseBreakoutRoomDurationReq.\n * Use `create(IncreaseBreakoutRoomDurationReqSchema)` to create a new message.\n */\nexport const IncreaseBreakoutRoomDurationReqSchema: GenMessage<IncreaseBreakoutRoomDurationReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 3);\n\n/**\n * @generated from message plugnmeet.BroadcastBreakoutRoomMsgReq\n */\nexport type BroadcastBreakoutRoomMsgReq = Message<\"plugnmeet.BroadcastBreakoutRoomMsgReq\"> & {\n /**\n * @generated from field: string msg = 1;\n */\n msg: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.BroadcastBreakoutRoomMsgReq.\n * Use `create(BroadcastBreakoutRoomMsgReqSchema)` to create a new message.\n */\nexport const BroadcastBreakoutRoomMsgReqSchema: GenMessage<BroadcastBreakoutRoomMsgReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 4);\n\n/**\n * @generated from message plugnmeet.JoinBreakoutRoomReq\n */\nexport type JoinBreakoutRoomReq = Message<\"plugnmeet.JoinBreakoutRoomReq\"> & {\n /**\n * @generated from field: string breakout_room_id = 1;\n */\n breakoutRoomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_admin = 4;\n */\n isAdmin: boolean;\n};\n\n/**\n * Describes the message plugnmeet.JoinBreakoutRoomReq.\n * Use `create(JoinBreakoutRoomReqSchema)` to create a new message.\n */\nexport const JoinBreakoutRoomReqSchema: GenMessage<JoinBreakoutRoomReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 5);\n\n/**\n * @generated from message plugnmeet.EndBreakoutRoomReq\n */\nexport type EndBreakoutRoomReq = Message<\"plugnmeet.EndBreakoutRoomReq\"> & {\n /**\n * @generated from field: string breakout_room_id = 1;\n */\n breakoutRoomId: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.EndBreakoutRoomReq.\n * Use `create(EndBreakoutRoomReqSchema)` to create a new message.\n */\nexport const EndBreakoutRoomReqSchema: GenMessage<EndBreakoutRoomReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 6);\n\n/**\n * @generated from message plugnmeet.BreakoutRoomRes\n */\nexport type BreakoutRoomRes = Message<\"plugnmeet.BreakoutRoomRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * join token\n *\n * @generated from field: optional string token = 3;\n */\n token?: string;\n\n /**\n * for my breakout room\n *\n * @generated from field: optional plugnmeet.BreakoutRoom room = 4;\n */\n room?: BreakoutRoom;\n\n /**\n * rooms list\n *\n * @generated from field: repeated plugnmeet.BreakoutRoom rooms = 5;\n */\n rooms: BreakoutRoom[];\n};\n\n/**\n * Describes the message plugnmeet.BreakoutRoomRes.\n * Use `create(BreakoutRoomResSchema)` to create a new message.\n */\nexport const BreakoutRoomResSchema: GenMessage<BreakoutRoomRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 7);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_common_api.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { DataMsgBodyType } from \"./plugnmeet_datamessage_pb\";\nimport { file_plugnmeet_datamessage } from \"./plugnmeet_datamessage_pb\";\nimport type { NatsSubjects } from \"./plugnmeet_nats_msg_pb\";\nimport { file_plugnmeet_nats_msg } from \"./plugnmeet_nats_msg_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_common_api.proto.\n */\nexport const file_plugnmeet_common_api: GenFile = /*@__PURE__*/\n fileDesc(\"ChpwbHVnbm1lZXRfY29tbW9uX2FwaS5wcm90bxIJcGx1Z25tZWV0Ii0KDkNvbW1vblJlc3BvbnNlEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkiPgoOVmVyaWZ5VG9rZW5SZXESGgoNaXNfcHJvZHVjdGlvbhgBIAEoCEgAiAEBQhAKDl9pc19wcm9kdWN0aW9uIq4DCg5WZXJpZnlUb2tlblJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhQKDG5hdHNfd3NfdXJscxgDIAMoCRIbCg5zZXJ2ZXJfdmVyc2lvbhgEIAEoCUgAiAEBEhQKB3Jvb21faWQYBSABKAlIAYgBARIUCgd1c2VyX2lkGAYgASgJSAKIAQESHQoQcm9vbV9zdHJlYW1fbmFtZRgHIAEoCUgDiAEBEjMKDW5hdHNfc3ViamVjdHMYCCABKAsyFy5wbHVnbm1lZXQuTmF0c1N1YmplY3RzSASIAQESLwoiZW5hYmxlZF9zZWxmX2luc2VydF9lbmNyeXB0aW9uX2tleRgJIAEoCEgFiAEBEhUKCGlzX2Nsb3VkGAogASgISAaIAQFCEQoPX3NlcnZlcl92ZXJzaW9uQgoKCF9yb29tX2lkQgoKCF91c2VyX2lkQhMKEV9yb29tX3N0cmVhbV9uYW1lQhAKDl9uYXRzX3N1YmplY3RzQiUKI19lbmFibGVkX3NlbGZfaW5zZXJ0X2VuY3J5cHRpb25fa2V5QgsKCV9pc19jbG91ZCKAAQoSTXV0ZVVuTXV0ZVRyYWNrUmVxEgsKA3NpZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSEQoJdHJhY2tfc2lkGAQgASgJEg0KBW11dGVkGAUgASgIEhkKEVJlcXVlc3RlZF91c2VyX2lkGAYgASgJImYKFFJlbW92ZVBhcnRpY2lwYW50UmVxEgsKA3NpZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSCwoDbXNnGAQgASgJEhIKCmJsb2NrX3VzZXIYBSABKAgi1AEKDkRhdGFNZXNzYWdlUmVxEg8KB3Jvb21faWQYASABKAkSEAoIcm9vbV9zaWQYAiABKAkSDwoHdXNlcl9pZBgDIAEoCRIQCgh1c2VyX3NpZBgEIAEoCRIxCg1tc2dfYm9keV90eXBlGAUgASgOMhoucGx1Z25tZWV0LkRhdGFNc2dCb2R5VHlwZRILCgNtc2cYBiABKAkSGQoRUmVxdWVzdGVkX3VzZXJfaWQYByABKAkSDwoHc2VuZF90bxgIIAMoCRIQCghpc19hZG1pbhgJIAEoCCIgCg1Sb29tRW5kQVBJUmVxEg8KB3Jvb21faWQYASABKAkikgEKE0NoYW5nZVZpc2liaWxpdHlSZXMSDwoHcm9vbV9pZBgBIAEoCRIcCg92aXNpYmxlX25vdGVwYWQYAiABKAhIAIgBARIgChN2aXNpYmxlX3doaXRlX2JvYXJkGAMgASgISAGIAQFCEgoQX3Zpc2libGVfbm90ZXBhZEIWChRfdmlzaWJsZV93aGl0ZV9ib2FyZCJ/ChJTd2l0Y2hQcmVzZW50ZXJSZXESLAoEdGFzaxgBIAEoDjIeLnBsdWdubWVldC5Td2l0Y2hQcmVzZW50ZXJUYXNrEg8KB3VzZXJfaWQYAiABKAkSDwoHcm9vbV9pZBgDIAEoCRIZChFSZXF1ZXN0ZWRfdXNlcl9pZBgEIAEoCSKoAQoWRXh0ZXJuYWxNZWRpYVBsYXllclJlcRIwCgR0YXNrGAEgASgOMiIucGx1Z25tZWV0LkV4dGVybmFsTWVkaWFQbGF5ZXJUYXNrEhAKA3VybBgCIAEoCUgAiAEBEhQKB3NlZWtfdG8YAyABKAFIAYgBARIPCgdyb29tX2lkGAQgASgJEg8KB3VzZXJfaWQYBSABKAlCBgoEX3VybEIKCghfc2Vla190byKGAQoWRXh0ZXJuYWxEaXNwbGF5TGlua1JlcRIwCgR0YXNrGAEgASgOMiIucGx1Z25tZWV0LkV4dGVybmFsRGlzcGxheUxpbmtUYXNrEhAKA3VybBgCIAEoCUgAiAEBEg8KB3Jvb21faWQYBCABKAkSDwoHdXNlcl9pZBgFIAEoCUIGCgRfdXJsIokBChhDcmVhdGVFdGhlcnBhZFNlc3Npb25SZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRITCgZwYWRfaWQYAyABKAlIAIgBARIcCg9yZWFkb25seV9wYWRfaWQYBCABKAlIAYgBAUIJCgdfcGFkX2lkQhIKEF9yZWFkb25seV9wYWRfaWQiRAoQQ2xlYW5FdGhlcnBhZFJlcRIPCgdyb29tX2lkGAEgASgJEg8KB25vZGVfaWQYAiABKAkSDgoGcGFkX2lkGAMgASgJIj0KF0NoYW5nZUV0aGVycGFkU3RhdHVzUmVxEg8KB3Jvb21faWQYASABKAkSEQoJaXNfYWN0aXZlGAIgASgIIjoKFkFwcHJvdmVXYWl0aW5nVXNlcnNSZXESDwoHcm9vbV9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJIjsKG1VwZGF0ZVdhaXRpbmdSb29tTWVzc2FnZVJlcRIPCgdyb29tX2lkGAEgASgJEgsKA21zZxgCIAEoCSKOAQoZVXBkYXRlVXNlckxvY2tTZXR0aW5nc1JlcRIQCghyb29tX3NpZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIRCglkaXJlY3Rpb24YBSABKAkSGQoRUmVxdWVzdGVkX3VzZXJfaWQYBiABKAkiggEKGlVwbG9hZEJhc2U2NEVuY29kZWREYXRhUmVxEg8KB3Jvb21faWQYASABKAkSDAoEZGF0YRgDIAEoCRIRCglmaWxlX25hbWUYBCABKAkSMgoJZmlsZV90eXBlGAUgASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlIo8BChpVcGxvYWRCYXNlNjRFbmNvZGVkRGF0YVJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhEKCWZpbGVfcGF0aBgDIAEoCRIRCglmaWxlX25hbWUYBCABKAkSFgoOZmlsZV9leHRlbnNpb24YBSABKAkSFgoOZmlsZV9taW1lX3R5cGUYBiABKAkixwEKFFVwbG9hZGVkRmlsZU1lcmdlUmVxEhAKCHJvb21fc2lkGAEgASgJEg8KB3Jvb21faWQYAiABKAkSMgoJZmlsZV90eXBlGAMgASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlEhwKFHJlc3VtYWJsZV9pZGVudGlmaWVyGAQgASgJEhoKEnJlc3VtYWJsZV9maWxlbmFtZRgFIAEoCRIeChZyZXN1bWFibGVfdG90YWxfY2h1bmtzGAYgASgFIskBCg9VcGxvYWRlZEZpbGVSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIPCgdmaWxlX2lkGAMgASgJEhEKCWZpbGVfcGF0aBgEIAEoCRIRCglmaWxlX25hbWUYBSABKAkSFgoOZmlsZV9leHRlbnNpb24YBiABKAkSFgoOZmlsZV9taW1lX3R5cGUYByABKAkSMgoJZmlsZV90eXBlGAggASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlIvkBChhSb29tVXBsb2FkZWRGaWxlTWV0YWRhdGESDwoHZmlsZV9pZBgBIAEoCRIRCglmaWxlX25hbWUYAiABKAkSEQoJZmlsZV9wYXRoGAMgASgJEhEKCW1pbWVfdHlwZRgEIAEoCRIbChN1cGxvYWRlZF9ieV91c2VyX2lkGAUgASgJEhgKEHVwbG9hZGVkX2J5X25hbWUYBiABKAkSMgoJZmlsZV90eXBlGAcgASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlEhgKC3RvdGFsX3BhZ2VzGAggASgFSACIAQFCDgoMX3RvdGFsX3BhZ2VzIl4KF0dldFJvb21VcGxvYWRlZEZpbGVzUmVxEg8KB3Jvb21faWQYASABKAkSMgoJZmlsZV90eXBlGAIgASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlImoKF0dldFJvb21VcGxvYWRlZEZpbGVzUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSMgoFZmlsZXMYAyADKAsyIy5wbHVnbm1lZXQuUm9vbVVwbG9hZGVkRmlsZU1ldGFkYXRhIkAKEkVuYWJsZVNpcERpYWxJblJlcRIPCgdyb29tX2lkGAEgASgJEhkKEWhpZGVfcGhvbmVfbnVtYmVyGAIgASgIKi4KE1N3aXRjaFByZXNlbnRlclRhc2sSCwoHUFJPTU9URRAAEgoKBkRFTU9URRABKj8KF0V4dGVybmFsTWVkaWFQbGF5ZXJUYXNrEhIKDlNUQVJUX1BMQVlCQUNLEAASEAoMRU5EX1BMQVlCQUNLEAEqSgoXRXh0ZXJuYWxEaXNwbGF5TGlua1Rhc2sSFwoTU1RBUlRfRVhURVJOQUxfTElOSxAAEhYKElNUT1BfRVhURVJOQUxfTElOSxABKpcBChRSb29tVXBsb2FkZWRGaWxlVHlwZRINCglDSEFUX0ZJTEUQABIZChVXSElURUJPQVJEX0lNQUdFX0ZJTEUQARIdChlXSElURUJPQVJEX0NPTlZFUlRFRF9GSUxFEAISHgoaRVhURVJOQUxfTUVESUFfUExBWUVSX0ZJTEUQAxIWChJWSVJUVUFMX0JBQ0tHUk9VTkQQBEKgAQoNY29tLnBsdWdubWVldEIXUGx1Z25tZWV0Q29tbW9uQXBpUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_plugnmeet_datamessage, file_plugnmeet_nats_msg]);\n\n/**\n * @generated from message plugnmeet.CommonResponse\n */\nexport type CommonResponse = Message<\"plugnmeet.CommonResponse\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.CommonResponse.\n * Use `create(CommonResponseSchema)` to create a new message.\n */\nexport const CommonResponseSchema: GenMessage<CommonResponse> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 0);\n\n/**\n * @generated from message plugnmeet.VerifyTokenReq\n */\nexport type VerifyTokenReq = Message<\"plugnmeet.VerifyTokenReq\"> & {\n /**\n * @generated from field: optional bool is_production = 1;\n */\n isProduction?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.VerifyTokenReq.\n * Use `create(VerifyTokenReqSchema)` to create a new message.\n */\nexport const VerifyTokenReqSchema: GenMessage<VerifyTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 1);\n\n/**\n * @generated from message plugnmeet.VerifyTokenRes\n */\nexport type VerifyTokenRes = Message<\"plugnmeet.VerifyTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated string nats_ws_urls = 3;\n */\n natsWsUrls: string[];\n\n /**\n * @generated from field: optional string server_version = 4;\n */\n serverVersion?: string;\n\n /**\n * @generated from field: optional string room_id = 5;\n */\n roomId?: string;\n\n /**\n * @generated from field: optional string user_id = 6;\n */\n userId?: string;\n\n /**\n * @generated from field: optional string room_stream_name = 7;\n */\n roomStreamName?: string;\n\n /**\n * @generated from field: optional plugnmeet.NatsSubjects nats_subjects = 8;\n */\n natsSubjects?: NatsSubjects;\n\n /**\n * @generated from field: optional bool enabled_self_insert_encryption_key = 9;\n */\n enabledSelfInsertEncryptionKey?: boolean;\n\n /**\n * @generated from field: optional bool is_cloud = 10;\n */\n isCloud?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.VerifyTokenRes.\n * Use `create(VerifyTokenResSchema)` to create a new message.\n */\nexport const VerifyTokenResSchema: GenMessage<VerifyTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 2);\n\n/**\n * @generated from message plugnmeet.MuteUnMuteTrackReq\n */\nexport type MuteUnMuteTrackReq = Message<\"plugnmeet.MuteUnMuteTrackReq\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId: string;\n\n /**\n * @generated from field: string track_sid = 4;\n */\n trackSid: string;\n\n /**\n * @generated from field: bool muted = 5;\n */\n muted: boolean;\n\n /**\n * @generated from field: string Requested_user_id = 6;\n */\n RequestedUserId: string;\n};\n\n/**\n * Describes the message plugnmeet.MuteUnMuteTrackReq.\n * Use `create(MuteUnMuteTrackReqSchema)` to create a new message.\n */\nexport const MuteUnMuteTrackReqSchema: GenMessage<MuteUnMuteTrackReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 3);\n\n/**\n * @generated from message plugnmeet.RemoveParticipantReq\n */\nexport type RemoveParticipantReq = Message<\"plugnmeet.RemoveParticipantReq\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId: string;\n\n /**\n * @generated from field: string msg = 4;\n */\n msg: string;\n\n /**\n * @generated from field: bool block_user = 5;\n */\n blockUser: boolean;\n};\n\n/**\n * Describes the message plugnmeet.RemoveParticipantReq.\n * Use `create(RemoveParticipantReqSchema)` to create a new message.\n */\nexport const RemoveParticipantReqSchema: GenMessage<RemoveParticipantReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 4);\n\n/**\n * @generated from message plugnmeet.DataMessageReq\n */\nexport type DataMessageReq = Message<\"plugnmeet.DataMessageReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 2;\n */\n roomSid: string;\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId: string;\n\n /**\n * @generated from field: string user_sid = 4;\n */\n userSid: string;\n\n /**\n * @generated from field: plugnmeet.DataMsgBodyType msg_body_type = 5;\n */\n msgBodyType: DataMsgBodyType;\n\n /**\n * @generated from field: string msg = 6;\n */\n msg: string;\n\n /**\n * @generated from field: string Requested_user_id = 7;\n */\n RequestedUserId: string;\n\n /**\n * @generated from field: repeated string send_to = 8;\n */\n sendTo: string[];\n\n /**\n * @generated from field: bool is_admin = 9;\n */\n isAdmin: boolean;\n};\n\n/**\n * Describes the message plugnmeet.DataMessageReq.\n * Use `create(DataMessageReqSchema)` to create a new message.\n */\nexport const DataMessageReqSchema: GenMessage<DataMessageReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 5);\n\n/**\n * @generated from message plugnmeet.RoomEndAPIReq\n */\nexport type RoomEndAPIReq = Message<\"plugnmeet.RoomEndAPIReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomEndAPIReq.\n * Use `create(RoomEndAPIReqSchema)` to create a new message.\n */\nexport const RoomEndAPIReqSchema: GenMessage<RoomEndAPIReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 6);\n\n/**\n * @generated from message plugnmeet.ChangeVisibilityRes\n */\nexport type ChangeVisibilityRes = Message<\"plugnmeet.ChangeVisibilityRes\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: optional bool visible_notepad = 2;\n */\n visibleNotepad?: boolean;\n\n /**\n * @generated from field: optional bool visible_white_board = 3;\n */\n visibleWhiteBoard?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.ChangeVisibilityRes.\n * Use `create(ChangeVisibilityResSchema)` to create a new message.\n */\nexport const ChangeVisibilityResSchema: GenMessage<ChangeVisibilityRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 7);\n\n/**\n * @generated from message plugnmeet.SwitchPresenterReq\n */\nexport type SwitchPresenterReq = Message<\"plugnmeet.SwitchPresenterReq\"> & {\n /**\n * @generated from field: plugnmeet.SwitchPresenterTask task = 1;\n */\n task: SwitchPresenterTask;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n\n /**\n * @generated from field: string Requested_user_id = 4;\n */\n RequestedUserId: string;\n};\n\n/**\n * Describes the message plugnmeet.SwitchPresenterReq.\n * Use `create(SwitchPresenterReqSchema)` to create a new message.\n */\nexport const SwitchPresenterReqSchema: GenMessage<SwitchPresenterReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 8);\n\n/**\n * @generated from message plugnmeet.ExternalMediaPlayerReq\n */\nexport type ExternalMediaPlayerReq = Message<\"plugnmeet.ExternalMediaPlayerReq\"> & {\n /**\n * @generated from field: plugnmeet.ExternalMediaPlayerTask task = 1;\n */\n task: ExternalMediaPlayerTask;\n\n /**\n * @generated from field: optional string url = 2;\n */\n url?: string;\n\n /**\n * @generated from field: optional double seek_to = 3;\n */\n seekTo?: number;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 5;\n */\n userId: string;\n};\n\n/**\n * Describes the message plugnmeet.ExternalMediaPlayerReq.\n * Use `create(ExternalMediaPlayerReqSchema)` to create a new message.\n */\nexport const ExternalMediaPlayerReqSchema: GenMessage<ExternalMediaPlayerReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 9);\n\n/**\n * @generated from message plugnmeet.ExternalDisplayLinkReq\n */\nexport type ExternalDisplayLinkReq = Message<\"plugnmeet.ExternalDisplayLinkReq\"> & {\n /**\n * @generated from field: plugnmeet.ExternalDisplayLinkTask task = 1;\n */\n task: ExternalDisplayLinkTask;\n\n /**\n * @generated from field: optional string url = 2;\n */\n url?: string;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 5;\n */\n userId: string;\n};\n\n/**\n * Describes the message plugnmeet.ExternalDisplayLinkReq.\n * Use `create(ExternalDisplayLinkReqSchema)` to create a new message.\n */\nexport const ExternalDisplayLinkReqSchema: GenMessage<ExternalDisplayLinkReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 10);\n\n/**\n * @generated from message plugnmeet.CreateEtherpadSessionRes\n */\nexport type CreateEtherpadSessionRes = Message<\"plugnmeet.CreateEtherpadSessionRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string pad_id = 3;\n */\n padId?: string;\n\n /**\n * @generated from field: optional string readonly_pad_id = 4;\n */\n readonlyPadId?: string;\n};\n\n/**\n * Describes the message plugnmeet.CreateEtherpadSessionRes.\n * Use `create(CreateEtherpadSessionResSchema)` to create a new message.\n */\nexport const CreateEtherpadSessionResSchema: GenMessage<CreateEtherpadSessionRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 11);\n\n/**\n * @generated from message plugnmeet.CleanEtherpadReq\n */\nexport type CleanEtherpadReq = Message<\"plugnmeet.CleanEtherpadReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string node_id = 2;\n */\n nodeId: string;\n\n /**\n * @generated from field: string pad_id = 3;\n */\n padId: string;\n};\n\n/**\n * Describes the message plugnmeet.CleanEtherpadReq.\n * Use `create(CleanEtherpadReqSchema)` to create a new message.\n */\nexport const CleanEtherpadReqSchema: GenMessage<CleanEtherpadReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 12);\n\n/**\n * @generated from message plugnmeet.ChangeEtherpadStatusReq\n */\nexport type ChangeEtherpadStatusReq = Message<\"plugnmeet.ChangeEtherpadStatusReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n};\n\n/**\n * Describes the message plugnmeet.ChangeEtherpadStatusReq.\n * Use `create(ChangeEtherpadStatusReqSchema)` to create a new message.\n */\nexport const ChangeEtherpadStatusReqSchema: GenMessage<ChangeEtherpadStatusReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 13);\n\n/**\n * @generated from message plugnmeet.ApproveWaitingUsersReq\n */\nexport type ApproveWaitingUsersReq = Message<\"plugnmeet.ApproveWaitingUsersReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n};\n\n/**\n * Describes the message plugnmeet.ApproveWaitingUsersReq.\n * Use `create(ApproveWaitingUsersReqSchema)` to create a new message.\n */\nexport const ApproveWaitingUsersReqSchema: GenMessage<ApproveWaitingUsersReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 14);\n\n/**\n * @generated from message plugnmeet.UpdateWaitingRoomMessageReq\n */\nexport type UpdateWaitingRoomMessageReq = Message<\"plugnmeet.UpdateWaitingRoomMessageReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.UpdateWaitingRoomMessageReq.\n * Use `create(UpdateWaitingRoomMessageReqSchema)` to create a new message.\n */\nexport const UpdateWaitingRoomMessageReqSchema: GenMessage<UpdateWaitingRoomMessageReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 15);\n\n/**\n * @generated from message plugnmeet.UpdateUserLockSettingsReq\n */\nexport type UpdateUserLockSettingsReq = Message<\"plugnmeet.UpdateUserLockSettingsReq\"> & {\n /**\n * @generated from field: string room_sid = 1;\n */\n roomSid: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId: string;\n\n /**\n * @generated from field: string service = 4;\n */\n service: string;\n\n /**\n * @generated from field: string direction = 5;\n */\n direction: string;\n\n /**\n * @generated from field: string Requested_user_id = 6;\n */\n RequestedUserId: string;\n};\n\n/**\n * Describes the message plugnmeet.UpdateUserLockSettingsReq.\n * Use `create(UpdateUserLockSettingsReqSchema)` to create a new message.\n */\nexport const UpdateUserLockSettingsReqSchema: GenMessage<UpdateUserLockSettingsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 16);\n\n/**\n * @generated from message plugnmeet.UploadBase64EncodedDataReq\n */\nexport type UploadBase64EncodedDataReq = Message<\"plugnmeet.UploadBase64EncodedDataReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string data = 3;\n */\n data: string;\n\n /**\n * @generated from field: string file_name = 4;\n */\n fileName: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 5;\n */\n fileType: RoomUploadedFileType;\n};\n\n/**\n * Describes the message plugnmeet.UploadBase64EncodedDataReq.\n * Use `create(UploadBase64EncodedDataReqSchema)` to create a new message.\n */\nexport const UploadBase64EncodedDataReqSchema: GenMessage<UploadBase64EncodedDataReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 17);\n\n/**\n * @generated from message plugnmeet.UploadBase64EncodedDataRes\n */\nexport type UploadBase64EncodedDataRes = Message<\"plugnmeet.UploadBase64EncodedDataRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: string file_path = 3;\n */\n filePath: string;\n\n /**\n * @generated from field: string file_name = 4;\n */\n fileName: string;\n\n /**\n * @generated from field: string file_extension = 5;\n */\n fileExtension: string;\n\n /**\n * @generated from field: string file_mime_type = 6;\n */\n fileMimeType: string;\n};\n\n/**\n * Describes the message plugnmeet.UploadBase64EncodedDataRes.\n * Use `create(UploadBase64EncodedDataResSchema)` to create a new message.\n */\nexport const UploadBase64EncodedDataResSchema: GenMessage<UploadBase64EncodedDataRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 18);\n\n/**\n * @generated from message plugnmeet.UploadedFileMergeReq\n */\nexport type UploadedFileMergeReq = Message<\"plugnmeet.UploadedFileMergeReq\"> & {\n /**\n * @generated from field: string room_sid = 1;\n */\n roomSid: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 3;\n */\n fileType: RoomUploadedFileType;\n\n /**\n * @generated from field: string resumable_identifier = 4;\n */\n resumableIdentifier: string;\n\n /**\n * @generated from field: string resumable_filename = 5;\n */\n resumableFilename: string;\n\n /**\n * @generated from field: int32 resumable_total_chunks = 6;\n */\n resumableTotalChunks: number;\n};\n\n/**\n * Describes the message plugnmeet.UploadedFileMergeReq.\n * Use `create(UploadedFileMergeReqSchema)` to create a new message.\n */\nexport const UploadedFileMergeReqSchema: GenMessage<UploadedFileMergeReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 19);\n\n/**\n * @generated from message plugnmeet.UploadedFileRes\n */\nexport type UploadedFileRes = Message<\"plugnmeet.UploadedFileRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: string file_id = 3;\n */\n fileId: string;\n\n /**\n * @generated from field: string file_path = 4;\n */\n filePath: string;\n\n /**\n * @generated from field: string file_name = 5;\n */\n fileName: string;\n\n /**\n * @generated from field: string file_extension = 6;\n */\n fileExtension: string;\n\n /**\n * @generated from field: string file_mime_type = 7;\n */\n fileMimeType: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 8;\n */\n fileType: RoomUploadedFileType;\n};\n\n/**\n * Describes the message plugnmeet.UploadedFileRes.\n * Use `create(UploadedFileResSchema)` to create a new message.\n */\nexport const UploadedFileResSchema: GenMessage<UploadedFileRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 20);\n\n/**\n * @generated from message plugnmeet.RoomUploadedFileMetadata\n */\nexport type RoomUploadedFileMetadata = Message<\"plugnmeet.RoomUploadedFileMetadata\"> & {\n /**\n * @generated from field: string file_id = 1;\n */\n fileId: string;\n\n /**\n * @generated from field: string file_name = 2;\n */\n fileName: string;\n\n /**\n * @generated from field: string file_path = 3;\n */\n filePath: string;\n\n /**\n * @generated from field: string mime_type = 4;\n */\n mimeType: string;\n\n /**\n * @generated from field: string uploaded_by_user_id = 5;\n */\n uploadedByUserId: string;\n\n /**\n * @generated from field: string uploaded_by_name = 6;\n */\n uploadedByName: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 7;\n */\n fileType: RoomUploadedFileType;\n\n /**\n * @generated from field: optional int32 total_pages = 8;\n */\n totalPages?: number;\n};\n\n/**\n * Describes the message plugnmeet.RoomUploadedFileMetadata.\n * Use `create(RoomUploadedFileMetadataSchema)` to create a new message.\n */\nexport const RoomUploadedFileMetadataSchema: GenMessage<RoomUploadedFileMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 21);\n\n/**\n * @generated from message plugnmeet.GetRoomUploadedFilesReq\n */\nexport type GetRoomUploadedFilesReq = Message<\"plugnmeet.GetRoomUploadedFilesReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 2;\n */\n fileType: RoomUploadedFileType;\n};\n\n/**\n * Describes the message plugnmeet.GetRoomUploadedFilesReq.\n * Use `create(GetRoomUploadedFilesReqSchema)` to create a new message.\n */\nexport const GetRoomUploadedFilesReqSchema: GenMessage<GetRoomUploadedFilesReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 22);\n\n/**\n * @generated from message plugnmeet.GetRoomUploadedFilesRes\n */\nexport type GetRoomUploadedFilesRes = Message<\"plugnmeet.GetRoomUploadedFilesRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated plugnmeet.RoomUploadedFileMetadata files = 3;\n */\n files: RoomUploadedFileMetadata[];\n};\n\n/**\n * Describes the message plugnmeet.GetRoomUploadedFilesRes.\n * Use `create(GetRoomUploadedFilesResSchema)` to create a new message.\n */\nexport const GetRoomUploadedFilesResSchema: GenMessage<GetRoomUploadedFilesRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 23);\n\n/**\n * @generated from message plugnmeet.EnableSipDialInReq\n */\nexport type EnableSipDialInReq = Message<\"plugnmeet.EnableSipDialInReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: bool hide_phone_number = 2;\n */\n hidePhoneNumber: boolean;\n};\n\n/**\n * Describes the message plugnmeet.EnableSipDialInReq.\n * Use `create(EnableSipDialInReqSchema)` to create a new message.\n */\nexport const EnableSipDialInReqSchema: GenMessage<EnableSipDialInReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 24);\n\n/**\n * @generated from enum plugnmeet.SwitchPresenterTask\n */\nexport enum SwitchPresenterTask {\n /**\n * @generated from enum value: PROMOTE = 0;\n */\n PROMOTE = 0,\n\n /**\n * @generated from enum value: DEMOTE = 1;\n */\n DEMOTE = 1,\n}\n\n/**\n * Describes the enum plugnmeet.SwitchPresenterTask.\n */\nexport const SwitchPresenterTaskSchema: GenEnum<SwitchPresenterTask> = /*@__PURE__*/\n enumDesc(file_plugnmeet_common_api, 0);\n\n/**\n * @generated from enum plugnmeet.ExternalMediaPlayerTask\n */\nexport enum ExternalMediaPlayerTask {\n /**\n * @generated from enum value: START_PLAYBACK = 0;\n */\n START_PLAYBACK = 0,\n\n /**\n * @generated from enum value: END_PLAYBACK = 1;\n */\n END_PLAYBACK = 1,\n}\n\n/**\n * Describes the enum plugnmeet.ExternalMediaPlayerTask.\n */\nexport const ExternalMediaPlayerTaskSchema: GenEnum<ExternalMediaPlayerTask> = /*@__PURE__*/\n enumDesc(file_plugnmeet_common_api, 1);\n\n/**\n * @generated from enum plugnmeet.ExternalDisplayLinkTask\n */\nexport enum ExternalDisplayLinkTask {\n /**\n * @generated from enum value: START_EXTERNAL_LINK = 0;\n */\n START_EXTERNAL_LINK = 0,\n\n /**\n * @generated from enum value: STOP_EXTERNAL_LINK = 1;\n */\n STOP_EXTERNAL_LINK = 1,\n}\n\n/**\n * Describes the enum plugnmeet.ExternalDisplayLinkTask.\n */\nexport const ExternalDisplayLinkTaskSchema: GenEnum<ExternalDisplayLinkTask> = /*@__PURE__*/\n enumDesc(file_plugnmeet_common_api, 2);\n\n/**\n * @generated from enum plugnmeet.RoomUploadedFileType\n */\nexport enum RoomUploadedFileType {\n /**\n * @generated from enum value: CHAT_FILE = 0;\n */\n CHAT_FILE = 0,\n\n /**\n * @generated from enum value: WHITEBOARD_IMAGE_FILE = 1;\n */\n WHITEBOARD_IMAGE_FILE = 1,\n\n /**\n * @generated from enum value: WHITEBOARD_CONVERTED_FILE = 2;\n */\n WHITEBOARD_CONVERTED_FILE = 2,\n\n /**\n * @generated from enum value: EXTERNAL_MEDIA_PLAYER_FILE = 3;\n */\n EXTERNAL_MEDIA_PLAYER_FILE = 3,\n\n /**\n * @generated from enum value: VIRTUAL_BACKGROUND = 4;\n */\n VIRTUAL_BACKGROUND = 4,\n}\n\n/**\n * Describes the enum plugnmeet.RoomUploadedFileType.\n */\nexport const RoomUploadedFileTypeSchema: GenEnum<RoomUploadedFileType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_common_api, 3);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_datamessage.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_datamessage.proto.\n */\nexport const file_plugnmeet_datamessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChtwbHVnbm1lZXRfZGF0YW1lc3NhZ2UucHJvdG8SCXBsdWdubWVldCKZAQoSRGF0YUNoYW5uZWxNZXNzYWdlEgoKAmlkGAEgASgJEigKBHR5cGUYAiABKA4yGi5wbHVnbm1lZXQuRGF0YU1zZ0JvZHlUeXBlEhQKDGZyb21fdXNlcl9pZBgDIAEoCRIXCgp0b191c2VyX2lkGAQgASgJSACIAQESDwoHbWVzc2FnZRgFIAEoCUINCgtfdG9fdXNlcl9pZCrvAwoPRGF0YU1zZ0JvZHlUeXBlEgsKB1VOS05PV04QABIPCgtGSUxFX1VQTE9BRBABEggKBElORk8QAhIJCgVBTEVSVBADEhoKFlVTRVJfVklTSUJJTElUWV9DSEFOR0UQBBIgChxFWFRFUk5BTF9NRURJQV9QTEFZRVJfRVZFTlRTEAUSFQoRTkVXX1BPTExfUkVTUE9OU0UQBhIbChdQVVNIX0pPSU5fQlJFQUtPVVRfUk9PTRAHEhwKGFJFUV9GVUxMX1dISVRFQk9BUkRfREFUQRAIEhwKGFJFU19GVUxMX1dISVRFQk9BUkRfREFUQRAJEhAKDFNDRU5FX1VQREFURRAKEhIKDlBPSU5URVJfVVBEQVRFEAsSHwobV0hJVEVCT0FSRF9BUFBfU1RBVEVfQ0hBTkdFEAwSDwoLUEFHRV9DSEFOR0UQDRIPCgtGSUxFX0NIQU5HRRAOEiQKIFVQREFURV9DVVJSRU5UX09GRklDRV9GSUxFX1BBR0VTEA8SFAoQV0hJVEVCT0FSRF9SRVNFVBAQEiIKHlVTRVJfQ09OTkVDVElPTl9RVUFMSVRZX0NIQU5HRRAREhgKFFJFUV9QVUJMSUNfQ0hBVF9EQVRBEBISGAoUUkVTX1BVQkxJQ19DSEFUX0RBVEEQE0KiAQoNY29tLnBsdWdubWVldEIZUGx1Z25tZWV0RGF0YW1lc3NhZ2VQcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\");\n\n/**\n * @generated from message plugnmeet.DataChannelMessage\n */\nexport type DataChannelMessage = Message<\"plugnmeet.DataChannelMessage\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: plugnmeet.DataMsgBodyType type = 2;\n */\n type: DataMsgBodyType;\n\n /**\n * @generated from field: string from_user_id = 3;\n */\n fromUserId: string;\n\n /**\n * @generated from field: optional string to_user_id = 4;\n */\n toUserId?: string;\n\n /**\n * @generated from field: string message = 5;\n */\n message: string;\n};\n\n/**\n * Describes the message plugnmeet.DataChannelMessage.\n * Use `create(DataChannelMessageSchema)` to create a new message.\n */\nexport const DataChannelMessageSchema: GenMessage<DataChannelMessage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_datamessage, 0);\n\n/**\n * @generated from enum plugnmeet.DataMsgBodyType\n */\nexport enum DataMsgBodyType {\n /**\n * SYSTEM type\n *\n * @generated from enum value: UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FILE_UPLOAD = 1;\n */\n FILE_UPLOAD = 1,\n\n /**\n * @generated from enum value: INFO = 2;\n */\n INFO = 2,\n\n /**\n * @generated from enum value: ALERT = 3;\n */\n ALERT = 3,\n\n /**\n * @generated from enum value: USER_VISIBILITY_CHANGE = 4;\n */\n USER_VISIBILITY_CHANGE = 4,\n\n /**\n * @generated from enum value: EXTERNAL_MEDIA_PLAYER_EVENTS = 5;\n */\n EXTERNAL_MEDIA_PLAYER_EVENTS = 5,\n\n /**\n * @generated from enum value: NEW_POLL_RESPONSE = 6;\n */\n NEW_POLL_RESPONSE = 6,\n\n /**\n * @generated from enum value: PUSH_JOIN_BREAKOUT_ROOM = 7;\n */\n PUSH_JOIN_BREAKOUT_ROOM = 7,\n\n /**\n * WHITEBOARD type\n *\n * @generated from enum value: REQ_FULL_WHITEBOARD_DATA = 8;\n */\n REQ_FULL_WHITEBOARD_DATA = 8,\n\n /**\n * @generated from enum value: RES_FULL_WHITEBOARD_DATA = 9;\n */\n RES_FULL_WHITEBOARD_DATA = 9,\n\n /**\n * @generated from enum value: SCENE_UPDATE = 10;\n */\n SCENE_UPDATE = 10,\n\n /**\n * @generated from enum value: POINTER_UPDATE = 11;\n */\n POINTER_UPDATE = 11,\n\n /**\n * @generated from enum value: WHITEBOARD_APP_STATE_CHANGE = 12;\n */\n WHITEBOARD_APP_STATE_CHANGE = 12,\n\n /**\n * @generated from enum value: PAGE_CHANGE = 13;\n */\n PAGE_CHANGE = 13,\n\n /**\n * @generated from enum value: FILE_CHANGE = 14;\n */\n FILE_CHANGE = 14,\n\n /**\n * @generated from enum value: UPDATE_CURRENT_OFFICE_FILE_PAGES = 15;\n */\n UPDATE_CURRENT_OFFICE_FILE_PAGES = 15,\n\n /**\n * @generated from enum value: WHITEBOARD_RESET = 16;\n */\n WHITEBOARD_RESET = 16,\n\n /**\n * @generated from enum value: USER_CONNECTION_QUALITY_CHANGE = 17;\n */\n USER_CONNECTION_QUALITY_CHANGE = 17,\n\n /**\n * @generated from enum value: REQ_PUBLIC_CHAT_DATA = 18;\n */\n REQ_PUBLIC_CHAT_DATA = 18,\n\n /**\n * @generated from enum value: RES_PUBLIC_CHAT_DATA = 19;\n */\n RES_PUBLIC_CHAT_DATA = 19,\n}\n\n/**\n * Describes the enum plugnmeet.DataMsgBodyType.\n */\nexport const DataMsgBodyTypeSchema: GenEnum<DataMsgBodyType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_datamessage, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_nats_msg.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_nats_msg.proto.\n */\nexport const file_plugnmeet_nats_msg: GenFile = /*@__PURE__*/\n fileDesc(\"ChhwbHVnbm1lZXRfbmF0c19tc2cucHJvdG8SCXBsdWdubWVldCKqAQoMTmF0c1N1YmplY3RzEhkKEXN5c3RlbV9hcGlfd29ya2VyGAEgASgJEhgKEHN5c3RlbV9qc193b3JrZXIYAiABKAkSFQoNc3lzdGVtX3B1YmxpYxgDIAEoCRIWCg5zeXN0ZW1fcHJpdmF0ZRgEIAEoCRIMCgRjaGF0GAUgASgJEhIKCndoaXRlYm9hcmQYBiABKAkSFAoMZGF0YV9jaGFubmVsGAcgASgJIk8KE1ByaXZhdGVEYXRhRGVsaXZlcnkSEgoKdG9fdXNlcl9pZBgBIAEoCRIWCg5lY2hvX3RvX3NlbmRlchgCIAEoCBIMCgR0eXBlGAMgASgJIngKFU5hdHNNc2dTZXJ2ZXJUb0NsaWVudBIKCgJpZBgBIAEoCRI1CgVldmVudBgCIAEoDjImLnBsdWdubWVldC5OYXRzTXNnU2VydmVyVG9DbGllbnRFdmVudHMSCwoDbXNnGAMgASgJEg8KB2Jpbl9tc2cYBCABKAwieAoVTmF0c01zZ0NsaWVudFRvU2VydmVyEgoKAmlkGAEgASgJEjUKBWV2ZW50GAIgASgOMiYucGx1Z25tZWV0Lk5hdHNNc2dDbGllbnRUb1NlcnZlckV2ZW50cxILCgNtc2cYAyABKAkSDwoHYmluX21zZxgEIAEoDCK/AQoOTmF0c0t2Um9vbUluZm8SFwoLZGJfdGFibGVfaWQYASABKARCAjABEg8KB3Jvb21faWQYAiABKAkSEAoIcm9vbV9zaWQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhkKDWVtcHR5X3RpbWVvdXQYBSABKARCAjABEhwKEG1heF9wYXJ0aWNpcGFudHMYBiABKARCAjABEhAKCG1ldGFkYXRhGAcgASgJEhYKCmNyZWF0ZWRfYXQYCCABKARCAjABItwBCg5OYXRzS3ZVc2VySW5mbxIPCgd1c2VyX2lkGAEgASgJEhAKCHVzZXJfc2lkGAIgASgJEgwKBG5hbWUYAyABKAkSDwoHcm9vbV9pZBgEIAEoCRIQCghpc19hZG1pbhgFIAEoCBIUCgxpc19wcmVzZW50ZXIYBiABKAgSEAoIbWV0YWRhdGEYByABKAkSFQoJam9pbmVkX2F0GAggASgEQgIwARIaCg5yZWNvbm5lY3RlZF9hdBgJIAEoBEICMAESGwoPZGlzY29ubmVjdGVkX2F0GAogASgEQgIwASJuCg9UdXJuQ3JlZGVudGlhbHMSEAoIdXNlcm5hbWUYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSDAoEdXJpcxgDIAMoCRISCgpmb3JjZV90dXJuGAQgASgIEhUKDWZhbGxiYWNrX3R1cm4YBSABKAgilwEKE01lZGlhU2VydmVyQ29ubkluZm8SCwoDdXJsGAEgASgJEg0KBXRva2VuGAIgASgJEhQKDGVuYWJsZWRfZTJlZRgDIAEoCBI5ChB0dXJuX2NyZWRlbnRpYWxzGAQgASgLMhoucGx1Z25tZWV0LlR1cm5DcmVkZW50aWFsc0gAiAEBQhMKEV90dXJuX2NyZWRlbnRpYWxzImkKD05hdHNJbml0aWFsRGF0YRInCgRyb29tGAEgASgLMhkucGx1Z25tZWV0Lk5hdHNLdlJvb21JbmZvEi0KCmxvY2FsX3VzZXIYAiABKAsyGS5wbHVnbm1lZXQuTmF0c0t2VXNlckluZm8ikAEKFk5hdHNTeXN0ZW1Ob3RpZmljYXRpb24SCgoCaWQYASABKAkSNAoEdHlwZRgCIAEoDjImLnBsdWdubWVldC5OYXRzU3lzdGVtTm90aWZpY2F0aW9uVHlwZXMSCwoDbXNnGAMgASgJEhMKB3NlbnRfYXQYBCABKANCAjABEhIKCndpdGhfc291bmQYBSABKAgiOwoWTmF0c1VzZXJNZXRhZGF0YVVwZGF0ZRIPCgd1c2VyX2lkGAEgASgJEhAKCG1ldGFkYXRhGAIgASgJItcCCgtDaGF0TWVzc2FnZRIKCgJpZBgBIAEoCRIRCglmcm9tX25hbWUYAiABKAkSFAoMZnJvbV91c2VyX2lkGAMgASgJEhMKB3NlbnRfYXQYBCABKANCAjABEhcKCnRvX3VzZXJfaWQYBSABKAlIAIgBARISCgppc19wcml2YXRlGAYgASgIEg8KB21lc3NhZ2UYByABKAkSEgoKZnJvbV9hZG1pbhgIIAEoCBIYCgtzb3VyY2VfbGFuZxgJIAEoCUgBiAEBEj4KDHRyYW5zbGF0aW9ucxgKIAMoCzIoLnBsdWdubWVldC5DaGF0TWVzc2FnZS5UcmFuc2xhdGlvbnNFbnRyeRozChFUcmFuc2xhdGlvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQg0KC190b191c2VyX2lkQg4KDF9zb3VyY2VfbGFuZyqGBAobTmF0c01zZ1NlcnZlclRvQ2xpZW50RXZlbnRzEhQKEFJFU19JTklUSUFMX0RBVEEQABIZChVSRVNfSk9JTkVEX1VTRVJTX0xJU1QQARIZChVSRVNfTUVESUFfU0VSVkVSX0RBVEEQAhIYChRST09NX01FVEFEQVRBX1VQREFURRADEhgKFFVTRVJfTUVUQURBVEFfVVBEQVRFEAQSDwoLVVNFUl9KT0lORUQQBRIVChFVU0VSX0RJU0NPTk5FQ1RFRBAGEhAKDFVTRVJfT0ZGTElORRAHEhgKFFJFU1BfUkVORVdfUE5NX1RPS0VOEAgSFwoTU1lTVEVNX05PVElGSUNBVElPThAJEhEKDVNFU1NJT05fRU5ERUQQChIPCgtQT0xMX0NMT1NFRBALEhAKDFBPTExfQ1JFQVRFRBAMEhYKEkpPSU5fQlJFQUtPVVRfUk9PTRANEhcKE0JSRUFLT1VUX1JPT01fRU5ERUQQDhITCg9TWVNURU1fQ0hBVF9NU0cQDxIdChlUUkFOU0NSSVBUSU9OX09VVFBVVF9URVhUEBASHgoaUkVTUF9JTlNJR0hUU19BSV9URVhUX0NIQVQQERIaChZSRVNQX09OTElORV9VU0VSU19MSVNUEBISGQoVREVMSVZFUllfUFJJVkFURV9EQVRBEBMSCAoEUE9ORxAUKqYCChtOYXRzTXNnQ2xpZW50VG9TZXJ2ZXJFdmVudHMSFAoQUkVRX0lOSVRJQUxfREFUQRAAEhkKFVJFUV9NRURJQV9TRVJWRVJfREFUQRABEhkKFVJFUV9KT0lORURfVVNFUlNfTElTVBACEhcKE1JFUV9SRU5FV19QTk1fVE9LRU4QAxIICgRQSU5HEAQSEgoOUkVRX1JBSVNFX0hBTkQQBRISCg5SRVFfTE9XRVJfSEFORBAGEh0KGVJFUV9MT1dFUl9PVEhFUl9VU0VSX0hBTkQQBxIXChNQVVNIX0FOQUxZVElDU19EQVRBEAgSGQoVUkVRX09OTElORV9VU0VSU19MSVNUEAkSHQoZUkVRX1BSSVZBVEVfREFUQV9ERUxJVkVSWRAKKooBChtOYXRzU3lzdGVtTm90aWZpY2F0aW9uVHlwZXMSIQodTkFUU19TWVNURU1fTk9USUZJQ0FUSU9OX0lORk8QABIkCiBOQVRTX1NZU1RFTV9OT1RJRklDQVRJT05fV0FSTklORxABEiIKHk5BVFNfU1lTVEVNX05PVElGSUNBVElPTl9FUlJPUhACQp4BCg1jb20ucGx1Z25tZWV0QhVQbHVnbm1lZXROYXRzTXNnUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * @generated from message plugnmeet.NatsSubjects\n */\nexport type NatsSubjects = Message<\"plugnmeet.NatsSubjects\"> & {\n /**\n * @generated from field: string system_api_worker = 1;\n */\n systemApiWorker: string;\n\n /**\n * @generated from field: string system_js_worker = 2;\n */\n systemJsWorker: string;\n\n /**\n * @generated from field: string system_public = 3;\n */\n systemPublic: string;\n\n /**\n * @generated from field: string system_private = 4;\n */\n systemPrivate: string;\n\n /**\n * @generated from field: string chat = 5;\n */\n chat: string;\n\n /**\n * @generated from field: string whiteboard = 6;\n */\n whiteboard: string;\n\n /**\n * @generated from field: string data_channel = 7;\n */\n dataChannel: string;\n};\n\n/**\n * Describes the message plugnmeet.NatsSubjects.\n * Use `create(NatsSubjectsSchema)` to create a new message.\n */\nexport const NatsSubjectsSchema: GenMessage<NatsSubjects> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 0);\n\n/**\n * @generated from message plugnmeet.PrivateDataDelivery\n */\nexport type PrivateDataDelivery = Message<\"plugnmeet.PrivateDataDelivery\"> & {\n /**\n * @generated from field: string to_user_id = 1;\n */\n toUserId: string;\n\n /**\n * @generated from field: bool echo_to_sender = 2;\n */\n echoToSender: boolean;\n\n /**\n * @generated from field: string type = 3;\n */\n type: string;\n};\n\n/**\n * Describes the message plugnmeet.PrivateDataDelivery.\n * Use `create(PrivateDataDeliverySchema)` to create a new message.\n */\nexport const PrivateDataDeliverySchema: GenMessage<PrivateDataDelivery> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 1);\n\n/**\n * @generated from message plugnmeet.NatsMsgServerToClient\n */\nexport type NatsMsgServerToClient = Message<\"plugnmeet.NatsMsgServerToClient\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: plugnmeet.NatsMsgServerToClientEvents event = 2;\n */\n event: NatsMsgServerToClientEvents;\n\n /**\n * @generated from field: string msg = 3;\n */\n msg: string;\n\n /**\n * @generated from field: bytes bin_msg = 4;\n */\n binMsg: Uint8Array;\n};\n\n/**\n * Describes the message plugnmeet.NatsMsgServerToClient.\n * Use `create(NatsMsgServerToClientSchema)` to create a new message.\n */\nexport const NatsMsgServerToClientSchema: GenMessage<NatsMsgServerToClient> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 2);\n\n/**\n * @generated from message plugnmeet.NatsMsgClientToServer\n */\nexport type NatsMsgClientToServer = Message<\"plugnmeet.NatsMsgClientToServer\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: plugnmeet.NatsMsgClientToServerEvents event = 2;\n */\n event: NatsMsgClientToServerEvents;\n\n /**\n * @generated from field: string msg = 3;\n */\n msg: string;\n\n /**\n * @generated from field: bytes bin_msg = 4;\n */\n binMsg: Uint8Array;\n};\n\n/**\n * Describes the message plugnmeet.NatsMsgClientToServer.\n * Use `create(NatsMsgClientToServerSchema)` to create a new message.\n */\nexport const NatsMsgClientToServerSchema: GenMessage<NatsMsgClientToServer> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 3);\n\n/**\n * @generated from message plugnmeet.NatsKvRoomInfo\n */\nexport type NatsKvRoomInfo = Message<\"plugnmeet.NatsKvRoomInfo\"> & {\n /**\n * @generated from field: uint64 db_table_id = 1 [jstype = JS_STRING];\n */\n dbTableId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 3;\n */\n roomSid: string;\n\n /**\n * @generated from field: string status = 4;\n */\n status: string;\n\n /**\n * @generated from field: uint64 empty_timeout = 5 [jstype = JS_STRING];\n */\n emptyTimeout: string;\n\n /**\n * @generated from field: uint64 max_participants = 6 [jstype = JS_STRING];\n */\n maxParticipants: string;\n\n /**\n * @generated from field: string metadata = 7;\n */\n metadata: string;\n\n /**\n * @generated from field: uint64 created_at = 8 [jstype = JS_STRING];\n */\n createdAt: string;\n};\n\n/**\n * Describes the message plugnmeet.NatsKvRoomInfo.\n * Use `create(NatsKvRoomInfoSchema)` to create a new message.\n */\nexport const NatsKvRoomInfoSchema: GenMessage<NatsKvRoomInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 4);\n\n/**\n * @generated from message plugnmeet.NatsKvUserInfo\n */\nexport type NatsKvUserInfo = Message<\"plugnmeet.NatsKvUserInfo\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string user_sid = 2;\n */\n userSid: string;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_admin = 5;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: bool is_presenter = 6;\n */\n isPresenter: boolean;\n\n /**\n * @generated from field: string metadata = 7;\n */\n metadata: string;\n\n /**\n * @generated from field: uint64 joined_at = 8 [jstype = JS_STRING];\n */\n joinedAt: string;\n\n /**\n * @generated from field: uint64 reconnected_at = 9 [jstype = JS_STRING];\n */\n reconnectedAt: string;\n\n /**\n * @generated from field: uint64 disconnected_at = 10 [jstype = JS_STRING];\n */\n disconnectedAt: string;\n};\n\n/**\n * Describes the message plugnmeet.NatsKvUserInfo.\n * Use `create(NatsKvUserInfoSchema)` to create a new message.\n */\nexport const NatsKvUserInfoSchema: GenMessage<NatsKvUserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 5);\n\n/**\n * @generated from message plugnmeet.TurnCredentials\n */\nexport type TurnCredentials = Message<\"plugnmeet.TurnCredentials\"> & {\n /**\n * @generated from field: string username = 1;\n */\n username: string;\n\n /**\n * @generated from field: string password = 2;\n */\n password: string;\n\n /**\n * @generated from field: repeated string uris = 3;\n */\n uris: string[];\n\n /**\n * @generated from field: bool force_turn = 4;\n */\n forceTurn: boolean;\n\n /**\n * @generated from field: bool fallback_turn = 5;\n */\n fallbackTurn: boolean;\n};\n\n/**\n * Describes the message plugnmeet.TurnCredentials.\n * Use `create(TurnCredentialsSchema)` to create a new message.\n */\nexport const TurnCredentialsSchema: GenMessage<TurnCredentials> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 6);\n\n/**\n * @generated from message plugnmeet.MediaServerConnInfo\n */\nexport type MediaServerConnInfo = Message<\"plugnmeet.MediaServerConnInfo\"> & {\n /**\n * @generated from field: string url = 1;\n */\n url: string;\n\n /**\n * @generated from field: string token = 2;\n */\n token: string;\n\n /**\n * @generated from field: bool enabled_e2ee = 3;\n */\n enabledE2ee: boolean;\n\n /**\n * @generated from field: optional plugnmeet.TurnCredentials turn_credentials = 4;\n */\n turnCredentials?: TurnCredentials;\n};\n\n/**\n * Describes the message plugnmeet.MediaServerConnInfo.\n * Use `create(MediaServerConnInfoSchema)` to create a new message.\n */\nexport const MediaServerConnInfoSchema: GenMessage<MediaServerConnInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 7);\n\n/**\n * @generated from message plugnmeet.NatsInitialData\n */\nexport type NatsInitialData = Message<\"plugnmeet.NatsInitialData\"> & {\n /**\n * @generated from field: plugnmeet.NatsKvRoomInfo room = 1;\n */\n room?: NatsKvRoomInfo;\n\n /**\n * @generated from field: plugnmeet.NatsKvUserInfo local_user = 2;\n */\n localUser?: NatsKvUserInfo;\n};\n\n/**\n * Describes the message plugnmeet.NatsInitialData.\n * Use `create(NatsInitialDataSchema)` to create a new message.\n */\nexport const NatsInitialDataSchema: GenMessage<NatsInitialData> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 8);\n\n/**\n * @generated from message plugnmeet.NatsSystemNotification\n */\nexport type NatsSystemNotification = Message<\"plugnmeet.NatsSystemNotification\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: plugnmeet.NatsSystemNotificationTypes type = 2;\n */\n type: NatsSystemNotificationTypes;\n\n /**\n * @generated from field: string msg = 3;\n */\n msg: string;\n\n /**\n * @generated from field: int64 sent_at = 4 [jstype = JS_STRING];\n */\n sentAt: string;\n\n /**\n * @generated from field: bool with_sound = 5;\n */\n withSound: boolean;\n};\n\n/**\n * Describes the message plugnmeet.NatsSystemNotification.\n * Use `create(NatsSystemNotificationSchema)` to create a new message.\n */\nexport const NatsSystemNotificationSchema: GenMessage<NatsSystemNotification> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 9);\n\n/**\n * @generated from message plugnmeet.NatsUserMetadataUpdate\n */\nexport type NatsUserMetadataUpdate = Message<\"plugnmeet.NatsUserMetadataUpdate\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string metadata = 2;\n */\n metadata: string;\n};\n\n/**\n * Describes the message plugnmeet.NatsUserMetadataUpdate.\n * Use `create(NatsUserMetadataUpdateSchema)` to create a new message.\n */\nexport const NatsUserMetadataUpdateSchema: GenMessage<NatsUserMetadataUpdate> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 10);\n\n/**\n * @generated from message plugnmeet.ChatMessage\n */\nexport type ChatMessage = Message<\"plugnmeet.ChatMessage\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string from_name = 2;\n */\n fromName: string;\n\n /**\n * @generated from field: string from_user_id = 3;\n */\n fromUserId: string;\n\n /**\n * @generated from field: int64 sent_at = 4 [jstype = JS_STRING];\n */\n sentAt: string;\n\n /**\n * @generated from field: optional string to_user_id = 5;\n */\n toUserId?: string;\n\n /**\n * @generated from field: bool is_private = 6;\n */\n isPrivate: boolean;\n\n /**\n * @generated from field: string message = 7;\n */\n message: string;\n\n /**\n * @generated from field: bool from_admin = 8;\n */\n fromAdmin: boolean;\n\n /**\n * @generated from field: optional string source_lang = 9;\n */\n sourceLang?: string;\n\n /**\n * @generated from field: map<string, string> translations = 10;\n */\n translations: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.ChatMessage.\n * Use `create(ChatMessageSchema)` to create a new message.\n */\nexport const ChatMessageSchema: GenMessage<ChatMessage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 11);\n\n/**\n * @generated from enum plugnmeet.NatsMsgServerToClientEvents\n */\nexport enum NatsMsgServerToClientEvents {\n /**\n * initial data\n *\n * @generated from enum value: RES_INITIAL_DATA = 0;\n */\n RES_INITIAL_DATA = 0,\n\n /**\n * @generated from enum value: RES_JOINED_USERS_LIST = 1;\n */\n RES_JOINED_USERS_LIST = 1,\n\n /**\n * @generated from enum value: RES_MEDIA_SERVER_DATA = 2;\n */\n RES_MEDIA_SERVER_DATA = 2,\n\n /**\n * @generated from enum value: ROOM_METADATA_UPDATE = 3;\n */\n ROOM_METADATA_UPDATE = 3,\n\n /**\n * @generated from enum value: USER_METADATA_UPDATE = 4;\n */\n USER_METADATA_UPDATE = 4,\n\n /**\n * @generated from enum value: USER_JOINED = 5;\n */\n USER_JOINED = 5,\n\n /**\n * @generated from enum value: USER_DISCONNECTED = 6;\n */\n USER_DISCONNECTED = 6,\n\n /**\n * @generated from enum value: USER_OFFLINE = 7;\n */\n USER_OFFLINE = 7,\n\n /**\n * @generated from enum value: RESP_RENEW_PNM_TOKEN = 8;\n */\n RESP_RENEW_PNM_TOKEN = 8,\n\n /**\n * @generated from enum value: SYSTEM_NOTIFICATION = 9;\n */\n SYSTEM_NOTIFICATION = 9,\n\n /**\n * @generated from enum value: SESSION_ENDED = 10;\n */\n SESSION_ENDED = 10,\n\n /**\n * @generated from enum value: POLL_CLOSED = 11;\n */\n POLL_CLOSED = 11,\n\n /**\n * @generated from enum value: POLL_CREATED = 12;\n */\n POLL_CREATED = 12,\n\n /**\n * @generated from enum value: JOIN_BREAKOUT_ROOM = 13;\n */\n JOIN_BREAKOUT_ROOM = 13,\n\n /**\n * @generated from enum value: BREAKOUT_ROOM_ENDED = 14;\n */\n BREAKOUT_ROOM_ENDED = 14,\n\n /**\n * mostly system message display in chat\n *\n * @generated from enum value: SYSTEM_CHAT_MSG = 15;\n */\n SYSTEM_CHAT_MSG = 15,\n\n /**\n * @generated from enum value: TRANSCRIPTION_OUTPUT_TEXT = 16;\n */\n TRANSCRIPTION_OUTPUT_TEXT = 16,\n\n /**\n * @generated from enum value: RESP_INSIGHTS_AI_TEXT_CHAT = 17;\n */\n RESP_INSIGHTS_AI_TEXT_CHAT = 17,\n\n /**\n * @generated from enum value: RESP_ONLINE_USERS_LIST = 18;\n */\n RESP_ONLINE_USERS_LIST = 18,\n\n /**\n * @generated from enum value: DELIVERY_PRIVATE_DATA = 19;\n */\n DELIVERY_PRIVATE_DATA = 19,\n\n /**\n * next ID: 21\n *\n * @generated from enum value: PONG = 20;\n */\n PONG = 20,\n}\n\n/**\n * Describes the enum plugnmeet.NatsMsgServerToClientEvents.\n */\nexport const NatsMsgServerToClientEventsSchema: GenEnum<NatsMsgServerToClientEvents> = /*@__PURE__*/\n enumDesc(file_plugnmeet_nats_msg, 0);\n\n/**\n * @generated from enum plugnmeet.NatsMsgClientToServerEvents\n */\nexport enum NatsMsgClientToServerEvents {\n /**\n * @generated from enum value: REQ_INITIAL_DATA = 0;\n */\n REQ_INITIAL_DATA = 0,\n\n /**\n * @generated from enum value: REQ_MEDIA_SERVER_DATA = 1;\n */\n REQ_MEDIA_SERVER_DATA = 1,\n\n /**\n * @generated from enum value: REQ_JOINED_USERS_LIST = 2;\n */\n REQ_JOINED_USERS_LIST = 2,\n\n /**\n * @generated from enum value: REQ_RENEW_PNM_TOKEN = 3;\n */\n REQ_RENEW_PNM_TOKEN = 3,\n\n /**\n * @generated from enum value: PING = 4;\n */\n PING = 4,\n\n /**\n * @generated from enum value: REQ_RAISE_HAND = 5;\n */\n REQ_RAISE_HAND = 5,\n\n /**\n * @generated from enum value: REQ_LOWER_HAND = 6;\n */\n REQ_LOWER_HAND = 6,\n\n /**\n * @generated from enum value: REQ_LOWER_OTHER_USER_HAND = 7;\n */\n REQ_LOWER_OTHER_USER_HAND = 7,\n\n /**\n * @generated from enum value: PUSH_ANALYTICS_DATA = 8;\n */\n PUSH_ANALYTICS_DATA = 8,\n\n /**\n * @generated from enum value: REQ_ONLINE_USERS_LIST = 9;\n */\n REQ_ONLINE_USERS_LIST = 9,\n\n /**\n * next ID: 11\n *\n * @generated from enum value: REQ_PRIVATE_DATA_DELIVERY = 10;\n */\n REQ_PRIVATE_DATA_DELIVERY = 10,\n}\n\n/**\n * Describes the enum plugnmeet.NatsMsgClientToServerEvents.\n */\nexport const NatsMsgClientToServerEventsSchema: GenEnum<NatsMsgClientToServerEvents> = /*@__PURE__*/\n enumDesc(file_plugnmeet_nats_msg, 1);\n\n/**\n * @generated from enum plugnmeet.NatsSystemNotificationTypes\n */\nexport enum NatsSystemNotificationTypes {\n /**\n * @generated from enum value: NATS_SYSTEM_NOTIFICATION_INFO = 0;\n */\n NATS_SYSTEM_NOTIFICATION_INFO = 0,\n\n /**\n * @generated from enum value: NATS_SYSTEM_NOTIFICATION_WARNING = 1;\n */\n NATS_SYSTEM_NOTIFICATION_WARNING = 1,\n\n /**\n * @generated from enum value: NATS_SYSTEM_NOTIFICATION_ERROR = 2;\n */\n NATS_SYSTEM_NOTIFICATION_ERROR = 2,\n}\n\n/**\n * Describes the enum plugnmeet.NatsSystemNotificationTypes.\n */\nexport const NatsSystemNotificationTypesSchema: GenEnum<NatsSystemNotificationTypes> = /*@__PURE__*/\n enumDesc(file_plugnmeet_nats_msg, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_common.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Codec, ParticipantInfo, TrackInfo } from \"./livekit_models_pb\";\nimport { file_livekit_models } from \"./livekit_models_pb\";\nimport type { RoomArtifactWebhookEvent } from \"./plugnmeet_room_artifacts_pb\";\nimport { file_plugnmeet_room_artifacts } from \"./plugnmeet_room_artifacts_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_common.proto.\n */\nexport const file_plugnmeet_common: GenFile = /*@__PURE__*/\n fileDesc(\"ChZwbHVnbm1lZXRfY29tbW9uLnByb3RvEglwbHVnbm1lZXQi1QQKEUNvbW1vbk5vdGlmeUV2ZW50EhIKBWV2ZW50GAEgASgJSACIAQESLQoEcm9vbRgCIAEoCzIaLnBsdWdubWVldC5Ob3RpZnlFdmVudFJvb21IAYgBARIyCgtwYXJ0aWNpcGFudBgDIAEoCzIYLmxpdmVraXQuUGFydGljaXBhbnRJbmZvSAKIAQESOgoOcmVjb3JkaW5nX2luZm8YBCABKAsyHS5wbHVnbm1lZXQuUmVjb3JkaW5nSW5mb0V2ZW50SAOIAQESOgoOc3BlZWNoX3NlcnZpY2UYBSABKAsyHS5wbHVnbm1lZXQuU3BlZWNoU2VydmljZUV2ZW50SASIAQESJgoFdHJhY2sYBiABKAsyEi5saXZla2l0LlRyYWNrSW5mb0gFiAEBEjEKCWFuYWx5dGljcxgHIAEoCzIZLnBsdWdubWVldC5BbmFseXRpY3NFdmVudEgGiAEBEj8KDXJvb21fYXJ0aWZhY3QYCCABKAsyIy5wbHVnbm1lZXQuUm9vbUFydGlmYWN0V2ViaG9va0V2ZW50SAeIAQESDwoCaWQYCSABKAlICIgBARIbCgpjcmVhdGVkX2F0GAogASgDQgIwAUgJiAEBQggKBl9ldmVudEIHCgVfcm9vbUIOCgxfcGFydGljaXBhbnRCEQoPX3JlY29yZGluZ19pbmZvQhEKD19zcGVlY2hfc2VydmljZUIICgZfdHJhY2tCDAoKX2FuYWx5dGljc0IQCg5fcm9vbV9hcnRpZmFjdEIFCgNfaWRCDQoLX2NyZWF0ZWRfYXQi4QIKD05vdGlmeUV2ZW50Um9vbRIQCgNzaWQYASABKAlIAIgBARIUCgdyb29tX2lkGAIgASgJSAGIAQESGgoNZW1wdHlfdGltZW91dBgDIAEoDUgCiAEBEh0KEG1heF9wYXJ0aWNpcGFudHMYBCABKA1IA4gBARIeCg1jcmVhdGlvbl90aW1lGAUgASgEQgIwAUgEiAEBEiYKDmVuYWJsZWRfY29kZWNzGAYgAygLMg4ubGl2ZWtpdC5Db2RlYxIVCghtZXRhZGF0YRgHIAEoCUgFiAEBEh0KEG51bV9wYXJ0aWNpcGFudHMYCCABKA1IBogBAUIGCgRfc2lkQgoKCF9yb29tX2lkQhAKDl9lbXB0eV90aW1lb3V0QhMKEV9tYXhfcGFydGljaXBhbnRzQhAKDl9jcmVhdGlvbl90aW1lQgsKCV9tZXRhZGF0YUITChFfbnVtX3BhcnRpY2lwYW50cyKeAQoSUmVjb3JkaW5nSW5mb0V2ZW50EhEKCXJlY29yZF9pZBgBIAEoCRITCgtyZWNvcmRlcl9pZBgCIAEoCRIUCgxyZWNvcmRlcl9tc2cYAyABKAkSFgoJZmlsZV9wYXRoGAQgASgJSACIAQESFgoJZmlsZV9zaXplGAUgASgCSAGIAQFCDAoKX2ZpbGVfcGF0aEIMCgpfZmlsZV9zaXplIk8KElNwZWVjaFNlcnZpY2VFdmVudBIUCgd1c2VyX2lkGAMgASgJSACIAQESFwoLdG90YWxfdXNhZ2UYBCABKANCAjABQgoKCF91c2VyX2lkIjIKDkFuYWx5dGljc0V2ZW50EhQKB2ZpbGVfaWQYASABKAlIAIgBAUIKCghfZmlsZV9pZEKdAQoNY29tLnBsdWdubWVldEIUUGx1Z25tZWV0Q29tbW9uUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_livekit_models, file_plugnmeet_room_artifacts]);\n\n/**\n * @generated from message plugnmeet.CommonNotifyEvent\n */\nexport type CommonNotifyEvent = Message<\"plugnmeet.CommonNotifyEvent\"> & {\n /**\n * @generated from field: optional string event = 1;\n */\n event?: string;\n\n /**\n * @generated from field: optional plugnmeet.NotifyEventRoom room = 2;\n */\n room?: NotifyEventRoom;\n\n /**\n * @generated from field: optional livekit.ParticipantInfo participant = 3;\n */\n participant?: ParticipantInfo;\n\n /**\n * @generated from field: optional plugnmeet.RecordingInfoEvent recording_info = 4;\n */\n recordingInfo?: RecordingInfoEvent;\n\n /**\n * @generated from field: optional plugnmeet.SpeechServiceEvent speech_service = 5;\n */\n speechService?: SpeechServiceEvent;\n\n /**\n * @generated from field: optional livekit.TrackInfo track = 6;\n */\n track?: TrackInfo;\n\n /**\n * @generated from field: optional plugnmeet.AnalyticsEvent analytics = 7;\n */\n analytics?: AnalyticsEvent;\n\n /**\n * @generated from field: optional plugnmeet.RoomArtifactWebhookEvent room_artifact = 8;\n */\n roomArtifact?: RoomArtifactWebhookEvent;\n\n /**\n * @generated from field: optional string id = 9;\n */\n id?: string;\n\n /**\n * @generated from field: optional int64 created_at = 10 [jstype = JS_STRING];\n */\n createdAt?: string;\n};\n\n/**\n * Describes the message plugnmeet.CommonNotifyEvent.\n * Use `create(CommonNotifyEventSchema)` to create a new message.\n */\nexport const CommonNotifyEventSchema: GenMessage<CommonNotifyEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 0);\n\n/**\n * @generated from message plugnmeet.NotifyEventRoom\n */\nexport type NotifyEventRoom = Message<\"plugnmeet.NotifyEventRoom\"> & {\n /**\n * @generated from field: optional string sid = 1;\n */\n sid?: string;\n\n /**\n * @generated from field: optional string room_id = 2;\n */\n roomId?: string;\n\n /**\n * @generated from field: optional uint32 empty_timeout = 3;\n */\n emptyTimeout?: number;\n\n /**\n * @generated from field: optional uint32 max_participants = 4;\n */\n maxParticipants?: number;\n\n /**\n * @generated from field: optional uint64 creation_time = 5 [jstype = JS_STRING];\n */\n creationTime?: string;\n\n /**\n * @generated from field: repeated livekit.Codec enabled_codecs = 6;\n */\n enabledCodecs: Codec[];\n\n /**\n * @generated from field: optional string metadata = 7;\n */\n metadata?: string;\n\n /**\n * @generated from field: optional uint32 num_participants = 8;\n */\n numParticipants?: number;\n};\n\n/**\n * Describes the message plugnmeet.NotifyEventRoom.\n * Use `create(NotifyEventRoomSchema)` to create a new message.\n */\nexport const NotifyEventRoomSchema: GenMessage<NotifyEventRoom> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 1);\n\n/**\n * @generated from message plugnmeet.RecordingInfoEvent\n */\nexport type RecordingInfoEvent = Message<\"plugnmeet.RecordingInfoEvent\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n\n /**\n * @generated from field: string recorder_id = 2;\n */\n recorderId: string;\n\n /**\n * @generated from field: string recorder_msg = 3;\n */\n recorderMsg: string;\n\n /**\n * @generated from field: optional string file_path = 4;\n */\n filePath?: string;\n\n /**\n * @generated from field: optional float file_size = 5;\n */\n fileSize?: number;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfoEvent.\n * Use `create(RecordingInfoEventSchema)` to create a new message.\n */\nexport const RecordingInfoEventSchema: GenMessage<RecordingInfoEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 2);\n\n/**\n * @generated from message plugnmeet.SpeechServiceEvent\n */\nexport type SpeechServiceEvent = Message<\"plugnmeet.SpeechServiceEvent\"> & {\n /**\n * @generated from field: optional string user_id = 3;\n */\n userId?: string;\n\n /**\n * @generated from field: int64 total_usage = 4 [jstype = JS_STRING];\n */\n totalUsage: string;\n};\n\n/**\n * Describes the message plugnmeet.SpeechServiceEvent.\n * Use `create(SpeechServiceEventSchema)` to create a new message.\n */\nexport const SpeechServiceEventSchema: GenMessage<SpeechServiceEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 3);\n\n/**\n * @generated from message plugnmeet.AnalyticsEvent\n */\nexport type AnalyticsEvent = Message<\"plugnmeet.AnalyticsEvent\"> & {\n /**\n * @generated from field: optional string file_id = 1;\n */\n fileId?: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsEvent.\n * Use `create(AnalyticsEventSchema)` to create a new message.\n */\nexport const AnalyticsEventSchema: GenMessage<AnalyticsEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 4);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_room_artifacts.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_room_artifacts.proto.\n */\nexport const file_plugnmeet_room_artifacts: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5wbHVnbm1lZXRfcm9vbV9hcnRpZmFjdHMucHJvdG8SCXBsdWdubWVldCJTChRSb29tQXJ0aWZhY3RGaWxlSW5mbxIRCglmaWxlX3BhdGgYASABKAkSFQoJZmlsZV9zaXplGAIgASgDQgIwARIRCgltaW1lX3R5cGUYAyABKAkiQAobUm9vbUFydGlmYWN0UHJvdmlkZXJKb2JJbmZvEg4KBmpvYl9pZBgBIAEoCRIRCglmaWxlX25hbWUYAiABKAkiQwoUUm9vbUFydGlmYWN0VXNlckluZm8SDwoHdXNlcl9pZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQFCBwoFX25hbWUixQMKFlJvb21BcnRpZmFjdFRva2VuVXNhZ2USFQoNcHJvbXB0X3Rva2VucxgBIAEoDRIZChFjb21wbGV0aW9uX3Rva2VucxgCIAEoDRIUCgx0b3RhbF90b2tlbnMYAyABKA0SQwoJYnJlYWtkb3duGAQgAygLMjAucGx1Z25tZWV0LlJvb21BcnRpZmFjdFRva2VuVXNhZ2UuQnJlYWtkb3duRW50cnkSKQoccHJvbXB0X3Rva2Vuc19lc3RpbWF0ZWRfY29zdBgFIAEoAUgAiAEBEi0KIGNvbXBsZXRpb25fdG9rZW5zX2VzdGltYXRlZF9jb3N0GAYgASgBSAGIAQESKAobdG90YWxfdG9rZW5zX2VzdGltYXRlZF9jb3N0GAcgASgBSAKIAQEaNAoOQnJlYWtkb3duRW50cnkSCwoDa2V5GAEgASgJEhEKBXZhbHVlGAIgASgDQgIwAToCOAFCHwodX3Byb21wdF90b2tlbnNfZXN0aW1hdGVkX2Nvc3RCIwohX2NvbXBsZXRpb25fdG9rZW5zX2VzdGltYXRlZF9jb3N0Qh4KHF90b3RhbF90b2tlbnNfZXN0aW1hdGVkX2Nvc3Qi+QEKGVJvb21BcnRpZmFjdER1cmF0aW9uVXNhZ2USFAoMZHVyYXRpb25fc2VjGAEgASgNEkYKCWJyZWFrZG93bhgCIAMoCzIzLnBsdWdubWVldC5Sb29tQXJ0aWZhY3REdXJhdGlvblVzYWdlLkJyZWFrZG93bkVudHJ5EigKG2R1cmF0aW9uX3NlY19lc3RpbWF0ZWRfY29zdBgDIAEoAUgAiAEBGjQKDkJyZWFrZG93bkVudHJ5EgsKA2tleRgBIAEoCRIRCgV2YWx1ZRgCIAEoA0ICMAE6AjgBQh4KHF9kdXJhdGlvbl9zZWNfZXN0aW1hdGVkX2Nvc3QikQIKH1Jvb21BcnRpZmFjdENoYXJhY3RlckNvdW50VXNhZ2USGAoQdG90YWxfY2hhcmFjdGVycxgBIAEoDRJMCglicmVha2Rvd24YAiADKAsyOS5wbHVnbm1lZXQuUm9vbUFydGlmYWN0Q2hhcmFjdGVyQ291bnRVc2FnZS5CcmVha2Rvd25FbnRyeRIsCh90b3RhbF9jaGFyYWN0ZXJzX2VzdGltYXRlZF9jb3N0GAMgASgBSACIAQEaNAoOQnJlYWtkb3duRW50cnkSCwoDa2V5GAEgASgJEhEKBXZhbHVlGAIgASgDQgIwAToCOAFCIgogX3RvdGFsX2NoYXJhY3RlcnNfZXN0aW1hdGVkX2Nvc3Qi1wMKFFJvb21BcnRpZmFjdE1ldGFkYXRhEjIKCXVzZXJfaW5mbxgBIAEoCzIfLnBsdWdubWVldC5Sb29tQXJ0aWZhY3RVc2VySW5mbxJBChFwcm92aWRlcl9qb2JfaW5mbxgCIAEoCzImLnBsdWdubWVldC5Sb29tQXJ0aWZhY3RQcm92aWRlckpvYkluZm8SMgoJZmlsZV9pbmZvGAMgASgLMh8ucGx1Z25tZWV0LlJvb21BcnRpZmFjdEZpbGVJbmZvEjgKC3Rva2VuX3VzYWdlGAQgASgLMiEucGx1Z25tZWV0LlJvb21BcnRpZmFjdFRva2VuVXNhZ2VIABI+Cg5kdXJhdGlvbl91c2FnZRgFIAEoCzIkLnBsdWdubWVldC5Sb29tQXJ0aWZhY3REdXJhdGlvblVzYWdlSAASSwoVY2hhcmFjdGVyX2NvdW50X3VzYWdlGAYgASgLMioucGx1Z25tZWV0LlJvb21BcnRpZmFjdENoYXJhY3RlckNvdW50VXNhZ2VIABIiChVyZWZlcmVuY2VfYXJ0aWZhY3RfaWQYCiABKAlIAYgBAUIPCg11c2FnZV9kZXRhaWxzQhgKFl9yZWZlcmVuY2VfYXJ0aWZhY3RfaWQijQEKGFJvb21BcnRpZmFjdFdlYmhvb2tFdmVudBIpCgR0eXBlGAEgASgOMhsucGx1Z25tZWV0LlJvb21BcnRpZmFjdFR5cGUSEwoLYXJ0aWZhY3RfaWQYAiABKAkSMQoIbWV0YWRhdGEYAyABKAsyHy5wbHVnbm1lZXQuUm9vbUFydGlmYWN0TWV0YWRhdGEqrQIKEFJvb21BcnRpZmFjdFR5cGUSFAoQVU5LTk9XTl9BUlRJRkFDVBAAEhUKEU1FRVRJTkdfQU5BTFlUSUNTEAESEwoPTUVFVElOR19TVU1NQVJZEAISGQoVTUVFVElOR19TVU1NQVJZX1VTQUdFEAMSGAoUU1BFRUNIX1RSQU5TQ1JJUFRJT04QBBIeChpTUEVFQ0hfVFJBTlNDUklQVElPTl9VU0FHRRAFEhwKGFNZTlRIRVNJWkVEX1NQRUVDSF9VU0FHRRAGEhoKFkNIQVRfVFJBTlNMQVRJT05fVVNBR0UQBxIiCh5BSV9URVhUX0NIQVRfSU5URVJBQ1RJT05fVVNBR0UQCBIkCiBBSV9URVhUX0NIQVRfU1VNTUFSSVpBVElPTl9VU0FHRRAJQqQBCg1jb20ucGx1Z25tZWV0QhtQbHVnbm1lZXRSb29tQXJ0aWZhY3RzUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * FileInfo contains details about a generated file artifact.\n *\n * @generated from message plugnmeet.RoomArtifactFileInfo\n */\nexport type RoomArtifactFileInfo = Message<\"plugnmeet.RoomArtifactFileInfo\"> & {\n /**\n * @generated from field: string file_path = 1;\n */\n filePath: string;\n\n /**\n * @generated from field: int64 file_size = 2 [jstype = JS_STRING];\n */\n fileSize: string;\n\n /**\n * @generated from field: string mime_type = 3;\n */\n mimeType: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactFileInfo.\n * Use `create(RoomArtifactFileInfoSchema)` to create a new message.\n */\nexport const RoomArtifactFileInfoSchema: GenMessage<RoomArtifactFileInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 0);\n\n/**\n * ProviderJobInfo contains details about an asynchronous job sent to a provider.\n *\n * @generated from message plugnmeet.RoomArtifactProviderJobInfo\n */\nexport type RoomArtifactProviderJobInfo = Message<\"plugnmeet.RoomArtifactProviderJobInfo\"> & {\n /**\n * @generated from field: string job_id = 1;\n */\n jobId: string;\n\n /**\n * @generated from field: string file_name = 2;\n */\n fileName: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactProviderJobInfo.\n * Use `create(RoomArtifactProviderJobInfoSchema)` to create a new message.\n */\nexport const RoomArtifactProviderJobInfoSchema: GenMessage<RoomArtifactProviderJobInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 1);\n\n/**\n * UserInfo contains details about the user associated with an artifact.\n *\n * @generated from message plugnmeet.RoomArtifactUserInfo\n */\nexport type RoomArtifactUserInfo = Message<\"plugnmeet.RoomArtifactUserInfo\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: optional string name = 2;\n */\n name?: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactUserInfo.\n * Use `create(RoomArtifactUserInfoSchema)` to create a new message.\n */\nexport const RoomArtifactUserInfoSchema: GenMessage<RoomArtifactUserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 2);\n\n/**\n * @generated from message plugnmeet.RoomArtifactTokenUsage\n */\nexport type RoomArtifactTokenUsage = Message<\"plugnmeet.RoomArtifactTokenUsage\"> & {\n /**\n * @generated from field: uint32 prompt_tokens = 1;\n */\n promptTokens: number;\n\n /**\n * @generated from field: uint32 completion_tokens = 2;\n */\n completionTokens: number;\n\n /**\n * @generated from field: uint32 total_tokens = 3;\n */\n totalTokens: number;\n\n /**\n * @generated from field: map<string, int64> breakdown = 4;\n */\n breakdown: { [key: string]: bigint };\n\n /**\n * @generated from field: optional double prompt_tokens_estimated_cost = 5;\n */\n promptTokensEstimatedCost?: number;\n\n /**\n * @generated from field: optional double completion_tokens_estimated_cost = 6;\n */\n completionTokensEstimatedCost?: number;\n\n /**\n * @generated from field: optional double total_tokens_estimated_cost = 7;\n */\n totalTokensEstimatedCost?: number;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactTokenUsage.\n * Use `create(RoomArtifactTokenUsageSchema)` to create a new message.\n */\nexport const RoomArtifactTokenUsageSchema: GenMessage<RoomArtifactTokenUsage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 3);\n\n/**\n * @generated from message plugnmeet.RoomArtifactDurationUsage\n */\nexport type RoomArtifactDurationUsage = Message<\"plugnmeet.RoomArtifactDurationUsage\"> & {\n /**\n * @generated from field: uint32 duration_sec = 1;\n */\n durationSec: number;\n\n /**\n * @generated from field: map<string, int64> breakdown = 2;\n */\n breakdown: { [key: string]: bigint };\n\n /**\n * @generated from field: optional double duration_sec_estimated_cost = 3;\n */\n durationSecEstimatedCost?: number;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactDurationUsage.\n * Use `create(RoomArtifactDurationUsageSchema)` to create a new message.\n */\nexport const RoomArtifactDurationUsageSchema: GenMessage<RoomArtifactDurationUsage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 4);\n\n/**\n * @generated from message plugnmeet.RoomArtifactCharacterCountUsage\n */\nexport type RoomArtifactCharacterCountUsage = Message<\"plugnmeet.RoomArtifactCharacterCountUsage\"> & {\n /**\n * @generated from field: uint32 total_characters = 1;\n */\n totalCharacters: number;\n\n /**\n * @generated from field: map<string, int64> breakdown = 2;\n */\n breakdown: { [key: string]: bigint };\n\n /**\n * @generated from field: optional double total_characters_estimated_cost = 3;\n */\n totalCharactersEstimatedCost?: number;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactCharacterCountUsage.\n * Use `create(RoomArtifactCharacterCountUsageSchema)` to create a new message.\n */\nexport const RoomArtifactCharacterCountUsageSchema: GenMessage<RoomArtifactCharacterCountUsage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 5);\n\n/**\n * RoomArtifactMetadata is the universal structure for the 'metadata' JSON field\n * in the pnm_room_artifacts table. All fields are optional.\n *\n * @generated from message plugnmeet.RoomArtifactMetadata\n */\nexport type RoomArtifactMetadata = Message<\"plugnmeet.RoomArtifactMetadata\"> & {\n /**\n * Optional: Information about the user who initiated or is associated with the artifact.\n *\n * @generated from field: plugnmeet.RoomArtifactUserInfo user_info = 1;\n */\n userInfo?: RoomArtifactUserInfo;\n\n /**\n * Optional: Information about an asynchronous provider job.\n *\n * @generated from field: plugnmeet.RoomArtifactProviderJobInfo provider_job_info = 2;\n */\n providerJobInfo?: RoomArtifactProviderJobInfo;\n\n /**\n * Optional: Information about the final generated file artifact.\n *\n * @generated from field: plugnmeet.RoomArtifactFileInfo file_info = 3;\n */\n fileInfo?: RoomArtifactFileInfo;\n\n /**\n * A field for different types of usage metrics.\n *\n * @generated from oneof plugnmeet.RoomArtifactMetadata.usage_details\n */\n usageDetails: {\n /**\n * @generated from field: plugnmeet.RoomArtifactTokenUsage token_usage = 4;\n */\n value: RoomArtifactTokenUsage;\n case: \"tokenUsage\";\n } | {\n /**\n * @generated from field: plugnmeet.RoomArtifactDurationUsage duration_usage = 5;\n */\n value: RoomArtifactDurationUsage;\n case: \"durationUsage\";\n } | {\n /**\n * @generated from field: plugnmeet.RoomArtifactCharacterCountUsage character_count_usage = 6;\n */\n value: RoomArtifactCharacterCountUsage;\n case: \"characterCountUsage\";\n } | { case: undefined; value?: undefined };\n\n /**\n * A field to link a file artifact back to its usage artifact.\n *\n * @generated from field: optional string reference_artifact_id = 10;\n */\n referenceArtifactId?: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactMetadata.\n * Use `create(RoomArtifactMetadataSchema)` to create a new message.\n */\nexport const RoomArtifactMetadataSchema: GenMessage<RoomArtifactMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 6);\n\n/**\n * Webhook-specific Messages\n *\n * @generated from message plugnmeet.RoomArtifactWebhookEvent\n */\nexport type RoomArtifactWebhookEvent = Message<\"plugnmeet.RoomArtifactWebhookEvent\"> & {\n /**\n * @generated from field: plugnmeet.RoomArtifactType type = 1;\n */\n type: RoomArtifactType;\n\n /**\n * @generated from field: string artifact_id = 2;\n */\n artifactId: string;\n\n /**\n * @generated from field: plugnmeet.RoomArtifactMetadata metadata = 3;\n */\n metadata?: RoomArtifactMetadata;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactWebhookEvent.\n * Use `create(RoomArtifactWebhookEventSchema)` to create a new message.\n */\nexport const RoomArtifactWebhookEventSchema: GenMessage<RoomArtifactWebhookEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 7);\n\n/**\n * @generated from enum plugnmeet.RoomArtifactType\n */\nexport enum RoomArtifactType {\n /**\n * @generated from enum value: UNKNOWN_ARTIFACT = 0;\n */\n UNKNOWN_ARTIFACT = 0,\n\n /**\n * @generated from enum value: MEETING_ANALYTICS = 1;\n */\n MEETING_ANALYTICS = 1,\n\n /**\n * @generated from enum value: MEETING_SUMMARY = 2;\n */\n MEETING_SUMMARY = 2,\n\n /**\n * @generated from enum value: MEETING_SUMMARY_USAGE = 3;\n */\n MEETING_SUMMARY_USAGE = 3,\n\n /**\n * @generated from enum value: SPEECH_TRANSCRIPTION = 4;\n */\n SPEECH_TRANSCRIPTION = 4,\n\n /**\n * @generated from enum value: SPEECH_TRANSCRIPTION_USAGE = 5;\n */\n SPEECH_TRANSCRIPTION_USAGE = 5,\n\n /**\n * @generated from enum value: SYNTHESIZED_SPEECH_USAGE = 6;\n */\n SYNTHESIZED_SPEECH_USAGE = 6,\n\n /**\n * @generated from enum value: CHAT_TRANSLATION_USAGE = 7;\n */\n CHAT_TRANSLATION_USAGE = 7,\n\n /**\n * @generated from enum value: AI_TEXT_CHAT_INTERACTION_USAGE = 8;\n */\n AI_TEXT_CHAT_INTERACTION_USAGE = 8,\n\n /**\n * @generated from enum value: AI_TEXT_CHAT_SUMMARIZATION_USAGE = 9;\n */\n AI_TEXT_CHAT_SUMMARIZATION_USAGE = 9,\n}\n\n/**\n * Describes the enum plugnmeet.RoomArtifactType.\n */\nexport const RoomArtifactTypeSchema: GenEnum<RoomArtifactType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_room_artifacts, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_create_room.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { LockSettings } from \"./plugnmeet_gen_token_pb\";\nimport { file_plugnmeet_gen_token } from \"./plugnmeet_gen_token_pb\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { IngressInput } from \"./plugnmeet_ingress_pb\";\nimport { file_plugnmeet_ingress } from \"./plugnmeet_ingress_pb\";\nimport type { ActiveRoomInfo } from \"./plugnmeet_auth_room_pb\";\nimport { file_plugnmeet_auth_room } from \"./plugnmeet_auth_room_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_create_room.proto.\n */\nexport const file_plugnmeet_create_room: GenFile = /*@__PURE__*/\n fileDesc(\"ChtwbHVnbm1lZXRfY3JlYXRlX3Jvb20ucHJvdG8SCXBsdWdubWVldCLMAgoNQ3JlYXRlUm9vbVJlcRKTAQoHcm9vbV9pZBgBIAEoCUKBAbpIfroBewoOcm9vbV9pZF9mb3JtYXQSR3Jvb21faWQgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBsZXR0ZXJzIChhLXogQS1aKSwgZGlnaXRzICgwLTkpIG9yIC1fGiB0aGlzLm1hdGNoZXMoJ15bYS16QS1aMC05LV9dKyQnKRIjCg1lbXB0eV90aW1lb3V0GAIgASgNQge6SAQqAiAASACIAQESJgoQbWF4X3BhcnRpY2lwYW50cxgDIAEoDUIHukgEKgIgAEgBiAEBEjEKCG1ldGFkYXRhGAQgASgLMhcucGx1Z25tZWV0LlJvb21NZXRhZGF0YUIGukgDyAEBQhAKDl9lbXB0eV90aW1lb3V0QhMKEV9tYXhfcGFydGljaXBhbnRzItYGCgxSb29tTWV0YWRhdGESGgoKcm9vbV90aXRsZRgBIAEoCUIGukgDyAEBEhwKD3dlbGNvbWVfbWVzc2FnZRgCIAEoCUgAiAEBEh0KDGlzX3JlY29yZGluZxgDIAEoCEIHukgEagIIABIfCg5pc19hY3RpdmVfcnRtcBgEIAEoCEIHukgEagIIABJ2Cg5wYXJlbnRfcm9vbV9pZBgFIAEoCUJeukhbugFYChVwYXJlbnRfcm9vbV9pZF9mb3JtYXQSK3BhcmVudF9yb29tX2lkIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKRIhChBpc19icmVha291dF9yb29tGAYgASgIQge6SARqAggAEiIKC3dlYmhvb2tfdXJsGAcgASgJQgi6SAVyA4gBAUgBiAEBEh0KCnN0YXJ0ZWRfYXQYCCABKARCCTABukgEMgIIABIhCgpsb2dvdXRfdXJsGAkgASgJQgi6SAVyA4gBAUgCiAEBEjwKDXJvb21fZmVhdHVyZXMYCiABKAsyHS5wbHVnbm1lZXQuUm9vbUNyZWF0ZUZlYXR1cmVzQga6SAPIAQESNgoVZGVmYXVsdF9sb2NrX3NldHRpbmdzGAsgASgLMhcucGx1Z25tZWV0LkxvY2tTZXR0aW5ncxIwCg5jb3B5cmlnaHRfY29uZhgMIAEoCzIYLnBsdWdubWVldC5Db3B5cmlnaHRDb25mEnIKC21ldGFkYXRhX2lkGA0gASgJQli6SFW6AVIKEm1ldGFkYXRhX2lkX2Zvcm1hdBIobWV0YWRhdGFfaWQgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSAOIAQESOgoKZXh0cmFfZGF0YRgOIAMoCzImLnBsdWdubWVldC5Sb29tTWV0YWRhdGEuRXh0cmFEYXRhRW50cnkaMAoORXh0cmFEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfd2VsY29tZV9tZXNzYWdlQg4KDF93ZWJob29rX3VybEINCgtfbG9nb3V0X3VybEIOCgxfbWV0YWRhdGFfaWQi/QoKElJvb21DcmVhdGVGZWF0dXJlcxIVCg1hbGxvd193ZWJjYW1zGAEgASgIEhUKDW11dGVfb25fc3RhcnQYAiABKAgSGgoSYWxsb3dfc2NyZWVuX3NoYXJlGAMgASgIEhIKCmFsbG93X3J0bXAYBCABKAgSIAoYYWxsb3dfdmlld19vdGhlcl93ZWJjYW1zGAUgASgIEiMKG2FsbG93X3ZpZXdfb3RoZXJfdXNlcnNfbGlzdBgGIAEoCBIaChJhZG1pbl9vbmx5X3dlYmNhbXMYByABKAgSHAoLYWxsb3dfcG9sbHMYCCABKAhCAhgBSACIAQESHgoNcm9vbV9kdXJhdGlvbhgJIAEoBEICMAFIAYgBARIYChBlbmFibGVfYW5hbHl0aWNzGAogASgIEh0KEGFsbG93X3ZpcnR1YWxfYmcYCyABKAhIAogBARIdChBhbGxvd19yYWlzZV9oYW5kGAwgASgISAOIAQESHQoQYXV0b19nZW5fdXNlcl9pZBgNIAEoCEgEiAEBEjgKEnJlY29yZGluZ19mZWF0dXJlcxgOIAEoCzIcLnBsdWdubWVldC5SZWNvcmRpbmdGZWF0dXJlcxIuCg1jaGF0X2ZlYXR1cmVzGA8gASgLMhcucGx1Z25tZWV0LkNoYXRGZWF0dXJlcxJCChhzaGFyZWRfbm90ZV9wYWRfZmVhdHVyZXMYECABKAsyIC5wbHVnbm1lZXQuU2hhcmVkTm90ZVBhZEZlYXR1cmVzEjoKE3doaXRlYm9hcmRfZmVhdHVyZXMYESABKAsyHS5wbHVnbm1lZXQuV2hpdGVib2FyZEZlYXR1cmVzEk4KHmV4dGVybmFsX21lZGlhX3BsYXllcl9mZWF0dXJlcxgSIAEoCzImLnBsdWdubWVldC5FeHRlcm5hbE1lZGlhUGxheWVyRmVhdHVyZXMSPQoVd2FpdGluZ19yb29tX2ZlYXR1cmVzGBMgASgLMh4ucGx1Z25tZWV0LldhaXRpbmdSb29tRmVhdHVyZXMSPwoWYnJlYWtvdXRfcm9vbV9mZWF0dXJlcxgUIAEoCzIfLnBsdWdubWVldC5CcmVha291dFJvb21GZWF0dXJlcxJOCh5kaXNwbGF5X2V4dGVybmFsX2xpbmtfZmVhdHVyZXMYFSABKAsyJi5wbHVnbm1lZXQuRGlzcGxheUV4dGVybmFsTGlua0ZlYXR1cmVzEjQKEGluZ3Jlc3NfZmVhdHVyZXMYFiABKAsyGi5wbHVnbm1lZXQuSW5ncmVzc0ZlYXR1cmVzElsKI3NwZWVjaF90b190ZXh0X3RyYW5zbGF0aW9uX2ZlYXR1cmVzGBcgASgLMioucGx1Z25tZWV0LlNwZWVjaFRvVGV4dFRyYW5zbGF0aW9uRmVhdHVyZXNCAhgBEk0KHmVuZF90b19lbmRfZW5jcnlwdGlvbl9mZWF0dXJlcxgYIAEoCzIlLnBsdWdubWVldC5FbmRUb0VuZEVuY3J5cHRpb25GZWF0dXJlcxIwCg5wb2xsc19mZWF0dXJlcxgZIAEoCzIYLnBsdWdubWVldC5Qb2xsc0ZlYXR1cmVzEjYKEWluc2lnaHRzX2ZlYXR1cmVzGBogASgLMhsucGx1Z25tZWV0Lkluc2lnaHRzRmVhdHVyZXMSOgoUc2lwX2RpYWxfaW5fZmVhdHVyZXMYGyABKAsyHC5wbHVnbm1lZXQuU2lwRGlhbEluRmVhdHVyZXNCDgoMX2FsbG93X3BvbGxzQhAKDl9yb29tX2R1cmF0aW9uQhMKEV9hbGxvd192aXJ0dWFsX2JnQhMKEV9hbGxvd19yYWlzZV9oYW5kQhMKEV9hdXRvX2dlbl91c2VyX2lkIvIBCgxDaGF0RmVhdHVyZXMSGwoKYWxsb3dfY2hhdBgBIAEoCEICGAFIAIgBARIiChFhbGxvd19maWxlX3VwbG9hZBgCIAEoCEICGAFIAYgBARIQCghpc19hbGxvdxgFIAEoCBIcChRpc19hbGxvd19maWxlX3VwbG9hZBgGIAEoCBIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYAyADKAkSHgoNbWF4X2ZpbGVfc2l6ZRgEIAEoBEICMAFIAogBAUINCgtfYWxsb3dfY2hhdEIUChJfYWxsb3dfZmlsZV91cGxvYWRCEAoOX21heF9maWxlX3NpemUizwQKFVNoYXJlZE5vdGVQYWRGZWF0dXJlcxIoChdhbGxvd2VkX3NoYXJlZF9ub3RlX3BhZBgBIAEoCEICGAFIAIgBARIQCghpc19hbGxvdxgIIAEoCBIaCglpc19hY3RpdmUYAiABKAhCB7pIBGoCCAASGAoHdmlzaWJsZRgDIAEoCEIHukgEagIIABJhCgdub2RlX2lkGAQgASgJQlC6SE26AUoKDm5vZGVfaWRfZm9ybWF0EiRub2RlX2lkIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKRJYCgRob3N0GAUgASgJQkq6SEe6AUQKC2hvc3RfZm9ybWF0EiFob3N0IHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKRJtCgtub3RlX3BhZF9pZBgGIAEoCUJYukhVugFSChJub3RlX3BhZF9pZF9mb3JtYXQSKG5vdGVfcGFkX2lkIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKRJ8ChByZWFkX29ubHlfcGFkX2lkGAcgASgJQmK6SF+6AVwKF3JlYWRfb25seV9wYWRfaWRfZm9ybWF0Ei1yZWFkX29ubHlfcGFkX2lkIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKUIaChhfYWxsb3dlZF9zaGFyZWRfbm90ZV9wYWQi5wQKEldoaXRlYm9hcmRGZWF0dXJlcxIjChJhbGxvd2VkX3doaXRlYm9hcmQYASABKAhCAhgBSACIAQESEAoIaXNfYWxsb3cYCSABKAgSGAoHdmlzaWJsZRgCIAEoCEIHukgEagIIABIjCgxwcmVsb2FkX2ZpbGUYAyABKAlCCLpIBXIDiAEBSAGIAQESggEKEndoaXRlYm9hcmRfZmlsZV9pZBgEIAEoCUJmukhjugFgChl3aGl0ZWJvYXJkX2ZpbGVfaWRfZm9ybWF0Ei93aGl0ZWJvYXJkX2ZpbGVfaWQgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpEmcKCWZpbGVfbmFtZRgFIAEoCUJUukhRugFOChBmaWxlX25hbWVfZm9ybWF0EiZmaWxlX25hbWUgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpEmcKCWZpbGVfcGF0aBgGIAEoCUJUukhRugFOChBmaWxlX3BhdGhfZm9ybWF0EiZmaWxlX3BhdGggc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpEhMKC3RvdGFsX3BhZ2VzGAcgASgNEi0KFW1heF9hbGxvd2VkX2ZpbGVfc2l6ZRgIIAEoBEIJMAG6SAQyAggASAKIAQFCFQoTX2FsbG93ZWRfd2hpdGVib2FyZEIPCg1fcHJlbG9hZF9maWxlQhgKFl9tYXhfYWxsb3dlZF9maWxlX3NpemUi/QIKG0V4dGVybmFsTWVkaWFQbGF5ZXJGZWF0dXJlcxIuCh1hbGxvd2VkX2V4dGVybmFsX21lZGlhX3BsYXllchgBIAEoCEICGAFIAIgBARIQCghpc19hbGxvdxgFIAEoCBIaCglpc19hY3RpdmUYAiABKAhCB7pIBGoCCAASbAoJc2hhcmVkX2J5GAMgASgJQlS6SFG6AU4KEHNoYXJlZF9ieV9mb3JtYXQSJnNoYXJlZF9ieSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJylIAYgBARJaCgN1cmwYBCABKAlCSLpIRboBQgoKdXJsX2Zvcm1hdBIgdXJsIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKUgCiAEBQiAKHl9hbGxvd2VkX2V4dGVybmFsX21lZGlhX3BsYXllckIMCgpfc2hhcmVkX2J5QgYKBF91cmwiQgoTV2FpdGluZ1Jvb21GZWF0dXJlcxIRCglpc19hY3RpdmUYASABKAgSGAoQd2FpdGluZ19yb29tX21zZxgCIAEoCSJiChRCcmVha291dFJvb21GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIaCglpc19hY3RpdmUYAiABKAhCB7pIBGoCCAASHAoUYWxsb3dlZF9udW1iZXJfcm9vbXMYAyABKA0ijQEKG0Rpc3BsYXlFeHRlcm5hbExpbmtGZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIaCglpc19hY3RpdmUYAiABKAhCB7pIBGoCCAASEQoEbGluaxgDIAEoCUgAiAEBEhYKCXNoYXJlZF9ieRgEIAEoCUgBiAEBQgcKBV9saW5rQgwKCl9zaGFyZWRfYnkinQEKEVJlY29yZGluZ0ZlYXR1cmVzEhAKCGlzX2FsbG93GAEgASgIEhYKDmlzX2FsbG93X2Nsb3VkGAIgASgIEiMKG2VuYWJsZV9hdXRvX2Nsb3VkX3JlY29yZGluZxgDIAEoCBIWCg5pc19hbGxvd19sb2NhbBgEIAEoCBIhChlvbmx5X3JlY29yZF9hZG1pbl93ZWJjYW1zGAUgASgIIpMCCg9JbmdyZXNzRmVhdHVyZXMSEAoIaXNfYWxsb3cYASABKAgSKwoKaW5wdXRfdHlwZRgCIAEoDjIXLnBsdWdubWVldC5JbmdyZXNzSW5wdXQSVQoDdXJsGAMgASgJQki6SEW6AUIKCnVybF9mb3JtYXQSIHVybCBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJykSagoKc3RyZWFtX2tleRgEIAEoCUJWukhTugFQChFzdHJlYW1fa2V5X2Zvcm1hdBInc3RyZWFtX2tleSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJyki5wMKH1NwZWVjaFRvVGV4dFRyYW5zbGF0aW9uRmVhdHVyZXMSEAoIaXNfYWxsb3cYASABKAgSHAoUaXNfYWxsb3dfdHJhbnNsYXRpb24YAiABKAgSGwoKaXNfZW5hYmxlZBgDIAEoCEIHukgEagIIABInChZpc19lbmFibGVkX3RyYW5zbGF0aW9uGAQgASgIQge6SARqAggAEioKIm1heF9udW1fdHJhbl9sYW5nc19hbGxvd19zZWxlY3RpbmcYCyABKAUSJgoUYWxsb3dlZF9zcGVlY2hfbGFuZ3MYByADKAlCCLpIBZIBAhAAEiYKFGFsbG93ZWRfc3BlZWNoX3VzZXJzGAggAygJQgi6SAWSAQIQABIlChNhbGxvd2VkX3RyYW5zX2xhbmdzGAkgAygJQgi6SAWSAQIQABKQAQoVZGVmYXVsdF9zdWJ0aXRsZV9sYW5nGAogASgJQmy6SGm6AWYKHGRlZmF1bHRfc3VidGl0bGVfbGFuZ19mb3JtYXQSMmRlZmF1bHRfc3VidGl0bGVfbGFuZyBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJylIAIgBAUIYChZfZGVmYXVsdF9zdWJ0aXRsZV9sYW5nIqkCChpFbmRUb0VuZEVuY3J5cHRpb25GZWF0dXJlcxISCgppc19lbmFibGVkGAEgASgIEh4KFmluY2x1ZGVkX2NoYXRfbWVzc2FnZXMYAiABKAgSGwoTaW5jbHVkZWRfd2hpdGVib2FyZBgDIAEoCBIqCiJlbmFibGVkX3NlbGZfaW5zZXJ0X2VuY3J5cHRpb25fa2V5GAUgASgIEnsKDmVuY3J5cHRpb25fa2V5GAQgASgJQl66SFu6AVgKFWVuY3J5cHRpb25fa2V5X2Zvcm1hdBIrZW5jcnlwdGlvbl9rZXkgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSACIAQFCEQoPX2VuY3J5cHRpb25fa2V5Ij0KDVBvbGxzRmVhdHVyZXMSEAoIaXNfYWxsb3cYASABKAgSGgoJaXNfYWN0aXZlGAIgASgIQge6SARqAggAIpwDChFTaXBEaWFsSW5GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIgChhlbmFibGVfZGlhbF9pbl9vbl9jcmVhdGUYAiABKAgSGQoRaGlkZV9waG9uZV9udW1iZXIYAyABKAgSGgoJaXNfYWN0aXZlGAQgASgIQge6SARqAggAEh8KDXBob25lX251bWJlcnMYBSADKAlCCLpIBZIBAhAAEloKA3BpbhgGIAEoCUJIukhFugFCCgpwaW5fZm9ybWF0EiBwaW4gc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSACIAQESgQEKEGRpc3BhdGNoX3J1bGVfaWQYByABKAlCYrpIX7oBXAoXZGlzcGF0Y2hfcnVsZV9pZF9mb3JtYXQSLWRpc3BhdGNoX3J1bGVfaWQgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSAGIAQFCBgoEX3BpbkITChFfZGlzcGF0Y2hfcnVsZV9pZCLJAgoQSW5zaWdodHNGZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBJNChZ0cmFuc2NyaXB0aW9uX2ZlYXR1cmVzGAIgASgLMigucGx1Z25tZWV0Lkluc2lnaHRzVHJhbnNjcmlwdGlvbkZlYXR1cmVzSACIAQESUgoZY2hhdF90cmFuc2xhdGlvbl9mZWF0dXJlcxgDIAEoCzIqLnBsdWdubWVldC5JbnNpZ2h0c0NoYXRUcmFuc2xhdGlvbkZlYXR1cmVzSAGIAQESNwoLYWlfZmVhdHVyZXMYBCABKAsyHS5wbHVnbm1lZXQuSW5zaWdodHNBSUZlYXR1cmVzSAKIAQFCGQoXX3RyYW5zY3JpcHRpb25fZmVhdHVyZXNCHAoaX2NoYXRfdHJhbnNsYXRpb25fZmVhdHVyZXNCDgoMX2FpX2ZlYXR1cmVzIrUECh1JbnNpZ2h0c1RyYW5zY3JpcHRpb25GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIcChRpc19hbGxvd190cmFuc2xhdGlvbhgCIAEoCBIhChlpc19hbGxvd19zcGVlY2hfc3ludGhlc2lzGAMgASgIEhsKCmlzX2VuYWJsZWQYBCABKAhCB7pIBGoCCAASJgoUYWxsb3dlZF9zcG9rZW5fbGFuZ3MYBSADKAlCCLpIBZIBAhAAEiYKFGFsbG93ZWRfc3BlZWNoX3VzZXJzGAYgAygJQgi6SAWSAQIQABInChZpc19lbmFibGVkX3RyYW5zbGF0aW9uGAcgASgIQge6SARqAggAEikKGG1heF9zZWxlY3RlZF90cmFuc19sYW5ncxgIIAEoBUIHukgEGgIIABIlChNhbGxvd2VkX3RyYW5zX2xhbmdzGAkgAygJQgi6SAWSAQIQABKQAQoVZGVmYXVsdF9zdWJ0aXRsZV9sYW5nGAogASgJQmy6SGm6AWYKHGRlZmF1bHRfc3VidGl0bGVfbGFuZ19mb3JtYXQSMmRlZmF1bHRfc3VidGl0bGVfbGFuZyBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJylIAIgBARIsChtpc19lbmFibGVkX3NwZWVjaF9zeW50aGVzaXMYCyABKAhCB7pIBGoCCABCGAoWX2RlZmF1bHRfc3VidGl0bGVfbGFuZyKqAgofSW5zaWdodHNDaGF0VHJhbnNsYXRpb25GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIbCgppc19lbmFibGVkGAIgASgIQge6SARqAggAEiUKE2FsbG93ZWRfdHJhbnNfbGFuZ3MYAyADKAlCCLpIBZIBAhAAEikKGG1heF9zZWxlY3RlZF90cmFuc19sYW5ncxgEIAEoBUIHukgEGgIIABJ1CgxkZWZhdWx0X2xhbmcYBSABKAlCWrpIV7oBVAoTZGVmYXVsdF9sYW5nX2Zvcm1hdBIpZGVmYXVsdF9sYW5nIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKUgAiAEBQg8KDV9kZWZhdWx0X2xhbmcijgIKEkluc2lnaHRzQUlGZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBJJChVhaV90ZXh0X2NoYXRfZmVhdHVyZXMYAiABKAsyJS5wbHVnbm1lZXQuSW5zaWdodHNBSVRleHRDaGF0RmVhdHVyZXNIAIgBARJeCh5tZWV0aW5nX3N1bW1hcml6YXRpb25fZmVhdHVyZXMYAyABKAsyMS5wbHVnbm1lZXQuSW5zaWdodHNBSU1lZXRpbmdTdW1tYXJpemF0aW9uRmVhdHVyZXNIAYgBAUIYChZfYWlfdGV4dF9jaGF0X2ZlYXR1cmVzQiEKH19tZWV0aW5nX3N1bW1hcml6YXRpb25fZmVhdHVyZXMilQEKGkluc2lnaHRzQUlUZXh0Q2hhdEZlYXR1cmVzEhAKCGlzX2FsbG93GAEgASgIEhsKCmlzX2VuYWJsZWQYAiABKAhCB7pIBGoCCAASJAoTaXNfYWxsb3dlZF9ldmVyeW9uZRgDIAEoCEIHukgEagIIABIiChBhbGxvd2VkX3VzZXJfaWRzGAQgAygJQgi6SAWSAQIQACJ1CiZJbnNpZ2h0c0FJTWVldGluZ1N1bW1hcml6YXRpb25GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIcChRzdW1tYXJpemF0aW9uX3Byb21wdBgCIAEoCRIbCgppc19lbmFibGVkGAMgASgIQge6SARqAggAIi4KDUNvcHlyaWdodENvbmYSDwoHZGlzcGxheRgBIAEoCBIMCgR0ZXh0GAMgASgJIloKDUNyZWF0ZVJvb21SZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIsCglyb29tX2luZm8YAyABKAsyGS5wbHVnbm1lZXQuQWN0aXZlUm9vbUluZm9CoQEKDWNvbS5wbHVnbm1lZXRCGFBsdWdubWVldENyZWF0ZVJvb21Qcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\", [file_plugnmeet_gen_token, file_buf_validate_validate, file_plugnmeet_ingress, file_plugnmeet_auth_room]);\n\n/**\n * @generated from message plugnmeet.CreateRoomReq\n */\nexport type CreateRoomReq = Message<\"plugnmeet.CreateRoomReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: optional uint32 empty_timeout = 2;\n */\n emptyTimeout?: number;\n\n /**\n * @generated from field: optional uint32 max_participants = 3;\n */\n maxParticipants?: number;\n\n /**\n * @generated from field: plugnmeet.RoomMetadata metadata = 4;\n */\n metadata?: RoomMetadata;\n};\n\n/**\n * Describes the message plugnmeet.CreateRoomReq.\n * Use `create(CreateRoomReqSchema)` to create a new message.\n */\nexport const CreateRoomReqSchema: GenMessage<CreateRoomReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 0);\n\n/**\n * @generated from message plugnmeet.RoomMetadata\n */\nexport type RoomMetadata = Message<\"plugnmeet.RoomMetadata\"> & {\n /**\n * @generated from field: string room_title = 1;\n */\n roomTitle: string;\n\n /**\n * @generated from field: optional string welcome_message = 2;\n */\n welcomeMessage?: string;\n\n /**\n * @generated from field: bool is_recording = 3;\n */\n isRecording: boolean;\n\n /**\n * @generated from field: bool is_active_rtmp = 4;\n */\n isActiveRtmp: boolean;\n\n /**\n * @generated from field: string parent_room_id = 5;\n */\n parentRoomId: string;\n\n /**\n * @generated from field: bool is_breakout_room = 6;\n */\n isBreakoutRoom: boolean;\n\n /**\n * @generated from field: optional string webhook_url = 7;\n */\n webhookUrl?: string;\n\n /**\n * @generated from field: uint64 started_at = 8 [jstype = JS_STRING];\n */\n startedAt: string;\n\n /**\n * @generated from field: optional string logout_url = 9;\n */\n logoutUrl?: string;\n\n /**\n * @generated from field: plugnmeet.RoomCreateFeatures room_features = 10;\n */\n roomFeatures?: RoomCreateFeatures;\n\n /**\n * @generated from field: plugnmeet.LockSettings default_lock_settings = 11;\n */\n defaultLockSettings?: LockSettings;\n\n /**\n * @generated from field: plugnmeet.CopyrightConf copyright_conf = 12;\n */\n copyrightConf?: CopyrightConf;\n\n /**\n * we'll use this as version control\n *\n * @generated from field: optional string metadata_id = 13;\n */\n metadataId?: string;\n\n /**\n * @generated from field: map<string, string> extra_data = 14;\n */\n extraData: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.RoomMetadata.\n * Use `create(RoomMetadataSchema)` to create a new message.\n */\nexport const RoomMetadataSchema: GenMessage<RoomMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 1);\n\n/**\n * @generated from message plugnmeet.RoomCreateFeatures\n */\nexport type RoomCreateFeatures = Message<\"plugnmeet.RoomCreateFeatures\"> & {\n /**\n * @generated from field: bool allow_webcams = 1;\n */\n allowWebcams: boolean;\n\n /**\n * @generated from field: bool mute_on_start = 2;\n */\n muteOnStart: boolean;\n\n /**\n * @generated from field: bool allow_screen_share = 3;\n */\n allowScreenShare: boolean;\n\n /**\n * @generated from field: bool allow_rtmp = 4;\n */\n allowRtmp: boolean;\n\n /**\n * @generated from field: bool allow_view_other_webcams = 5;\n */\n allowViewOtherWebcams: boolean;\n\n /**\n * @generated from field: bool allow_view_other_users_list = 6;\n */\n allowViewOtherUsersList: boolean;\n\n /**\n * @generated from field: bool admin_only_webcams = 7;\n */\n adminOnlyWebcams: boolean;\n\n /**\n * deprecated use polls_features\n *\n * @generated from field: optional bool allow_polls = 8 [deprecated = true];\n * @deprecated\n */\n allowPolls?: boolean;\n\n /**\n * @generated from field: optional uint64 room_duration = 9 [jstype = JS_STRING];\n */\n roomDuration?: string;\n\n /**\n * @generated from field: bool enable_analytics = 10;\n */\n enableAnalytics: boolean;\n\n /**\n * @generated from field: optional bool allow_virtual_bg = 11;\n */\n allowVirtualBg?: boolean;\n\n /**\n * @generated from field: optional bool allow_raise_hand = 12;\n */\n allowRaiseHand?: boolean;\n\n /**\n * @generated from field: optional bool auto_gen_user_id = 13;\n */\n autoGenUserId?: boolean;\n\n /**\n * @generated from field: plugnmeet.RecordingFeatures recording_features = 14;\n */\n recordingFeatures?: RecordingFeatures;\n\n /**\n * @generated from field: plugnmeet.ChatFeatures chat_features = 15;\n */\n chatFeatures?: ChatFeatures;\n\n /**\n * @generated from field: plugnmeet.SharedNotePadFeatures shared_note_pad_features = 16;\n */\n sharedNotePadFeatures?: SharedNotePadFeatures;\n\n /**\n * @generated from field: plugnmeet.WhiteboardFeatures whiteboard_features = 17;\n */\n whiteboardFeatures?: WhiteboardFeatures;\n\n /**\n * @generated from field: plugnmeet.ExternalMediaPlayerFeatures external_media_player_features = 18;\n */\n externalMediaPlayerFeatures?: ExternalMediaPlayerFeatures;\n\n /**\n * @generated from field: plugnmeet.WaitingRoomFeatures waiting_room_features = 19;\n */\n waitingRoomFeatures?: WaitingRoomFeatures;\n\n /**\n * @generated from field: plugnmeet.BreakoutRoomFeatures breakout_room_features = 20;\n */\n breakoutRoomFeatures?: BreakoutRoomFeatures;\n\n /**\n * @generated from field: plugnmeet.DisplayExternalLinkFeatures display_external_link_features = 21;\n */\n displayExternalLinkFeatures?: DisplayExternalLinkFeatures;\n\n /**\n * @generated from field: plugnmeet.IngressFeatures ingress_features = 22;\n */\n ingressFeatures?: IngressFeatures;\n\n /**\n * deprecated use insights_features\n *\n * @generated from field: plugnmeet.SpeechToTextTranslationFeatures speech_to_text_translation_features = 23 [deprecated = true];\n * @deprecated\n */\n speechToTextTranslationFeatures?: SpeechToTextTranslationFeatures;\n\n /**\n * @generated from field: plugnmeet.EndToEndEncryptionFeatures end_to_end_encryption_features = 24;\n */\n endToEndEncryptionFeatures?: EndToEndEncryptionFeatures;\n\n /**\n * @generated from field: plugnmeet.PollsFeatures polls_features = 25;\n */\n pollsFeatures?: PollsFeatures;\n\n /**\n * @generated from field: plugnmeet.InsightsFeatures insights_features = 26;\n */\n insightsFeatures?: InsightsFeatures;\n\n /**\n * next ID: 28\n *\n * @generated from field: plugnmeet.SipDialInFeatures sip_dial_in_features = 27;\n */\n sipDialInFeatures?: SipDialInFeatures;\n};\n\n/**\n * Describes the message plugnmeet.RoomCreateFeatures.\n * Use `create(RoomCreateFeaturesSchema)` to create a new message.\n */\nexport const RoomCreateFeaturesSchema: GenMessage<RoomCreateFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 2);\n\n/**\n * @generated from message plugnmeet.ChatFeatures\n */\nexport type ChatFeatures = Message<\"plugnmeet.ChatFeatures\"> & {\n /**\n * @generated from field: optional bool allow_chat = 1 [deprecated = true];\n * @deprecated\n */\n allowChat?: boolean;\n\n /**\n * @generated from field: optional bool allow_file_upload = 2 [deprecated = true];\n * @deprecated\n */\n allowFileUpload?: boolean;\n\n /**\n * @generated from field: bool is_allow = 5;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_allow_file_upload = 6;\n */\n isAllowFileUpload: boolean;\n\n /**\n * @generated from field: repeated string allowed_file_types = 3;\n */\n allowedFileTypes: string[];\n\n /**\n * @generated from field: optional uint64 max_file_size = 4 [jstype = JS_STRING];\n */\n maxFileSize?: string;\n};\n\n/**\n * Describes the message plugnmeet.ChatFeatures.\n * Use `create(ChatFeaturesSchema)` to create a new message.\n */\nexport const ChatFeaturesSchema: GenMessage<ChatFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 3);\n\n/**\n * @generated from message plugnmeet.SharedNotePadFeatures\n */\nexport type SharedNotePadFeatures = Message<\"plugnmeet.SharedNotePadFeatures\"> & {\n /**\n * @generated from field: optional bool allowed_shared_note_pad = 1 [deprecated = true];\n * @deprecated\n */\n allowedSharedNotePad?: boolean;\n\n /**\n * @generated from field: bool is_allow = 8;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: bool visible = 3;\n */\n visible: boolean;\n\n /**\n * @generated from field: string node_id = 4;\n */\n nodeId: string;\n\n /**\n * @generated from field: string host = 5;\n */\n host: string;\n\n /**\n * @generated from field: string note_pad_id = 6;\n */\n notePadId: string;\n\n /**\n * @generated from field: string read_only_pad_id = 7;\n */\n readOnlyPadId: string;\n};\n\n/**\n * Describes the message plugnmeet.SharedNotePadFeatures.\n * Use `create(SharedNotePadFeaturesSchema)` to create a new message.\n */\nexport const SharedNotePadFeaturesSchema: GenMessage<SharedNotePadFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 4);\n\n/**\n * @generated from message plugnmeet.WhiteboardFeatures\n */\nexport type WhiteboardFeatures = Message<\"plugnmeet.WhiteboardFeatures\"> & {\n /**\n * @generated from field: optional bool allowed_whiteboard = 1 [deprecated = true];\n * @deprecated\n */\n allowedWhiteboard?: boolean;\n\n /**\n * @generated from field: bool is_allow = 9;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool visible = 2;\n */\n visible: boolean;\n\n /**\n * @generated from field: optional string preload_file = 3;\n */\n preloadFile?: string;\n\n /**\n * @generated from field: string whiteboard_file_id = 4;\n */\n whiteboardFileId: string;\n\n /**\n * @generated from field: string file_name = 5;\n */\n fileName: string;\n\n /**\n * @generated from field: string file_path = 6;\n */\n filePath: string;\n\n /**\n * @generated from field: uint32 total_pages = 7;\n */\n totalPages: number;\n\n /**\n * @generated from field: optional uint64 max_allowed_file_size = 8 [jstype = JS_STRING];\n */\n maxAllowedFileSize?: string;\n};\n\n/**\n * Describes the message plugnmeet.WhiteboardFeatures.\n * Use `create(WhiteboardFeaturesSchema)` to create a new message.\n */\nexport const WhiteboardFeaturesSchema: GenMessage<WhiteboardFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 5);\n\n/**\n * @generated from message plugnmeet.ExternalMediaPlayerFeatures\n */\nexport type ExternalMediaPlayerFeatures = Message<\"plugnmeet.ExternalMediaPlayerFeatures\"> & {\n /**\n * @generated from field: optional bool allowed_external_media_player = 1 [deprecated = true];\n * @deprecated\n */\n allowedExternalMediaPlayer?: boolean;\n\n /**\n * @generated from field: bool is_allow = 5;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: optional string shared_by = 3;\n */\n sharedBy?: string;\n\n /**\n * @generated from field: optional string url = 4;\n */\n url?: string;\n};\n\n/**\n * Describes the message plugnmeet.ExternalMediaPlayerFeatures.\n * Use `create(ExternalMediaPlayerFeaturesSchema)` to create a new message.\n */\nexport const ExternalMediaPlayerFeaturesSchema: GenMessage<ExternalMediaPlayerFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 6);\n\n/**\n * @generated from message plugnmeet.WaitingRoomFeatures\n */\nexport type WaitingRoomFeatures = Message<\"plugnmeet.WaitingRoomFeatures\"> & {\n /**\n * @generated from field: bool is_active = 1;\n */\n isActive: boolean;\n\n /**\n * @generated from field: string waiting_room_msg = 2;\n */\n waitingRoomMsg: string;\n};\n\n/**\n * Describes the message plugnmeet.WaitingRoomFeatures.\n * Use `create(WaitingRoomFeaturesSchema)` to create a new message.\n */\nexport const WaitingRoomFeaturesSchema: GenMessage<WaitingRoomFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 7);\n\n/**\n * @generated from message plugnmeet.BreakoutRoomFeatures\n */\nexport type BreakoutRoomFeatures = Message<\"plugnmeet.BreakoutRoomFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: uint32 allowed_number_rooms = 3;\n */\n allowedNumberRooms: number;\n};\n\n/**\n * Describes the message plugnmeet.BreakoutRoomFeatures.\n * Use `create(BreakoutRoomFeaturesSchema)` to create a new message.\n */\nexport const BreakoutRoomFeaturesSchema: GenMessage<BreakoutRoomFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 8);\n\n/**\n * @generated from message plugnmeet.DisplayExternalLinkFeatures\n */\nexport type DisplayExternalLinkFeatures = Message<\"plugnmeet.DisplayExternalLinkFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: optional string link = 3;\n */\n link?: string;\n\n /**\n * @generated from field: optional string shared_by = 4;\n */\n sharedBy?: string;\n};\n\n/**\n * Describes the message plugnmeet.DisplayExternalLinkFeatures.\n * Use `create(DisplayExternalLinkFeaturesSchema)` to create a new message.\n */\nexport const DisplayExternalLinkFeaturesSchema: GenMessage<DisplayExternalLinkFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 9);\n\n/**\n * @generated from message plugnmeet.RecordingFeatures\n */\nexport type RecordingFeatures = Message<\"plugnmeet.RecordingFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_allow_cloud = 2;\n */\n isAllowCloud: boolean;\n\n /**\n * @generated from field: bool enable_auto_cloud_recording = 3;\n */\n enableAutoCloudRecording: boolean;\n\n /**\n * @generated from field: bool is_allow_local = 4;\n */\n isAllowLocal: boolean;\n\n /**\n * @generated from field: bool only_record_admin_webcams = 5;\n */\n onlyRecordAdminWebcams: boolean;\n};\n\n/**\n * Describes the message plugnmeet.RecordingFeatures.\n * Use `create(RecordingFeaturesSchema)` to create a new message.\n */\nexport const RecordingFeaturesSchema: GenMessage<RecordingFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 10);\n\n/**\n * @generated from message plugnmeet.IngressFeatures\n */\nexport type IngressFeatures = Message<\"plugnmeet.IngressFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: plugnmeet.IngressInput input_type = 2;\n */\n inputType: IngressInput;\n\n /**\n * @generated from field: string url = 3;\n */\n url: string;\n\n /**\n * @generated from field: string stream_key = 4;\n */\n streamKey: string;\n};\n\n/**\n * Describes the message plugnmeet.IngressFeatures.\n * Use `create(IngressFeaturesSchema)` to create a new message.\n */\nexport const IngressFeaturesSchema: GenMessage<IngressFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 11);\n\n/**\n * deprecated use insights_features\n *\n * @generated from message plugnmeet.SpeechToTextTranslationFeatures\n */\nexport type SpeechToTextTranslationFeatures = Message<\"plugnmeet.SpeechToTextTranslationFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_allow_translation = 2;\n */\n isAllowTranslation: boolean;\n\n /**\n * @generated from field: bool is_enabled = 3;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: bool is_enabled_translation = 4;\n */\n isEnabledTranslation: boolean;\n\n /**\n * @generated from field: int32 max_num_tran_langs_allow_selecting = 11;\n */\n maxNumTranLangsAllowSelecting: number;\n\n /**\n * @generated from field: repeated string allowed_speech_langs = 7;\n */\n allowedSpeechLangs: string[];\n\n /**\n * @generated from field: repeated string allowed_speech_users = 8;\n */\n allowedSpeechUsers: string[];\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 9;\n */\n allowedTransLangs: string[];\n\n /**\n * next ID: 12\n *\n * @generated from field: optional string default_subtitle_lang = 10;\n */\n defaultSubtitleLang?: string;\n};\n\n/**\n * Describes the message plugnmeet.SpeechToTextTranslationFeatures.\n * Use `create(SpeechToTextTranslationFeaturesSchema)` to create a new message.\n */\nexport const SpeechToTextTranslationFeaturesSchema: GenMessage<SpeechToTextTranslationFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 12);\n\n/**\n * @generated from message plugnmeet.EndToEndEncryptionFeatures\n */\nexport type EndToEndEncryptionFeatures = Message<\"plugnmeet.EndToEndEncryptionFeatures\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: bool included_chat_messages = 2;\n */\n includedChatMessages: boolean;\n\n /**\n * @generated from field: bool included_whiteboard = 3;\n */\n includedWhiteboard: boolean;\n\n /**\n * @generated from field: bool enabled_self_insert_encryption_key = 5;\n */\n enabledSelfInsertEncryptionKey: boolean;\n\n /**\n * internal fields\n *\n * @generated from field: optional string encryption_key = 4;\n */\n encryptionKey?: string;\n};\n\n/**\n * Describes the message plugnmeet.EndToEndEncryptionFeatures.\n * Use `create(EndToEndEncryptionFeaturesSchema)` to create a new message.\n */\nexport const EndToEndEncryptionFeaturesSchema: GenMessage<EndToEndEncryptionFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 13);\n\n/**\n * @generated from message plugnmeet.PollsFeatures\n */\nexport type PollsFeatures = Message<\"plugnmeet.PollsFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n};\n\n/**\n * Describes the message plugnmeet.PollsFeatures.\n * Use `create(PollsFeaturesSchema)` to create a new message.\n */\nexport const PollsFeaturesSchema: GenMessage<PollsFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 14);\n\n/**\n * @generated from message plugnmeet.SipDialInFeatures\n */\nexport type SipDialInFeatures = Message<\"plugnmeet.SipDialInFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * If true, the system will immediately prepare the room for SIP dial-in\n * by creating a dispatch rule and assigning a PIN upon creation.\n * If false, this must be done later via a separate API call.\n *\n * @generated from field: bool enable_dial_in_on_create = 2;\n */\n enableDialInOnCreate: boolean;\n\n /**\n * @generated from field: bool hide_phone_number = 3;\n */\n hidePhoneNumber: boolean;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_active = 4;\n */\n isActive: boolean;\n\n /**\n * @generated from field: repeated string phone_numbers = 5;\n */\n phoneNumbers: string[];\n\n /**\n * @generated from field: optional string pin = 6;\n */\n pin?: string;\n\n /**\n * @generated from field: optional string dispatch_rule_id = 7;\n */\n dispatchRuleId?: string;\n};\n\n/**\n * Describes the message plugnmeet.SipDialInFeatures.\n * Use `create(SipDialInFeaturesSchema)` to create a new message.\n */\nexport const SipDialInFeaturesSchema: GenMessage<SipDialInFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 15);\n\n/**\n * @generated from message plugnmeet.InsightsFeatures\n */\nexport type InsightsFeatures = Message<\"plugnmeet.InsightsFeatures\"> & {\n /**\n * Allow/disallow all insights features for this room\n *\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: optional plugnmeet.InsightsTranscriptionFeatures transcription_features = 2;\n */\n transcriptionFeatures?: InsightsTranscriptionFeatures;\n\n /**\n * @generated from field: optional plugnmeet.InsightsChatTranslationFeatures chat_translation_features = 3;\n */\n chatTranslationFeatures?: InsightsChatTranslationFeatures;\n\n /**\n * @generated from field: optional plugnmeet.InsightsAIFeatures ai_features = 4;\n */\n aiFeatures?: InsightsAIFeatures;\n};\n\n/**\n * Describes the message plugnmeet.InsightsFeatures.\n * Use `create(InsightsFeaturesSchema)` to create a new message.\n */\nexport const InsightsFeaturesSchema: GenMessage<InsightsFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 16);\n\n/**\n * @generated from message plugnmeet.InsightsTranscriptionFeatures\n */\nexport type InsightsTranscriptionFeatures = Message<\"plugnmeet.InsightsTranscriptionFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_allow_translation = 2;\n */\n isAllowTranslation: boolean;\n\n /**\n * @generated from field: bool is_allow_speech_synthesis = 3;\n */\n isAllowSpeechSynthesis: boolean;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_enabled = 4;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: repeated string allowed_spoken_langs = 5;\n */\n allowedSpokenLangs: string[];\n\n /**\n * @generated from field: repeated string allowed_speech_users = 6;\n */\n allowedSpeechUsers: string[];\n\n /**\n * @generated from field: bool is_enabled_translation = 7;\n */\n isEnabledTranslation: boolean;\n\n /**\n * @generated from field: int32 max_selected_trans_langs = 8;\n */\n maxSelectedTransLangs: number;\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 9;\n */\n allowedTransLangs: string[];\n\n /**\n * @generated from field: optional string default_subtitle_lang = 10;\n */\n defaultSubtitleLang?: string;\n\n /**\n * @generated from field: bool is_enabled_speech_synthesis = 11;\n */\n isEnabledSpeechSynthesis: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranscriptionFeatures.\n * Use `create(InsightsTranscriptionFeaturesSchema)` to create a new message.\n */\nexport const InsightsTranscriptionFeaturesSchema: GenMessage<InsightsTranscriptionFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 17);\n\n/**\n * @generated from message plugnmeet.InsightsChatTranslationFeatures\n */\nexport type InsightsChatTranslationFeatures = Message<\"plugnmeet.InsightsChatTranslationFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_enabled = 2;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 3;\n */\n allowedTransLangs: string[];\n\n /**\n * @generated from field: int32 max_selected_trans_langs = 4;\n */\n maxSelectedTransLangs: number;\n\n /**\n * @generated from field: optional string default_lang = 5;\n */\n defaultLang?: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsChatTranslationFeatures.\n * Use `create(InsightsChatTranslationFeaturesSchema)` to create a new message.\n */\nexport const InsightsChatTranslationFeaturesSchema: GenMessage<InsightsChatTranslationFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 18);\n\n/**\n * @generated from message plugnmeet.InsightsAIFeatures\n */\nexport type InsightsAIFeatures = Message<\"plugnmeet.InsightsAIFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: optional plugnmeet.InsightsAITextChatFeatures ai_text_chat_features = 2;\n */\n aiTextChatFeatures?: InsightsAITextChatFeatures;\n\n /**\n * @generated from field: optional plugnmeet.InsightsAIMeetingSummarizationFeatures meeting_summarization_features = 3;\n */\n meetingSummarizationFeatures?: InsightsAIMeetingSummarizationFeatures;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAIFeatures.\n * Use `create(InsightsAIFeaturesSchema)` to create a new message.\n */\nexport const InsightsAIFeaturesSchema: GenMessage<InsightsAIFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 19);\n\n/**\n * @generated from message plugnmeet.InsightsAITextChatFeatures\n */\nexport type InsightsAITextChatFeatures = Message<\"plugnmeet.InsightsAITextChatFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_enabled = 2;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: bool is_allowed_everyone = 3;\n */\n isAllowedEveryone: boolean;\n\n /**\n * @generated from field: repeated string allowed_user_ids = 4;\n */\n allowedUserIds: string[];\n};\n\n/**\n * Describes the message plugnmeet.InsightsAITextChatFeatures.\n * Use `create(InsightsAITextChatFeaturesSchema)` to create a new message.\n */\nexport const InsightsAITextChatFeaturesSchema: GenMessage<InsightsAITextChatFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 20);\n\n/**\n * @generated from message plugnmeet.InsightsAIMeetingSummarizationFeatures\n */\nexport type InsightsAIMeetingSummarizationFeatures = Message<\"plugnmeet.InsightsAIMeetingSummarizationFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: string summarization_prompt = 2;\n */\n summarizationPrompt: string;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_enabled = 3;\n */\n isEnabled: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAIMeetingSummarizationFeatures.\n * Use `create(InsightsAIMeetingSummarizationFeaturesSchema)` to create a new message.\n */\nexport const InsightsAIMeetingSummarizationFeaturesSchema: GenMessage<InsightsAIMeetingSummarizationFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 21);\n\n/**\n * @generated from message plugnmeet.CopyrightConf\n */\nexport type CopyrightConf = Message<\"plugnmeet.CopyrightConf\"> & {\n /**\n * @generated from field: bool display = 1;\n */\n display: boolean;\n\n /**\n * @generated from field: string text = 3;\n */\n text: string;\n};\n\n/**\n * Describes the message plugnmeet.CopyrightConf.\n * Use `create(CopyrightConfSchema)` to create a new message.\n */\nexport const CopyrightConfSchema: GenMessage<CopyrightConf> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 22);\n\n/**\n * @generated from message plugnmeet.CreateRoomRes\n */\nexport type CreateRoomRes = Message<\"plugnmeet.CreateRoomRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.ActiveRoomInfo room_info = 3;\n */\n roomInfo?: ActiveRoomInfo;\n};\n\n/**\n * Describes the message plugnmeet.CreateRoomRes.\n * Use `create(CreateRoomResSchema)` to create a new message.\n */\nexport const CreateRoomResSchema: GenMessage<CreateRoomRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 23);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_gen_token.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_gen_token.proto.\n */\nexport const file_plugnmeet_gen_token: GenFile = /*@__PURE__*/\n fileDesc(\"ChlwbHVnbm1lZXRfZ2VuX3Rva2VuLnByb3RvEglwbHVnbm1lZXQi0QEKEEdlbmVyYXRlVG9rZW5SZXESjAEKB3Jvb21faWQYASABKAlCe7pIeLoBdQoOcm9vbV9pZF9mb3JtYXQSQXJvb21faWQgc2hvdWxkIG9ubHkgY29udGFpbiBsZXR0ZXJzIChhLXogQS1aKSwgZGlnaXRzICgwLTkpIG9yIC1fGiB0aGlzLm1hdGNoZXMoJ15bYS16QS1aMC05LV9dKyQnKRIuCgl1c2VyX2luZm8YAiABKAsyEy5wbHVnbm1lZXQuVXNlckluZm9CBrpIA8gBASKGAQoIVXNlckluZm8SFAoEbmFtZRgBIAEoCUIGukgDyAEBEg8KB3VzZXJfaWQYAiABKAkSEAoIaXNfYWRtaW4YAyABKAgSEQoJaXNfaGlkZGVuGAQgASgIEi4KDXVzZXJfbWV0YWRhdGEYBSABKAsyFy5wbHVnbm1lZXQuVXNlck1ldGFkYXRhIt0ECgxVc2VyTWV0YWRhdGESIgoLcHJvZmlsZV9waWMYASABKAlCCLpIBXIDiAEBSACIAQESEAoIaXNfYWRtaW4YAiABKAgSGgoNcmVjb3JkX3dlYmNhbRgDIAEoCEgBiAEBEh0KDGlzX3ByZXNlbnRlchgEIAEoCEIHukgEagIIABIcCgtyYWlzZWRfaGFuZBgFIAEoCEIHukgEagIIABIiChF3YWl0X2Zvcl9hcHByb3ZhbBgGIAEoCEIHukgEagIIABIbCg5wcmVmZXJyZWRfbGFuZxgHIAEoCUgCiAEBEi4KDWxvY2tfc2V0dGluZ3MYCCABKAsyFy5wbHVnbm1lZXQuTG9ja1NldHRpbmdzEnIKC21ldGFkYXRhX2lkGAkgASgJQli6SFW6AVIKEm1ldGFkYXRhX2lkX2Zvcm1hdBIobWV0YWRhdGFfaWQgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSAOIAQESOgoKZXh0cmFfZGF0YRgKIAMoCzImLnBsdWdubWVldC5Vc2VyTWV0YWRhdGEuRXh0cmFEYXRhRW50cnkSFwoKZXhfdXNlcl9pZBgLIAEoCUgEiAEBGjAKDkV4dHJhRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX3Byb2ZpbGVfcGljQhAKDl9yZWNvcmRfd2ViY2FtQhEKD19wcmVmZXJyZWRfbGFuZ0IOCgxfbWV0YWRhdGFfaWRCDQoLX2V4X3VzZXJfaWQiawoUUGx1Z05tZWV0VG9rZW5DbGFpbXMSDAoEbmFtZRgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEg8KB3Jvb21faWQYAyABKAkSEAoIaXNfYWRtaW4YBCABKAgSEQoJaXNfaGlkZGVuGAUgASgIIugDCgxMb2NrU2V0dGluZ3MSHAoPbG9ja19taWNyb3Bob25lGAEgASgISACIAQESGAoLbG9ja193ZWJjYW0YAiABKAhIAYgBARIgChNsb2NrX3NjcmVlbl9zaGFyaW5nGAMgASgISAKIAQESFgoJbG9ja19jaGF0GAQgASgISAOIAQESIwoWbG9ja19jaGF0X3NlbmRfbWVzc2FnZRgFIAEoCEgEiAEBEiEKFGxvY2tfY2hhdF9maWxlX3NoYXJlGAYgASgISAWIAQESHgoRbG9ja19wcml2YXRlX2NoYXQYByABKAhIBogBARIcCg9sb2NrX3doaXRlYm9hcmQYCCABKAhIB4gBARIgChNsb2NrX3NoYXJlZF9ub3RlcGFkGAkgASgISAiIAQFCEgoQX2xvY2tfbWljcm9waG9uZUIOCgxfbG9ja193ZWJjYW1CFgoUX2xvY2tfc2NyZWVuX3NoYXJpbmdCDAoKX2xvY2tfY2hhdEIZChdfbG9ja19jaGF0X3NlbmRfbWVzc2FnZUIXChVfbG9ja19jaGF0X2ZpbGVfc2hhcmVCFAoSX2xvY2tfcHJpdmF0ZV9jaGF0QhIKEF9sb2NrX3doaXRlYm9hcmRCFgoUX2xvY2tfc2hhcmVkX25vdGVwYWQiTQoQR2VuZXJhdGVUb2tlblJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhIKBXRva2VuGAMgASgJSACIAQFCCAoGX3Rva2VuIowEChJDdXN0b21EZXNpZ25QYXJhbXMSGgoNcHJpbWFyeV9jb2xvchgBIAEoCUgAiAEBEhwKD3NlY29uZGFyeV9jb2xvchgCIAEoCUgBiAEBEh0KEGJhY2tncm91bmRfY29sb3IYAyABKAlIAogBARIdChBiYWNrZ3JvdW5kX2ltYWdlGAQgASgJSAOIAQESHAoPaGVhZGVyX2JnX2NvbG9yGAUgASgJSASIAQESHAoPZm9vdGVyX2JnX2NvbG9yGAYgASgJSAWIAQESHwoSbGVmdF9zaWRlX2JnX2NvbG9yGAcgASgJSAaIAQESIAoTcmlnaHRfc2lkZV9iZ19jb2xvchgIIAEoCUgHiAEBEhsKDmN1c3RvbV9jc3NfdXJsGAkgASgJSAiIAQESGAoLY3VzdG9tX2xvZ28YCiABKAlICYgBAUIQCg5fcHJpbWFyeV9jb2xvckISChBfc2Vjb25kYXJ5X2NvbG9yQhMKEV9iYWNrZ3JvdW5kX2NvbG9yQhMKEV9iYWNrZ3JvdW5kX2ltYWdlQhIKEF9oZWFkZXJfYmdfY29sb3JCEgoQX2Zvb3Rlcl9iZ19jb2xvckIVChNfbGVmdF9zaWRlX2JnX2NvbG9yQhYKFF9yaWdodF9zaWRlX2JnX2NvbG9yQhEKD19jdXN0b21fY3NzX3VybEIOCgxfY3VzdG9tX2xvZ29CnwEKDWNvbS5wbHVnbm1lZXRCFlBsdWdubWVldEdlblRva2VuUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_buf_validate_validate]);\n\n/**\n * @generated from message plugnmeet.GenerateTokenReq\n */\nexport type GenerateTokenReq = Message<\"plugnmeet.GenerateTokenReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: plugnmeet.UserInfo user_info = 2;\n */\n userInfo?: UserInfo;\n};\n\n/**\n * Describes the message plugnmeet.GenerateTokenReq.\n * Use `create(GenerateTokenReqSchema)` to create a new message.\n */\nexport const GenerateTokenReqSchema: GenMessage<GenerateTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 0);\n\n/**\n * @generated from message plugnmeet.UserInfo\n */\nexport type UserInfo = Message<\"plugnmeet.UserInfo\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: bool is_admin = 3;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: bool is_hidden = 4;\n */\n isHidden: boolean;\n\n /**\n * @generated from field: plugnmeet.UserMetadata user_metadata = 5;\n */\n userMetadata?: UserMetadata;\n};\n\n/**\n * Describes the message plugnmeet.UserInfo.\n * Use `create(UserInfoSchema)` to create a new message.\n */\nexport const UserInfoSchema: GenMessage<UserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 1);\n\n/**\n * @generated from message plugnmeet.UserMetadata\n */\nexport type UserMetadata = Message<\"plugnmeet.UserMetadata\"> & {\n /**\n * @generated from field: optional string profile_pic = 1;\n */\n profilePic?: string;\n\n /**\n * @generated from field: bool is_admin = 2;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: optional bool record_webcam = 3;\n */\n recordWebcam?: boolean;\n\n /**\n * @generated from field: bool is_presenter = 4;\n */\n isPresenter: boolean;\n\n /**\n * @generated from field: bool raised_hand = 5;\n */\n raisedHand: boolean;\n\n /**\n * @generated from field: bool wait_for_approval = 6;\n */\n waitForApproval: boolean;\n\n /**\n * @generated from field: optional string preferred_lang = 7;\n */\n preferredLang?: string;\n\n /**\n * @generated from field: plugnmeet.LockSettings lock_settings = 8;\n */\n lockSettings?: LockSettings;\n\n /**\n * we'll use this as version control\n *\n * @generated from field: optional string metadata_id = 9;\n */\n metadataId?: string;\n\n /**\n * @generated from field: map<string, string> extra_data = 10;\n */\n extraData: { [key: string]: string };\n\n /**\n * if remain empty then will use value from user_id\n *\n * Next ID: 12\n *\n * @generated from field: optional string ex_user_id = 11;\n */\n exUserId?: string;\n};\n\n/**\n * Describes the message plugnmeet.UserMetadata.\n * Use `create(UserMetadataSchema)` to create a new message.\n */\nexport const UserMetadataSchema: GenMessage<UserMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 2);\n\n/**\n * @generated from message plugnmeet.PlugNmeetTokenClaims\n */\nexport type PlugNmeetTokenClaims = Message<\"plugnmeet.PlugNmeetTokenClaims\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_admin = 4;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: bool is_hidden = 5;\n */\n isHidden: boolean;\n};\n\n/**\n * Describes the message plugnmeet.PlugNmeetTokenClaims.\n * Use `create(PlugNmeetTokenClaimsSchema)` to create a new message.\n */\nexport const PlugNmeetTokenClaimsSchema: GenMessage<PlugNmeetTokenClaims> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 3);\n\n/**\n * @generated from message plugnmeet.LockSettings\n */\nexport type LockSettings = Message<\"plugnmeet.LockSettings\"> & {\n /**\n * @generated from field: optional bool lock_microphone = 1;\n */\n lockMicrophone?: boolean;\n\n /**\n * @generated from field: optional bool lock_webcam = 2;\n */\n lockWebcam?: boolean;\n\n /**\n * @generated from field: optional bool lock_screen_sharing = 3;\n */\n lockScreenSharing?: boolean;\n\n /**\n * @generated from field: optional bool lock_chat = 4;\n */\n lockChat?: boolean;\n\n /**\n * @generated from field: optional bool lock_chat_send_message = 5;\n */\n lockChatSendMessage?: boolean;\n\n /**\n * @generated from field: optional bool lock_chat_file_share = 6;\n */\n lockChatFileShare?: boolean;\n\n /**\n * @generated from field: optional bool lock_private_chat = 7;\n */\n lockPrivateChat?: boolean;\n\n /**\n * @generated from field: optional bool lock_whiteboard = 8;\n */\n lockWhiteboard?: boolean;\n\n /**\n * @generated from field: optional bool lock_shared_notepad = 9;\n */\n lockSharedNotepad?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.LockSettings.\n * Use `create(LockSettingsSchema)` to create a new message.\n */\nexport const LockSettingsSchema: GenMessage<LockSettings> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 4);\n\n/**\n * @generated from message plugnmeet.GenerateTokenRes\n */\nexport type GenerateTokenRes = Message<\"plugnmeet.GenerateTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string token = 3;\n */\n token?: string;\n};\n\n/**\n * Describes the message plugnmeet.GenerateTokenRes.\n * Use `create(GenerateTokenResSchema)` to create a new message.\n */\nexport const GenerateTokenResSchema: GenMessage<GenerateTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 5);\n\n/**\n * @generated from message plugnmeet.CustomDesignParams\n */\nexport type CustomDesignParams = Message<\"plugnmeet.CustomDesignParams\"> & {\n /**\n * @generated from field: optional string primary_color = 1;\n */\n primaryColor?: string;\n\n /**\n * @generated from field: optional string secondary_color = 2;\n */\n secondaryColor?: string;\n\n /**\n * @generated from field: optional string background_color = 3;\n */\n backgroundColor?: string;\n\n /**\n * @generated from field: optional string background_image = 4;\n */\n backgroundImage?: string;\n\n /**\n * @generated from field: optional string header_bg_color = 5;\n */\n headerBgColor?: string;\n\n /**\n * @generated from field: optional string footer_bg_color = 6;\n */\n footerBgColor?: string;\n\n /**\n * @generated from field: optional string left_side_bg_color = 7;\n */\n leftSideBgColor?: string;\n\n /**\n * @generated from field: optional string right_side_bg_color = 8;\n */\n rightSideBgColor?: string;\n\n /**\n * @generated from field: optional string custom_css_url = 9;\n */\n customCssUrl?: string;\n\n /**\n * @generated from field: optional string custom_logo = 10;\n */\n customLogo?: string;\n};\n\n/**\n * Describes the message plugnmeet.CustomDesignParams.\n * Use `create(CustomDesignParamsSchema)` to create a new message.\n */\nexport const CustomDesignParamsSchema: GenMessage<CustomDesignParams> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 6);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_ingress.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_ingress.proto.\n */\nexport const file_plugnmeet_ingress: GenFile = /*@__PURE__*/\n fileDesc(\"ChdwbHVnbm1lZXRfaW5ncmVzcy5wcm90bxIJcGx1Z25tZWV0ImoKEENyZWF0ZUluZ3Jlc3NSZXESKwoKaW5wdXRfdHlwZRgBIAEoDjIXLnBsdWdubWVldC5JbmdyZXNzSW5wdXQSGAoQcGFydGljaXBhbnRfbmFtZRgCIAEoCRIPCgdyb29tX2lkGAMgASgJIn0KEENyZWF0ZUluZ3Jlc3NSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIrCgppbnB1dF90eXBlGAMgASgOMhcucGx1Z25tZWV0LkluZ3Jlc3NJbnB1dBILCgN1cmwYBCABKAkSEgoKc3RyZWFtX2tleRgFIAEoCSouCgxJbmdyZXNzSW5wdXQSDgoKUlRNUF9JTlBVVBAAEg4KCldISVBfSU5QVVQQAUKeAQoNY29tLnBsdWdubWVldEIVUGx1Z25tZWV0SW5ncmVzc1Byb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\");\n\n/**\n * @generated from message plugnmeet.CreateIngressReq\n */\nexport type CreateIngressReq = Message<\"plugnmeet.CreateIngressReq\"> & {\n /**\n * @generated from field: plugnmeet.IngressInput input_type = 1;\n */\n inputType: IngressInput;\n\n /**\n * @generated from field: string participant_name = 2;\n */\n participantName: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.CreateIngressReq.\n * Use `create(CreateIngressReqSchema)` to create a new message.\n */\nexport const CreateIngressReqSchema: GenMessage<CreateIngressReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_ingress, 0);\n\n/**\n * @generated from message plugnmeet.CreateIngressRes\n */\nexport type CreateIngressRes = Message<\"plugnmeet.CreateIngressRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.IngressInput input_type = 3;\n */\n inputType: IngressInput;\n\n /**\n * @generated from field: string url = 4;\n */\n url: string;\n\n /**\n * @generated from field: string stream_key = 5;\n */\n streamKey: string;\n};\n\n/**\n * Describes the message plugnmeet.CreateIngressRes.\n * Use `create(CreateIngressResSchema)` to create a new message.\n */\nexport const CreateIngressResSchema: GenMessage<CreateIngressRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_ingress, 1);\n\n/**\n * @generated from enum plugnmeet.IngressInput\n */\nexport enum IngressInput {\n /**\n * @generated from enum value: RTMP_INPUT = 0;\n */\n RTMP_INPUT = 0,\n\n /**\n * @generated from enum value: WHIP_INPUT = 1;\n */\n WHIP_INPUT = 1,\n}\n\n/**\n * Describes the enum plugnmeet.IngressInput.\n */\nexport const IngressInputSchema: GenEnum<IngressInput> = /*@__PURE__*/\n enumDesc(file_plugnmeet_ingress, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_lti_v1.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_lti_v1.proto.\n */\nexport const file_plugnmeet_lti_v1: GenFile = /*@__PURE__*/\n fileDesc(\"ChZwbHVnbm1lZXRfbHRpX3YxLnByb3RvEglwbHVnbm1lZXQioAEKCUx0aUNsYWltcxIPCgd1c2VyX2lkGAEgASgJEgwKBG5hbWUYAiABKAkSEAoIaXNfYWRtaW4YAyABKAgSDwoHcm9vbV9pZBgEIAEoCRISCgpyb29tX3RpdGxlGAUgASgJEj0KFWx0aV9jdXN0b21fcGFyYW1ldGVycxgGIAEoCzIeLnBsdWdubWVldC5MdGlDdXN0b21QYXJhbWV0ZXJzIrYEChNMdGlDdXN0b21QYXJhbWV0ZXJzEh4KDXJvb21fZHVyYXRpb24YASABKARCAjABSACIAQESGAoLYWxsb3dfcG9sbHMYAiABKAhIAYgBARIiChVhbGxvd19zaGFyZWRfbm90ZV9wYWQYAyABKAhIAogBARIgChNhbGxvd19icmVha291dF9yb29tGAQgASgISAOIAQESHAoPYWxsb3dfcmVjb3JkaW5nGAUgASgISASIAQESFwoKYWxsb3dfcnRtcBgGIAEoCEgFiAEBEiUKGGFsbG93X3ZpZXdfb3RoZXJfd2ViY2FtcxgHIAEoCEgGiAEBEigKG2FsbG93X3ZpZXdfb3RoZXJfdXNlcnNfbGlzdBgIIAEoCEgHiAEBEhoKDW11dGVfb25fc3RhcnQYCSABKAhICIgBARI1ChFsdGlfY3VzdG9tX2Rlc2lnbhgKIAEoCzIaLnBsdWdubWVldC5MdGlDdXN0b21EZXNpZ25CEAoOX3Jvb21fZHVyYXRpb25CDgoMX2FsbG93X3BvbGxzQhgKFl9hbGxvd19zaGFyZWRfbm90ZV9wYWRCFgoUX2FsbG93X2JyZWFrb3V0X3Jvb21CEgoQX2FsbG93X3JlY29yZGluZ0INCgtfYWxsb3dfcnRtcEIbChlfYWxsb3dfdmlld19vdGhlcl93ZWJjYW1zQh4KHF9hbGxvd192aWV3X290aGVyX3VzZXJzX2xpc3RCEAoOX211dGVfb25fc3RhcnQizwEKD0x0aUN1c3RvbURlc2lnbhIaCg1wcmltYXJ5X2NvbG9yGAEgASgJSACIAQESHAoPc2Vjb25kYXJ5X2NvbG9yGAIgASgJSAGIAQESHQoQYmFja2dyb3VuZF9jb2xvchgDIAEoCUgCiAEBEhgKC2N1c3RvbV9sb2dvGAQgASgJSAOIAQFCEAoOX3ByaW1hcnlfY29sb3JCEgoQX3NlY29uZGFyeV9jb2xvckITChFfYmFja2dyb3VuZF9jb2xvckIOCgxfY3VzdG9tX2xvZ29CnAEKDWNvbS5wbHVnbm1lZXRCE1BsdWdubWVldEx0aVYxUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * @generated from message plugnmeet.LtiClaims\n */\nexport type LtiClaims = Message<\"plugnmeet.LtiClaims\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: bool is_admin = 3;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_title = 5;\n */\n roomTitle: string;\n\n /**\n * @generated from field: plugnmeet.LtiCustomParameters lti_custom_parameters = 6;\n */\n ltiCustomParameters?: LtiCustomParameters;\n};\n\n/**\n * Describes the message plugnmeet.LtiClaims.\n * Use `create(LtiClaimsSchema)` to create a new message.\n */\nexport const LtiClaimsSchema: GenMessage<LtiClaims> = /*@__PURE__*/\n messageDesc(file_plugnmeet_lti_v1, 0);\n\n/**\n * @generated from message plugnmeet.LtiCustomParameters\n */\nexport type LtiCustomParameters = Message<\"plugnmeet.LtiCustomParameters\"> & {\n /**\n * @generated from field: optional uint64 room_duration = 1 [jstype = JS_STRING];\n */\n roomDuration?: string;\n\n /**\n * @generated from field: optional bool allow_polls = 2;\n */\n allowPolls?: boolean;\n\n /**\n * @generated from field: optional bool allow_shared_note_pad = 3;\n */\n allowSharedNotePad?: boolean;\n\n /**\n * @generated from field: optional bool allow_breakout_room = 4;\n */\n allowBreakoutRoom?: boolean;\n\n /**\n * @generated from field: optional bool allow_recording = 5;\n */\n allowRecording?: boolean;\n\n /**\n * @generated from field: optional bool allow_rtmp = 6;\n */\n allowRtmp?: boolean;\n\n /**\n * @generated from field: optional bool allow_view_other_webcams = 7;\n */\n allowViewOtherWebcams?: boolean;\n\n /**\n * @generated from field: optional bool allow_view_other_users_list = 8;\n */\n allowViewOtherUsersList?: boolean;\n\n /**\n * @generated from field: optional bool mute_on_start = 9;\n */\n muteOnStart?: boolean;\n\n /**\n * @generated from field: plugnmeet.LtiCustomDesign lti_custom_design = 10;\n */\n ltiCustomDesign?: LtiCustomDesign;\n};\n\n/**\n * Describes the message plugnmeet.LtiCustomParameters.\n * Use `create(LtiCustomParametersSchema)` to create a new message.\n */\nexport const LtiCustomParametersSchema: GenMessage<LtiCustomParameters> = /*@__PURE__*/\n messageDesc(file_plugnmeet_lti_v1, 1);\n\n/**\n * @generated from message plugnmeet.LtiCustomDesign\n */\nexport type LtiCustomDesign = Message<\"plugnmeet.LtiCustomDesign\"> & {\n /**\n * @generated from field: optional string primary_color = 1;\n */\n primaryColor?: string;\n\n /**\n * @generated from field: optional string secondary_color = 2;\n */\n secondaryColor?: string;\n\n /**\n * @generated from field: optional string background_color = 3;\n */\n backgroundColor?: string;\n\n /**\n * @generated from field: optional string custom_logo = 4;\n */\n customLogo?: string;\n};\n\n/**\n * Describes the message plugnmeet.LtiCustomDesign.\n * Use `create(LtiCustomDesignSchema)` to create a new message.\n */\nexport const LtiCustomDesignSchema: GenMessage<LtiCustomDesign> = /*@__PURE__*/\n messageDesc(file_plugnmeet_lti_v1, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_polls.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_polls.proto.\n */\nexport const file_plugnmeet_polls: GenFile = /*@__PURE__*/\n fileDesc(\"ChVwbHVnbm1lZXRfcG9sbHMucHJvdG8SCXBsdWdubWVldCI2ChBBY3RpdmF0ZVBvbGxzUmVxEg8KB3Jvb21faWQYASABKAkSEQoJaXNfYWN0aXZlGAIgASgIIoMBCg1DcmVhdGVQb2xsUmVxEg8KB3Jvb21faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRIPCgdwb2xsX2lkGAMgASgJEhAKCHF1ZXN0aW9uGAQgASgJEi0KB29wdGlvbnMYBSADKAsyHC5wbHVnbm1lZXQuQ3JlYXRlUG9sbE9wdGlvbnMiLQoRQ3JlYXRlUG9sbE9wdGlvbnMSCgoCaWQYASABKA0SDAoEdGV4dBgCIAEoCSK4AQoIUG9sbEluZm8SCgoCaWQYASABKAkSDwoHcm9vbV9pZBgCIAEoCRIQCghxdWVzdGlvbhgDIAEoCRItCgdvcHRpb25zGAQgAygLMhwucGx1Z25tZWV0LkNyZWF0ZVBvbGxPcHRpb25zEhIKCmlzX3J1bm5pbmcYBSABKAgSEwoHY3JlYXRlZBgGIAEoA0ICMAESEgoKY3JlYXRlZF9ieRgHIAEoCRIRCgljbG9zZWRfYnkYCCABKAkidQoVU3VibWl0UG9sbFJlc3BvbnNlUmVxEg8KB3Jvb21faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB3BvbGxfaWQYBCABKAkSGwoPc2VsZWN0ZWRfb3B0aW9uGAUgASgEQgIwASJBCgxDbG9zZVBvbGxSZXESDwoHcm9vbV9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEg8KB3BvbGxfaWQYAyABKAkiUgoaUG9sbFJlc3BvbnNlc1Jlc3VsdE9wdGlvbnMSDgoCaWQYASABKARCAjABEgwKBHRleHQYAiABKAkSFgoKdm90ZV9jb3VudBgDIAEoBEICMAEifAoTUG9sbFJlc3BvbnNlc1Jlc3VsdBIQCghxdWVzdGlvbhgBIAEoCRIbCg90b3RhbF9yZXNwb25zZXMYAiABKARCAjABEjYKB29wdGlvbnMYAyADKAsyJS5wbHVnbm1lZXQuUG9sbFJlc3BvbnNlc1Jlc3VsdE9wdGlvbnMiQAoKUG9sbHNTdGF0cxIXCgt0b3RhbF9wb2xscxgBIAEoBEICMAESGQoNdG90YWxfcnVubmluZxgCIAEoBEICMAEiqQQKDFBvbGxSZXNwb25zZRIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhQKB3BvbGxfaWQYAyABKAlIAIgBARIgCg90b3RhbF9yZXNwb25zZXMYBCABKARCAjABSAGIAQESFgoFdm90ZWQYBSABKARCAjABSAKIAQESOQoJcmVzcG9uc2VzGAYgAygLMiYucGx1Z25tZWV0LlBvbGxSZXNwb25zZS5SZXNwb25zZXNFbnRyeRIiCgVwb2xscxgHIAMoCzITLnBsdWdubWVldC5Qb2xsSW5mbxIpCgVzdGF0cxgIIAEoCzIVLnBsdWdubWVldC5Qb2xsc1N0YXRzSAOIAQESHAoLdG90YWxfcG9sbHMYCSABKARCAjABSASIAQESHgoNdG90YWxfcnVubmluZxgKIAEoBEICMAFIBYgBARJCChVwb2xsX3Jlc3BvbnNlc19yZXN1bHQYCyABKAsyHi5wbHVnbm1lZXQuUG9sbFJlc3BvbnNlc1Jlc3VsdEgGiAEBGjAKDlJlc3BvbnNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX3BvbGxfaWRCEgoQX3RvdGFsX3Jlc3BvbnNlc0IICgZfdm90ZWRCCAoGX3N0YXRzQg4KDF90b3RhbF9wb2xsc0IQCg5fdG90YWxfcnVubmluZ0IYChZfcG9sbF9yZXNwb25zZXNfcmVzdWx0QpwBCg1jb20ucGx1Z25tZWV0QhNQbHVnbm1lZXRQb2xsc1Byb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\");\n\n/**\n * @generated from message plugnmeet.ActivatePollsReq\n */\nexport type ActivatePollsReq = Message<\"plugnmeet.ActivatePollsReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n};\n\n/**\n * Describes the message plugnmeet.ActivatePollsReq.\n * Use `create(ActivatePollsReqSchema)` to create a new message.\n */\nexport const ActivatePollsReqSchema: GenMessage<ActivatePollsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 0);\n\n/**\n * @generated from message plugnmeet.CreatePollReq\n */\nexport type CreatePollReq = Message<\"plugnmeet.CreatePollReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string poll_id = 3;\n */\n pollId: string;\n\n /**\n * @generated from field: string question = 4;\n */\n question: string;\n\n /**\n * @generated from field: repeated plugnmeet.CreatePollOptions options = 5;\n */\n options: CreatePollOptions[];\n};\n\n/**\n * Describes the message plugnmeet.CreatePollReq.\n * Use `create(CreatePollReqSchema)` to create a new message.\n */\nexport const CreatePollReqSchema: GenMessage<CreatePollReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 1);\n\n/**\n * @generated from message plugnmeet.CreatePollOptions\n */\nexport type CreatePollOptions = Message<\"plugnmeet.CreatePollOptions\"> & {\n /**\n * @generated from field: uint32 id = 1;\n */\n id: number;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n};\n\n/**\n * Describes the message plugnmeet.CreatePollOptions.\n * Use `create(CreatePollOptionsSchema)` to create a new message.\n */\nexport const CreatePollOptionsSchema: GenMessage<CreatePollOptions> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 2);\n\n/**\n * @generated from message plugnmeet.PollInfo\n */\nexport type PollInfo = Message<\"plugnmeet.PollInfo\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string question = 3;\n */\n question: string;\n\n /**\n * @generated from field: repeated plugnmeet.CreatePollOptions options = 4;\n */\n options: CreatePollOptions[];\n\n /**\n * @generated from field: bool is_running = 5;\n */\n isRunning: boolean;\n\n /**\n * @generated from field: int64 created = 6 [jstype = JS_STRING];\n */\n created: string;\n\n /**\n * @generated from field: string created_by = 7;\n */\n createdBy: string;\n\n /**\n * @generated from field: string closed_by = 8;\n */\n closedBy: string;\n};\n\n/**\n * Describes the message plugnmeet.PollInfo.\n * Use `create(PollInfoSchema)` to create a new message.\n */\nexport const PollInfoSchema: GenMessage<PollInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 3);\n\n/**\n * @generated from message plugnmeet.SubmitPollResponseReq\n */\nexport type SubmitPollResponseReq = Message<\"plugnmeet.SubmitPollResponseReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: string poll_id = 4;\n */\n pollId: string;\n\n /**\n * @generated from field: uint64 selected_option = 5 [jstype = JS_STRING];\n */\n selectedOption: string;\n};\n\n/**\n * Describes the message plugnmeet.SubmitPollResponseReq.\n * Use `create(SubmitPollResponseReqSchema)` to create a new message.\n */\nexport const SubmitPollResponseReqSchema: GenMessage<SubmitPollResponseReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 4);\n\n/**\n * @generated from message plugnmeet.ClosePollReq\n */\nexport type ClosePollReq = Message<\"plugnmeet.ClosePollReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string poll_id = 3;\n */\n pollId: string;\n};\n\n/**\n * Describes the message plugnmeet.ClosePollReq.\n * Use `create(ClosePollReqSchema)` to create a new message.\n */\nexport const ClosePollReqSchema: GenMessage<ClosePollReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 5);\n\n/**\n * @generated from message plugnmeet.PollResponsesResultOptions\n */\nexport type PollResponsesResultOptions = Message<\"plugnmeet.PollResponsesResultOptions\"> & {\n /**\n * @generated from field: uint64 id = 1 [jstype = JS_STRING];\n */\n id: string;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: uint64 vote_count = 3 [jstype = JS_STRING];\n */\n voteCount: string;\n};\n\n/**\n * Describes the message plugnmeet.PollResponsesResultOptions.\n * Use `create(PollResponsesResultOptionsSchema)` to create a new message.\n */\nexport const PollResponsesResultOptionsSchema: GenMessage<PollResponsesResultOptions> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 6);\n\n/**\n * @generated from message plugnmeet.PollResponsesResult\n */\nexport type PollResponsesResult = Message<\"plugnmeet.PollResponsesResult\"> & {\n /**\n * @generated from field: string question = 1;\n */\n question: string;\n\n /**\n * @generated from field: uint64 total_responses = 2 [jstype = JS_STRING];\n */\n totalResponses: string;\n\n /**\n * @generated from field: repeated plugnmeet.PollResponsesResultOptions options = 3;\n */\n options: PollResponsesResultOptions[];\n};\n\n/**\n * Describes the message plugnmeet.PollResponsesResult.\n * Use `create(PollResponsesResultSchema)` to create a new message.\n */\nexport const PollResponsesResultSchema: GenMessage<PollResponsesResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 7);\n\n/**\n * @generated from message plugnmeet.PollsStats\n */\nexport type PollsStats = Message<\"plugnmeet.PollsStats\"> & {\n /**\n * @generated from field: uint64 total_polls = 1 [jstype = JS_STRING];\n */\n totalPolls: string;\n\n /**\n * @generated from field: uint64 total_running = 2 [jstype = JS_STRING];\n */\n totalRunning: string;\n};\n\n/**\n * Describes the message plugnmeet.PollsStats.\n * Use `create(PollsStatsSchema)` to create a new message.\n */\nexport const PollsStatsSchema: GenMessage<PollsStats> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 8);\n\n/**\n * @generated from message plugnmeet.PollResponse\n */\nexport type PollResponse = Message<\"plugnmeet.PollResponse\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string poll_id = 3;\n */\n pollId?: string;\n\n /**\n * @generated from field: optional uint64 total_responses = 4 [jstype = JS_STRING];\n */\n totalResponses?: string;\n\n /**\n * @generated from field: optional uint64 voted = 5 [jstype = JS_STRING];\n */\n voted?: string;\n\n /**\n * @generated from field: map<string, string> responses = 6;\n */\n responses: { [key: string]: string };\n\n /**\n * @generated from field: repeated plugnmeet.PollInfo polls = 7;\n */\n polls: PollInfo[];\n\n /**\n * @generated from field: optional plugnmeet.PollsStats stats = 8;\n */\n stats?: PollsStats;\n\n /**\n * @generated from field: optional uint64 total_polls = 9 [jstype = JS_STRING];\n */\n totalPolls?: string;\n\n /**\n * @generated from field: optional uint64 total_running = 10 [jstype = JS_STRING];\n */\n totalRunning?: string;\n\n /**\n * @generated from field: optional plugnmeet.PollResponsesResult poll_responses_result = 11;\n */\n pollResponsesResult?: PollResponsesResult;\n};\n\n/**\n * Describes the message plugnmeet.PollResponse.\n * Use `create(PollResponseSchema)` to create a new message.\n */\nexport const PollResponseSchema: GenMessage<PollResponse> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 9);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_insights.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_insights.proto.\n */\nexport const file_plugnmeet_insights: GenFile = /*@__PURE__*/\n fileDesc(\"ChhwbHVnbm1lZXRfaW5zaWdodHMucHJvdG8SCXBsdWdubWVldCJHChlJbnNpZ2h0c1N1cHBvcnRlZExhbmdJbmZvEgwKBGNvZGUYASABKAkSDAoEbmFtZRgCIAEoCRIOCgZsb2NhbGUYAyABKAkikAIKHkluc2lnaHRzVHJhbnNjcmlwdGlvbkNvbmZpZ1JlcRISCgppc19lbmFibGVkGAEgASgIEhwKFGFsbG93ZWRfc3Bva2VuX2xhbmdzGAIgAygJEhwKFGFsbG93ZWRfc3BlZWNoX3VzZXJzGAMgAygJEh4KFmlzX2VuYWJsZWRfdHJhbnNsYXRpb24YBCABKAgSGwoTYWxsb3dlZF90cmFuc19sYW5ncxgFIAMoCRIiChVkZWZhdWx0X3N1YnRpdGxlX2xhbmcYBiABKAlIAIgBARIjChtpc19lbmFibGVkX3NwZWVjaF9zeW50aGVzaXMYByABKAhCGAoWX2RlZmF1bHRfc3VidGl0bGVfbGFuZyKsAQojSW5zaWdodHNUcmFuc2NyaXB0aW9uVXNlclNlc3Npb25SZXESNAoGYWN0aW9uGAEgASgOMiQucGx1Z25tZWV0Lkluc2lnaHRzVXNlclNlc3Npb25BY3Rpb24SGAoLc3Bva2VuX2xhbmcYAiABKAlIAIgBARIlCh1hbGxvd2VkX3RyYW5zY3JpcHRpb25fc3RvcmFnZRgDIAEoCEIOCgxfc3Bva2VuX2xhbmcipwIKG0luc2lnaHRzVHJhbnNjcmlwdGlvblJlc3VsdBIUCgxmcm9tX3VzZXJfaWQYASABKAkSFgoOZnJvbV91c2VyX25hbWUYAiABKAkSDAoEbGFuZxgDIAEoCRIMCgR0ZXh0GAQgASgJEhIKCmlzX3BhcnRpYWwYBSABKAgSJQodYWxsb3dlZF90cmFuc2NyaXB0aW9uX3N0b3JhZ2UYBiABKAgSTgoMdHJhbnNsYXRpb25zGAcgAygLMjgucGx1Z25tZWV0Lkluc2lnaHRzVHJhbnNjcmlwdGlvblJlc3VsdC5UcmFuc2xhdGlvbnNFbnRyeRozChFUcmFuc2xhdGlvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIn8KIEluc2lnaHRzQ2hhdFRyYW5zbGF0aW9uQ29uZmlnUmVxEhIKCmlzX2VuYWJsZWQYASABKAgSGwoTYWxsb3dlZF90cmFuc19sYW5ncxgFIAMoCRIZCgxkZWZhdWx0X2xhbmcYBiABKAlIAIgBAUIPCg1fZGVmYXVsdF9sYW5nIlMKGEluc2lnaHRzVHJhbnNsYXRlVGV4dFJlcRIMCgR0ZXh0GAEgASgJEhMKC3NvdXJjZV9sYW5nGAIgASgJEhQKDHRhcmdldF9sYW5ncxgDIAMoCSLQAQodSW5zaWdodHNUZXh0VHJhbnNsYXRpb25SZXN1bHQSEwoLc291cmNlX3RleHQYASABKAkSEwoLc291cmNlX2xhbmcYAiABKAkSUAoMdHJhbnNsYXRpb25zGAMgAygLMjoucGx1Z25tZWV0Lkluc2lnaHRzVGV4dFRyYW5zbGF0aW9uUmVzdWx0LlRyYW5zbGF0aW9uc0VudHJ5GjMKEVRyYW5zbGF0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEigQEKGEluc2lnaHRzVHJhbnNsYXRlVGV4dFJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEj0KBnJlc3VsdBgDIAEoCzIoLnBsdWdubWVldC5JbnNpZ2h0c1RleHRUcmFuc2xhdGlvblJlc3VsdEgAiAEBQgkKB19yZXN1bHQiWAogSW5zaWdodHNHZXRTdXBwb3J0ZWRMYW5ndWFnZXNSZXESNAoMc2VydmljZV90eXBlGAEgASgOMh4ucGx1Z25tZWV0Lkluc2lnaHRzU2VydmljZVR5cGUieAogSW5zaWdodHNHZXRTdXBwb3J0ZWRMYW5ndWFnZXNSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRI3CglsYW5ndWFnZXMYAyADKAsyJC5wbHVnbm1lZXQuSW5zaWdodHNTdXBwb3J0ZWRMYW5nSW5mbyL4AQoYSW5zaWdodHNHZXRVc2VyU3RhdHVzUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSNAoMc2VydmljZV90eXBlGAMgASgOMh4ucGx1Z25tZWV0Lkluc2lnaHRzU2VydmljZVR5cGUSEQoJaXNfYWN0aXZlGAQgASgIEhgKC3Nwb2tlbl9sYW5nGAUgASgJSACIAQESKgodYWxsb3dlZF90cmFuc2NyaXB0aW9uX3N0b3JhZ2UYBiABKAhIAYgBAUIOCgxfc3Bva2VuX2xhbmdCIAoeX2FsbG93ZWRfdHJhbnNjcmlwdGlvbl9zdG9yYWdlIoABChlJbnNpZ2h0c0FJVGV4dENoYXRDb250ZW50Ei8KBHJvbGUYASABKA4yIS5wbHVnbm1lZXQuSW5zaWdodHNBSVRleHRDaGF0Um9sZRIMCgR0ZXh0GAIgASgJEhYKCXN0cmVhbV9pZBgDIAEoCUgAiAEBQgwKCl9zdHJlYW1faWQirAEKHkluc2lnaHRzQUlUZXh0Q2hhdFN0cmVhbVJlc3VsdBIKCgJpZBgBIAEoCRIMCgR0ZXh0GAIgASgJEhUKDWlzX2xhc3RfY2h1bmsYAyABKAgSFQoNcHJvbXB0X3Rva2VucxgEIAEoDRIZChFjb21wbGV0aW9uX3Rva2VucxgFIAEoDRIUCgx0b3RhbF90b2tlbnMYBiABKA0SEQoJY3JlYXRlZEF0GAcgASgJImgKG0luc2lnaHRzQUlUZXh0Q2hhdENvbmZpZ1JlcRISCgppc19lbmFibGVkGAEgASgIEhsKE2lzX2FsbG93ZWRfZXZlcnlvbmUYAyABKAgSGAoQYWxsb3dlZF91c2VyX2lkcxgEIAMoCSJbCidJbnNpZ2h0c0FJTWVldGluZ1N1bW1hcml6YXRpb25Db25maWdSZXESEgoKaXNfZW5hYmxlZBgBIAEoCBIcChRzdW1tYXJpemF0aW9uX3Byb21wdBgDIAEoCSq7AgoTSW5zaWdodHNTZXJ2aWNlVHlwZRIlCiFJTlNJR0hUU19TRVJWSUNFX1RZUEVfVU5TUEVDSUZJRUQQABInCiNJTlNJR0hUU19TRVJWSUNFX1RZUEVfVFJBTlNDUklQVElPThABEiUKIUlOU0lHSFRTX1NFUlZJQ0VfVFlQRV9UUkFOU0xBVElPThACEioKJklOU0lHSFRTX1NFUlZJQ0VfVFlQRV9TUEVFQ0hfU1lOVEhFU0lTEAMSJgoiSU5TSUdIVFNfU0VSVklDRV9UWVBFX0FJX1RFWFRfQ0hBVBAEEioKJklOU0lHSFRTX1NFUlZJQ0VfVFlQRV9DSEFUX1RSQU5TTEFUSU9OEAUSLQopSU5TSUdIVFNfU0VSVklDRV9UWVBFX01FRVRJTkdfU1VNTUFSSVpJTkcQBip9ChlJbnNpZ2h0c1VzZXJTZXNzaW9uQWN0aW9uEiMKH1VTRVJfU0VTU0lPTl9BQ1RJT05fVU5TUEVDSUZJRUQQABIdChlVU0VSX1NFU1NJT05fQUNUSU9OX1NUQVJUEAESHAoYVVNFUl9TRVNTSU9OX0FDVElPTl9TVE9QEAIqtgEKFkluc2lnaHRzQUlUZXh0Q2hhdFJvbGUSKgomSU5TSUdIVFNfQUlfVEVYVF9DSEFUX1JPTEVfVU5TUEVDSUZJRUQQABIlCiFJTlNJR0hUU19BSV9URVhUX0NIQVRfUk9MRV9TWVNURU0QARIjCh9JTlNJR0hUU19BSV9URVhUX0NIQVRfUk9MRV9VU0VSEAISJAogSU5TSUdIVFNfQUlfVEVYVF9DSEFUX1JPTEVfTU9ERUwQA0KfAQoNY29tLnBsdWdubWVldEIWUGx1Z25tZWV0SW5zaWdodHNQcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\");\n\n/**\n * @generated from message plugnmeet.InsightsSupportedLangInfo\n */\nexport type InsightsSupportedLangInfo = Message<\"plugnmeet.InsightsSupportedLangInfo\"> & {\n /**\n * @generated from field: string code = 1;\n */\n code: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: string locale = 3;\n */\n locale: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsSupportedLangInfo.\n * Use `create(InsightsSupportedLangInfoSchema)` to create a new message.\n */\nexport const InsightsSupportedLangInfoSchema: GenMessage<InsightsSupportedLangInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 0);\n\n/**\n * @generated from message plugnmeet.InsightsTranscriptionConfigReq\n */\nexport type InsightsTranscriptionConfigReq = Message<\"plugnmeet.InsightsTranscriptionConfigReq\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: repeated string allowed_spoken_langs = 2;\n */\n allowedSpokenLangs: string[];\n\n /**\n * @generated from field: repeated string allowed_speech_users = 3;\n */\n allowedSpeechUsers: string[];\n\n /**\n * @generated from field: bool is_enabled_translation = 4;\n */\n isEnabledTranslation: boolean;\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 5;\n */\n allowedTransLangs: string[];\n\n /**\n * @generated from field: optional string default_subtitle_lang = 6;\n */\n defaultSubtitleLang?: string;\n\n /**\n * @generated from field: bool is_enabled_speech_synthesis = 7;\n */\n isEnabledSpeechSynthesis: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranscriptionConfigReq.\n * Use `create(InsightsTranscriptionConfigReqSchema)` to create a new message.\n */\nexport const InsightsTranscriptionConfigReqSchema: GenMessage<InsightsTranscriptionConfigReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 1);\n\n/**\n * @generated from message plugnmeet.InsightsTranscriptionUserSessionReq\n */\nexport type InsightsTranscriptionUserSessionReq = Message<\"plugnmeet.InsightsTranscriptionUserSessionReq\"> & {\n /**\n * @generated from field: plugnmeet.InsightsUserSessionAction action = 1;\n */\n action: InsightsUserSessionAction;\n\n /**\n * @generated from field: optional string spoken_lang = 2;\n */\n spokenLang?: string;\n\n /**\n * @generated from field: bool allowed_transcription_storage = 3;\n */\n allowedTranscriptionStorage: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranscriptionUserSessionReq.\n * Use `create(InsightsTranscriptionUserSessionReqSchema)` to create a new message.\n */\nexport const InsightsTranscriptionUserSessionReqSchema: GenMessage<InsightsTranscriptionUserSessionReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 2);\n\n/**\n * @generated from message plugnmeet.InsightsTranscriptionResult\n */\nexport type InsightsTranscriptionResult = Message<\"plugnmeet.InsightsTranscriptionResult\"> & {\n /**\n * @generated from field: string from_user_id = 1;\n */\n fromUserId: string;\n\n /**\n * @generated from field: string from_user_name = 2;\n */\n fromUserName: string;\n\n /**\n * @generated from field: string lang = 3;\n */\n lang: string;\n\n /**\n * @generated from field: string text = 4;\n */\n text: string;\n\n /**\n * @generated from field: bool is_partial = 5;\n */\n isPartial: boolean;\n\n /**\n * @generated from field: bool allowed_transcription_storage = 6;\n */\n allowedTranscriptionStorage: boolean;\n\n /**\n * A map of target language -> translated text\n *\n * @generated from field: map<string, string> translations = 7;\n */\n translations: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranscriptionResult.\n * Use `create(InsightsTranscriptionResultSchema)` to create a new message.\n */\nexport const InsightsTranscriptionResultSchema: GenMessage<InsightsTranscriptionResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 3);\n\n/**\n * @generated from message plugnmeet.InsightsChatTranslationConfigReq\n */\nexport type InsightsChatTranslationConfigReq = Message<\"plugnmeet.InsightsChatTranslationConfigReq\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 5;\n */\n allowedTransLangs: string[];\n\n /**\n * @generated from field: optional string default_lang = 6;\n */\n defaultLang?: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsChatTranslationConfigReq.\n * Use `create(InsightsChatTranslationConfigReqSchema)` to create a new message.\n */\nexport const InsightsChatTranslationConfigReqSchema: GenMessage<InsightsChatTranslationConfigReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 4);\n\n/**\n * @generated from message plugnmeet.InsightsTranslateTextReq\n */\nexport type InsightsTranslateTextReq = Message<\"plugnmeet.InsightsTranslateTextReq\"> & {\n /**\n * @generated from field: string text = 1;\n */\n text: string;\n\n /**\n * @generated from field: string source_lang = 2;\n */\n sourceLang: string;\n\n /**\n * @generated from field: repeated string target_langs = 3;\n */\n targetLangs: string[];\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranslateTextReq.\n * Use `create(InsightsTranslateTextReqSchema)` to create a new message.\n */\nexport const InsightsTranslateTextReqSchema: GenMessage<InsightsTranslateTextReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 5);\n\n/**\n * @generated from message plugnmeet.InsightsTextTranslationResult\n */\nexport type InsightsTextTranslationResult = Message<\"plugnmeet.InsightsTextTranslationResult\"> & {\n /**\n * @generated from field: string source_text = 1;\n */\n sourceText: string;\n\n /**\n * @generated from field: string source_lang = 2;\n */\n sourceLang: string;\n\n /**\n * map of lang_code -> translated_text\n *\n * @generated from field: map<string, string> translations = 3;\n */\n translations: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.InsightsTextTranslationResult.\n * Use `create(InsightsTextTranslationResultSchema)` to create a new message.\n */\nexport const InsightsTextTranslationResultSchema: GenMessage<InsightsTextTranslationResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 6);\n\n/**\n * @generated from message plugnmeet.InsightsTranslateTextRes\n */\nexport type InsightsTranslateTextRes = Message<\"plugnmeet.InsightsTranslateTextRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional plugnmeet.InsightsTextTranslationResult result = 3;\n */\n result?: InsightsTextTranslationResult;\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranslateTextRes.\n * Use `create(InsightsTranslateTextResSchema)` to create a new message.\n */\nexport const InsightsTranslateTextResSchema: GenMessage<InsightsTranslateTextRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 7);\n\n/**\n * @generated from message plugnmeet.InsightsGetSupportedLanguagesReq\n */\nexport type InsightsGetSupportedLanguagesReq = Message<\"plugnmeet.InsightsGetSupportedLanguagesReq\"> & {\n /**\n * @generated from field: plugnmeet.InsightsServiceType service_type = 1;\n */\n serviceType: InsightsServiceType;\n};\n\n/**\n * Describes the message plugnmeet.InsightsGetSupportedLanguagesReq.\n * Use `create(InsightsGetSupportedLanguagesReqSchema)` to create a new message.\n */\nexport const InsightsGetSupportedLanguagesReqSchema: GenMessage<InsightsGetSupportedLanguagesReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 8);\n\n/**\n * @generated from message plugnmeet.InsightsGetSupportedLanguagesRes\n */\nexport type InsightsGetSupportedLanguagesRes = Message<\"plugnmeet.InsightsGetSupportedLanguagesRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated plugnmeet.InsightsSupportedLangInfo languages = 3;\n */\n languages: InsightsSupportedLangInfo[];\n};\n\n/**\n * Describes the message plugnmeet.InsightsGetSupportedLanguagesRes.\n * Use `create(InsightsGetSupportedLanguagesResSchema)` to create a new message.\n */\nexport const InsightsGetSupportedLanguagesResSchema: GenMessage<InsightsGetSupportedLanguagesRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 9);\n\n/**\n * @generated from message plugnmeet.InsightsGetUserStatusRes\n */\nexport type InsightsGetUserStatusRes = Message<\"plugnmeet.InsightsGetUserStatusRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.InsightsServiceType service_type = 3;\n */\n serviceType: InsightsServiceType;\n\n /**\n * @generated from field: bool is_active = 4;\n */\n isActive: boolean;\n\n /**\n * @generated from field: optional string spoken_lang = 5;\n */\n spokenLang?: string;\n\n /**\n * @generated from field: optional bool allowed_transcription_storage = 6;\n */\n allowedTranscriptionStorage?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsGetUserStatusRes.\n * Use `create(InsightsGetUserStatusResSchema)` to create a new message.\n */\nexport const InsightsGetUserStatusResSchema: GenMessage<InsightsGetUserStatusRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 10);\n\n/**\n * @generated from message plugnmeet.InsightsAITextChatContent\n */\nexport type InsightsAITextChatContent = Message<\"plugnmeet.InsightsAITextChatContent\"> & {\n /**\n * @generated from field: plugnmeet.InsightsAITextChatRole role = 1;\n */\n role: InsightsAITextChatRole;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: optional string stream_id = 3;\n */\n streamId?: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAITextChatContent.\n * Use `create(InsightsAITextChatContentSchema)` to create a new message.\n */\nexport const InsightsAITextChatContentSchema: GenMessage<InsightsAITextChatContent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 11);\n\n/**\n * @generated from message plugnmeet.InsightsAITextChatStreamResult\n */\nexport type InsightsAITextChatStreamResult = Message<\"plugnmeet.InsightsAITextChatStreamResult\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: bool is_last_chunk = 3;\n */\n isLastChunk: boolean;\n\n /**\n * @generated from field: uint32 prompt_tokens = 4;\n */\n promptTokens: number;\n\n /**\n * @generated from field: uint32 completion_tokens = 5;\n */\n completionTokens: number;\n\n /**\n * @generated from field: uint32 total_tokens = 6;\n */\n totalTokens: number;\n\n /**\n * @generated from field: string createdAt = 7;\n */\n createdAt: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAITextChatStreamResult.\n * Use `create(InsightsAITextChatStreamResultSchema)` to create a new message.\n */\nexport const InsightsAITextChatStreamResultSchema: GenMessage<InsightsAITextChatStreamResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 12);\n\n/**\n * @generated from message plugnmeet.InsightsAITextChatConfigReq\n */\nexport type InsightsAITextChatConfigReq = Message<\"plugnmeet.InsightsAITextChatConfigReq\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: bool is_allowed_everyone = 3;\n */\n isAllowedEveryone: boolean;\n\n /**\n * @generated from field: repeated string allowed_user_ids = 4;\n */\n allowedUserIds: string[];\n};\n\n/**\n * Describes the message plugnmeet.InsightsAITextChatConfigReq.\n * Use `create(InsightsAITextChatConfigReqSchema)` to create a new message.\n */\nexport const InsightsAITextChatConfigReqSchema: GenMessage<InsightsAITextChatConfigReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 13);\n\n/**\n * @generated from message plugnmeet.InsightsAIMeetingSummarizationConfigReq\n */\nexport type InsightsAIMeetingSummarizationConfigReq = Message<\"plugnmeet.InsightsAIMeetingSummarizationConfigReq\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: string summarization_prompt = 3;\n */\n summarizationPrompt: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAIMeetingSummarizationConfigReq.\n * Use `create(InsightsAIMeetingSummarizationConfigReqSchema)` to create a new message.\n */\nexport const InsightsAIMeetingSummarizationConfigReqSchema: GenMessage<InsightsAIMeetingSummarizationConfigReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 14);\n\n/**\n * @generated from enum plugnmeet.InsightsServiceType\n */\nexport enum InsightsServiceType {\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_TRANSCRIPTION = 1;\n */\n TRANSCRIPTION = 1,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_TRANSLATION = 2;\n */\n TRANSLATION = 2,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_SPEECH_SYNTHESIS = 3;\n */\n SPEECH_SYNTHESIS = 3,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_AI_TEXT_CHAT = 4;\n */\n AI_TEXT_CHAT = 4,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_CHAT_TRANSLATION = 5;\n */\n CHAT_TRANSLATION = 5,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_MEETING_SUMMARIZING = 6;\n */\n MEETING_SUMMARIZING = 6,\n}\n\n/**\n * Describes the enum plugnmeet.InsightsServiceType.\n */\nexport const InsightsServiceTypeSchema: GenEnum<InsightsServiceType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_insights, 0);\n\n/**\n * @generated from enum plugnmeet.InsightsUserSessionAction\n */\nexport enum InsightsUserSessionAction {\n /**\n * @generated from enum value: USER_SESSION_ACTION_UNSPECIFIED = 0;\n */\n USER_SESSION_ACTION_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: USER_SESSION_ACTION_START = 1;\n */\n USER_SESSION_ACTION_START = 1,\n\n /**\n * @generated from enum value: USER_SESSION_ACTION_STOP = 2;\n */\n USER_SESSION_ACTION_STOP = 2,\n}\n\n/**\n * Describes the enum plugnmeet.InsightsUserSessionAction.\n */\nexport const InsightsUserSessionActionSchema: GenEnum<InsightsUserSessionAction> = /*@__PURE__*/\n enumDesc(file_plugnmeet_insights, 1);\n\n/**\n * start AI Text Chat\n *\n * @generated from enum plugnmeet.InsightsAITextChatRole\n */\nexport enum InsightsAITextChatRole {\n /**\n * @generated from enum value: INSIGHTS_AI_TEXT_CHAT_ROLE_UNSPECIFIED = 0;\n */\n INSIGHTS_AI_TEXT_CHAT_ROLE_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: INSIGHTS_AI_TEXT_CHAT_ROLE_SYSTEM = 1;\n */\n INSIGHTS_AI_TEXT_CHAT_ROLE_SYSTEM = 1,\n\n /**\n * @generated from enum value: INSIGHTS_AI_TEXT_CHAT_ROLE_USER = 2;\n */\n INSIGHTS_AI_TEXT_CHAT_ROLE_USER = 2,\n\n /**\n * @generated from enum value: INSIGHTS_AI_TEXT_CHAT_ROLE_MODEL = 3;\n */\n INSIGHTS_AI_TEXT_CHAT_ROLE_MODEL = 3,\n}\n\n/**\n * Describes the enum plugnmeet.InsightsAITextChatRole.\n */\nexport const InsightsAITextChatRoleSchema: GenEnum<InsightsAITextChatRole> = /*@__PURE__*/\n enumDesc(file_plugnmeet_insights, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_auth_artifact.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { RoomArtifactMetadata, RoomArtifactType } from \"./plugnmeet_room_artifacts_pb\";\nimport { file_plugnmeet_room_artifacts } from \"./plugnmeet_room_artifacts_pb\";\nimport type { PastRoomInfo } from \"./plugnmeet_auth_room_pb\";\nimport { file_plugnmeet_auth_room } from \"./plugnmeet_auth_room_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_auth_artifact.proto.\n */\nexport const file_plugnmeet_auth_artifact: GenFile = /*@__PURE__*/\n fileDesc(\"Ch1wbHVnbm1lZXRfYXV0aF9hcnRpZmFjdC5wcm90bxIJcGx1Z25tZWV0IrkBChFGZXRjaEFydGlmYWN0c1JlcRIQCghyb29tX2lkcxgBIAMoCRIVCghyb29tX3NpZBgCIAEoCUgAiAEBEi4KBHR5cGUYAyABKA4yGy5wbHVnbm1lZXQuUm9vbUFydGlmYWN0VHlwZUgBiAEBEhAKBGZyb20YBCABKARCAjABEhEKBWxpbWl0GAUgASgEQgIwARIQCghvcmRlcl9ieRgGIAEoCUILCglfcm9vbV9zaWRCBwoFX3R5cGUiowEKDEFydGlmYWN0SW5mbxITCgthcnRpZmFjdF9pZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEikKBHR5cGUYAyABKA4yGy5wbHVnbm1lZXQuUm9vbUFydGlmYWN0VHlwZRIPCgdjcmVhdGVkGAQgASgJEjEKCG1ldGFkYXRhGAUgASgLMh8ucGx1Z25tZWV0LlJvb21BcnRpZmFjdE1ldGFkYXRhItQBChRGZXRjaEFydGlmYWN0c1Jlc3VsdBIbCg90b3RhbF9hcnRpZmFjdHMYASABKANCAjABEhAKBGZyb20YAiABKARCAjABEhEKBWxpbWl0GAMgASgEQgIwARIQCghvcmRlcl9ieRgEIAEoCRIuCgR0eXBlGAUgASgOMhsucGx1Z25tZWV0LlJvb21BcnRpZmFjdFR5cGVIAIgBARIvCg5hcnRpZmFjdHNfbGlzdBgGIAMoCzIXLnBsdWdubWVldC5BcnRpZmFjdEluZm9CBwoFX3R5cGUiYQoRRmV0Y2hBcnRpZmFjdHNSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIvCgZyZXN1bHQYAyABKAsyHy5wbHVnbm1lZXQuRmV0Y2hBcnRpZmFjdHNSZXN1bHQiOgobR2V0QXJ0aWZhY3REb3dubG9hZFRva2VuUmVxEhsKC2FydGlmYWN0X2lkGAEgASgJQga6SAPIAQEiWAobR2V0QXJ0aWZhY3REb3dubG9hZFRva2VuUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSEgoFdG9rZW4YAyABKAlIAIgBAUIICgZfdG9rZW4iMAoRRGVsZXRlQXJ0aWZhY3RSZXESGwoLYXJ0aWZhY3RfaWQYASABKAlCBrpIA8gBASIwChFEZWxldGVBcnRpZmFjdFJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJIi4KD0FydGlmYWN0SW5mb1JlcRIbCgthcnRpZmFjdF9pZBgBIAEoCUIGukgDyAEBIrQBCg9BcnRpZmFjdEluZm9SZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIzCg1hcnRpZmFjdF9pbmZvGAMgASgLMhcucGx1Z25tZWV0LkFydGlmYWN0SW5mb0gAiAEBEi8KCXJvb21faW5mbxgEIAEoCzIXLnBsdWdubWVldC5QYXN0Um9vbUluZm9IAYgBAUIQCg5fYXJ0aWZhY3RfaW5mb0IMCgpfcm9vbV9pbmZvQqMBCg1jb20ucGx1Z25tZWV0QhpQbHVnbm1lZXRBdXRoQXJ0aWZhY3RQcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\", [file_buf_validate_validate, file_plugnmeet_room_artifacts, file_plugnmeet_auth_room]);\n\n/**\n * Request to fetch a list of artifacts\n *\n * @generated from message plugnmeet.FetchArtifactsReq\n */\nexport type FetchArtifactsReq = Message<\"plugnmeet.FetchArtifactsReq\"> & {\n /**\n * @generated from field: repeated string room_ids = 1;\n */\n roomIds: string[];\n\n /**\n * To get information about a particular session\n *\n * @generated from field: optional string room_sid = 2;\n */\n roomSid?: string;\n\n /**\n * @generated from field: optional plugnmeet.RoomArtifactType type = 3;\n */\n type?: RoomArtifactType;\n\n /**\n * @generated from field: uint64 from = 4 [jstype = JS_STRING];\n */\n from: string;\n\n /**\n * @generated from field: uint64 limit = 5 [jstype = JS_STRING];\n */\n limit: string;\n\n /**\n * @generated from field: string order_by = 6;\n */\n orderBy: string;\n};\n\n/**\n * Describes the message plugnmeet.FetchArtifactsReq.\n * Use `create(FetchArtifactsReqSchema)` to create a new message.\n */\nexport const FetchArtifactsReqSchema: GenMessage<FetchArtifactsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 0);\n\n/**\n * A single artifact entry in the list response\n *\n * @generated from message plugnmeet.ArtifactInfo\n */\nexport type ArtifactInfo = Message<\"plugnmeet.ArtifactInfo\"> & {\n /**\n * @generated from field: string artifact_id = 1;\n */\n artifactId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: plugnmeet.RoomArtifactType type = 3;\n */\n type: RoomArtifactType;\n\n /**\n * @generated from field: string created = 4;\n */\n created: string;\n\n /**\n * @generated from field: plugnmeet.RoomArtifactMetadata metadata = 5;\n */\n metadata?: RoomArtifactMetadata;\n};\n\n/**\n * Describes the message plugnmeet.ArtifactInfo.\n * Use `create(ArtifactInfoSchema)` to create a new message.\n */\nexport const ArtifactInfoSchema: GenMessage<ArtifactInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 1);\n\n/**\n * Result for fetching artifacts\n *\n * @generated from message plugnmeet.FetchArtifactsResult\n */\nexport type FetchArtifactsResult = Message<\"plugnmeet.FetchArtifactsResult\"> & {\n /**\n * @generated from field: int64 total_artifacts = 1 [jstype = JS_STRING];\n */\n totalArtifacts: string;\n\n /**\n * @generated from field: uint64 from = 2 [jstype = JS_STRING];\n */\n from: string;\n\n /**\n * @generated from field: uint64 limit = 3 [jstype = JS_STRING];\n */\n limit: string;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n\n /**\n * @generated from field: optional plugnmeet.RoomArtifactType type = 5;\n */\n type?: RoomArtifactType;\n\n /**\n * @generated from field: repeated plugnmeet.ArtifactInfo artifacts_list = 6;\n */\n artifactsList: ArtifactInfo[];\n};\n\n/**\n * Describes the message plugnmeet.FetchArtifactsResult.\n * Use `create(FetchArtifactsResultSchema)` to create a new message.\n */\nexport const FetchArtifactsResultSchema: GenMessage<FetchArtifactsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 2);\n\n/**\n * Response for fetching artifacts\n *\n * @generated from message plugnmeet.FetchArtifactsRes\n */\nexport type FetchArtifactsRes = Message<\"plugnmeet.FetchArtifactsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.FetchArtifactsResult result = 3;\n */\n result?: FetchArtifactsResult;\n};\n\n/**\n * Describes the message plugnmeet.FetchArtifactsRes.\n * Use `create(FetchArtifactsResSchema)` to create a new message.\n */\nexport const FetchArtifactsResSchema: GenMessage<FetchArtifactsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 3);\n\n/**\n * Request to get a download token for an artifact\n *\n * @generated from message plugnmeet.GetArtifactDownloadTokenReq\n */\nexport type GetArtifactDownloadTokenReq = Message<\"plugnmeet.GetArtifactDownloadTokenReq\"> & {\n /**\n * @generated from field: string artifact_id = 1;\n */\n artifactId: string;\n};\n\n/**\n * Describes the message plugnmeet.GetArtifactDownloadTokenReq.\n * Use `create(GetArtifactDownloadTokenReqSchema)` to create a new message.\n */\nexport const GetArtifactDownloadTokenReqSchema: GenMessage<GetArtifactDownloadTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 4);\n\n/**\n * Response for a download token\n *\n * @generated from message plugnmeet.GetArtifactDownloadTokenRes\n */\nexport type GetArtifactDownloadTokenRes = Message<\"plugnmeet.GetArtifactDownloadTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string token = 3;\n */\n token?: string;\n};\n\n/**\n * Describes the message plugnmeet.GetArtifactDownloadTokenRes.\n * Use `create(GetArtifactDownloadTokenResSchema)` to create a new message.\n */\nexport const GetArtifactDownloadTokenResSchema: GenMessage<GetArtifactDownloadTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 5);\n\n/**\n * Request to delete an artifact\n *\n * @generated from message plugnmeet.DeleteArtifactReq\n */\nexport type DeleteArtifactReq = Message<\"plugnmeet.DeleteArtifactReq\"> & {\n /**\n * @generated from field: string artifact_id = 1;\n */\n artifactId: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteArtifactReq.\n * Use `create(DeleteArtifactReqSchema)` to create a new message.\n */\nexport const DeleteArtifactReqSchema: GenMessage<DeleteArtifactReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 6);\n\n/**\n * Response for deleting an artifact\n *\n * @generated from message plugnmeet.DeleteArtifactRes\n */\nexport type DeleteArtifactRes = Message<\"plugnmeet.DeleteArtifactRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteArtifactRes.\n * Use `create(DeleteArtifactResSchema)` to create a new message.\n */\nexport const DeleteArtifactResSchema: GenMessage<DeleteArtifactRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 7);\n\n/**\n * @generated from message plugnmeet.ArtifactInfoReq\n */\nexport type ArtifactInfoReq = Message<\"plugnmeet.ArtifactInfoReq\"> & {\n /**\n * @generated from field: string artifact_id = 1;\n */\n artifactId: string;\n};\n\n/**\n * Describes the message plugnmeet.ArtifactInfoReq.\n * Use `create(ArtifactInfoReqSchema)` to create a new message.\n */\nexport const ArtifactInfoReqSchema: GenMessage<ArtifactInfoReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 8);\n\n/**\n * @generated from message plugnmeet.ArtifactInfoRes\n */\nexport type ArtifactInfoRes = Message<\"plugnmeet.ArtifactInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional plugnmeet.ArtifactInfo artifact_info = 3;\n */\n artifactInfo?: ArtifactInfo;\n\n /**\n * @generated from field: optional plugnmeet.PastRoomInfo room_info = 4;\n */\n roomInfo?: PastRoomInfo;\n};\n\n/**\n * Describes the message plugnmeet.ArtifactInfoRes.\n * Use `create(ArtifactInfoResSchema)` to create a new message.\n */\nexport const ArtifactInfoResSchema: GenMessage<ArtifactInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 9);\n\n"],"names":[],"version":3,"file":"index.cjs.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["src/index.ts","src/gen/plugnmeet_analytics_pb.ts","src/gen/plugnmeet_auth_analytics_pb.ts","src/gen/buf/validate/validate_pb.ts","src/gen/plugnmeet_auth_recording_pb.ts","src/gen/plugnmeet_auth_room_pb.ts","src/gen/livekit_models_pb.ts","src/gen/livekit_metrics_pb.ts","src/gen/logger/options_pb.ts","src/gen/plugnmeet_recording_pb.ts","src/gen/plugnmeet_recorder_pb.ts","src/gen/plugnmeet_breakout_room_pb.ts","src/gen/plugnmeet_common_api_pb.ts","src/gen/plugnmeet_datamessage_pb.ts","src/gen/plugnmeet_nats_msg_pb.ts","src/gen/plugnmeet_common_pb.ts","src/gen/plugnmeet_room_artifacts_pb.ts","src/gen/plugnmeet_create_room_pb.ts","src/gen/plugnmeet_gen_token_pb.ts","src/gen/plugnmeet_ingress_pb.ts","src/gen/plugnmeet_lti_v1_pb.ts","src/gen/plugnmeet_polls_pb.ts","src/gen/plugnmeet_insights_pb.ts","src/gen/plugnmeet_auth_artifact_pb.ts"],"sourcesContent":["export * from \"./gen/plugnmeet_analytics_pb\";\nexport * from \"./gen/plugnmeet_auth_analytics_pb\";\nexport * from \"./gen/plugnmeet_auth_recording_pb\";\nexport * from \"./gen/plugnmeet_auth_room_pb\";\nexport * from \"./gen/plugnmeet_breakout_room_pb\";\nexport * from \"./gen/plugnmeet_common_api_pb\";\nexport * from \"./gen/plugnmeet_common_pb\";\nexport * from \"./gen/plugnmeet_create_room_pb\";\nexport * from \"./gen/plugnmeet_datamessage_pb\";\nexport * from \"./gen/plugnmeet_gen_token_pb\";\nexport * from \"./gen/plugnmeet_ingress_pb\";\nexport * from \"./gen/plugnmeet_lti_v1_pb\";\nexport * from \"./gen/plugnmeet_nats_msg_pb\";\nexport * from \"./gen/plugnmeet_polls_pb\";\nexport * from \"./gen/plugnmeet_recorder_pb\";\nexport * from \"./gen/plugnmeet_recording_pb\";\nexport * from \"./gen/plugnmeet_insights_pb\";\nexport * from \"./gen/plugnmeet_room_artifacts_pb\";\nexport * from \"./gen/plugnmeet_auth_artifact_pb\";\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_analytics.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_analytics.proto.\n */\nexport const file_plugnmeet_analytics: GenFile = /*@__PURE__*/\n fileDesc(\"ChlwbHVnbm1lZXRfYW5hbHl0aWNzLnByb3RvEglwbHVnbm1lZXQiygMKEEFuYWx5dGljc0RhdGFNc2cSMQoKZXZlbnRfdHlwZRgBIAEoDjIdLnBsdWdubWVldC5BbmFseXRpY3NFdmVudFR5cGUSLgoKZXZlbnRfbmFtZRgCIAEoDjIaLnBsdWdubWVldC5BbmFseXRpY3NFdmVudHMSDwoHcm9vbV9pZBgDIAEoCRIQCgR0aW1lGAQgASgDQgIwARIfChJldmVudF92YWx1ZV9zdHJpbmcYBSABKAlIAIgBARIkChNldmVudF92YWx1ZV9pbnRlZ2VyGAYgASgDQgIwAUgBiAEBEhcKCmhzZXRfdmFsdWUYByABKAlIAogBARIVCghyb29tX3NpZBgIIAEoCUgDiAEBEhQKB3VzZXJfaWQYCSABKAlIBIgBARIWCgl1c2VyX25hbWUYCiABKAlIBYgBARIXCgpleHRyYV9kYXRhGAsgASgJSAaIAQFCFQoTX2V2ZW50X3ZhbHVlX3N0cmluZ0IWChRfZXZlbnRfdmFsdWVfaW50ZWdlckINCgtfaHNldF92YWx1ZUILCglfcm9vbV9zaWRCCgoIX3VzZXJfaWRCDAoKX3VzZXJfbmFtZUINCgtfZXh0cmFfZGF0YSI2ChNBbmFseXRpY3NFdmVudFZhbHVlEhAKBHRpbWUYASABKANCAjABEg0KBXZhbHVlGAIgASgJImEKEkFuYWx5dGljc0V2ZW50RGF0YRIMCgRuYW1lGAEgASgJEg0KBXRvdGFsGAIgASgNEi4KBnZhbHVlcxgDIAMoCzIeLnBsdWdubWVldC5BbmFseXRpY3NFdmVudFZhbHVlIukBChFBbmFseXRpY3NSb29tSW5mbxIPCgdyb29tX2lkGAEgASgJEhIKCnJvb21fdGl0bGUYAiABKAkSHAoQcm9vbV90b3RhbF91c2VycxgDIAEoA0ICMAESGQoNcm9vbV9jcmVhdGlvbhgEIAEoA0ICMAESFgoKcm9vbV9lbmRlZBgFIAEoA0ICMAESGQoNcm9vbV9kdXJhdGlvbhgGIAEoA0ICMAESFAoMZW5hYmxlZF9lMmVlGAcgASgIEi0KBmV2ZW50cxgJIAMoCzIdLnBsdWdubWVldC5BbmFseXRpY3NFdmVudERhdGEiwwEKEUFuYWx5dGljc1VzZXJJbmZvEg8KB3VzZXJfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIQCghpc19hZG1pbhgDIAEoCBIXCgpleHRyYV9kYXRhGAQgASgJSACIAQESFwoKZXhfdXNlcl9pZBgFIAEoCUgBiAEBEi0KBmV2ZW50cxgGIAMoCzIdLnBsdWdubWVldC5BbmFseXRpY3NFdmVudERhdGFCDQoLX2V4dHJhX2RhdGFCDQoLX2V4X3VzZXJfaWQiagoPQW5hbHl0aWNzUmVzdWx0EioKBHJvb20YASABKAsyHC5wbHVnbm1lZXQuQW5hbHl0aWNzUm9vbUluZm8SKwoFdXNlcnMYAiADKAsyHC5wbHVnbm1lZXQuQW5hbHl0aWNzVXNlckluZm8ilgEKFkFuYWx5dGljc1JlZGlzVXNlckluZm8SEQoEbmFtZRgBIAEoCUgAiAEBEhAKCGlzX2FkbWluGAIgASgIEhcKCmV4dHJhX2RhdGEYAyABKAlIAYgBARIXCgpleF91c2VyX2lkGAQgASgJSAKIAQFCBwoFX25hbWVCDQoLX2V4dHJhX2RhdGFCDQoLX2V4X3VzZXJfaWQqUgoSQW5hbHl0aWNzRXZlbnRUeXBlEh0KGUFOQUxZVElDU19FVkVOVF9UWVBFX1JPT00QABIdChlBTkFMWVRJQ1NfRVZFTlRfVFlQRV9VU0VSEAEq2g4KD0FuYWx5dGljc0V2ZW50cxIbChdBTkFMWVRJQ1NfRVZFTlRfVU5LTk9XThAAEiMKH0FOQUxZVElDU19FVkVOVF9ST09NX1BPTExfQURERUQQARIjCh9BTkFMWVRJQ1NfRVZFTlRfUk9PTV9QT0xMX0VOREVEEAISHwobQU5BTFlUSUNTX0VWRU5UX1VTRVJfSk9JTkVEEAMSKQolQU5BTFlUSUNTX0VWRU5UX1JPT01fUkVDT1JESU5HX1NUQVRVUxAEEiQKIEFOQUxZVElDU19FVkVOVF9ST09NX1JUTVBfU1RBVFVTEAUSJgoiQU5BTFlUSUNTX0VWRU5UX1JPT01fQlJFQUtPVVRfUk9PTRAGEigKJEFOQUxZVElDU19FVkVOVF9ST09NX0VUSEVSUEFEX1NUQVRVUxAHEjUKMUFOQUxZVElDU19FVkVOVF9ST09NX0VYVEVSTkFMX0RJU1BMQVlfTElOS19TVEFUVVMQCBI1CjFBTkFMWVRJQ1NfRVZFTlRfUk9PTV9FWFRFUk5BTF9NRURJQV9QTEFZRVJfU1RBVFVTEAkSLgoqQU5BTFlUSUNTX0VWRU5UX1JPT01fU1BFRUNIX1NFUlZJQ0VfU1RBVFVTEAoSMwovQU5BTFlUSUNTX0VWRU5UX1JPT01fU1BFRUNIX1NFUlZJQ0VfVE9UQUxfVVNBR0UQCxIoCiRBTkFMWVRJQ1NfRVZFTlRfUk9PTV9JTkdSRVNTX0NSRUFURUQQDBIpCiVBTkFMWVRJQ1NfRVZFTlRfUk9PTV9XSElURUJPQVJEX0ZJTEVTEA0SNgoyQU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfVFJBTlNDUklQVElPTl9TVEFUVVMQHxI7CjdBTkFMWVRJQ1NfRVZFTlRfUk9PTV9JTlNJR0hUU19UUkFOU0NSSVBUSU9OX1RPVEFMX1VTQUdFECASQAo8QU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfU1lOVEhFU0laRURfU1BFRUNIX1RPVEFMX1VTQUdFECESOQo1QU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfQ0hBVF9UUkFOU0xBVElPTl9TVEFUVVMQIhI+CjpBTkFMWVRJQ1NfRVZFTlRfUk9PTV9JTlNJR0hUU19DSEFUX1RSQU5TTEFUSU9OX1RPVEFMX1VTQUdFECMSNQoxQU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfQUlfVEVYVF9DSEFUX1NUQVRVUxAkEkYKQkFOQUxZVElDU19FVkVOVF9ST09NX0lOU0lHSFRTX0FJX1RFWFRfQ0hBVF9JTlRFUkFDVElPTl9UT1RBTF9VU0FHRRAlEkgKREFOQUxZVElDU19FVkVOVF9ST09NX0lOU0lHSFRTX0FJX1RFWFRfQ0hBVF9TVU1NQVJJWkFUSU9OX1RPVEFMX1VTQUdFECYSQQo9QU5BTFlUSUNTX0VWRU5UX1JPT01fSU5TSUdIVFNfQUlfTUVFVElOR19TVU1NQVJJWkFUSU9OX1NUQVRVUxAnEh0KGUFOQUxZVElDU19FVkVOVF9VU0VSX0xFRlQQDhIjCh9BTkFMWVRJQ1NfRVZFTlRfVVNFUl9NSUNfU1RBVFVTEA8SHwobQU5BTFlUSUNTX0VWRU5UX1VTRVJfVEFMS0VEEBASKAokQU5BTFlUSUNTX0VWRU5UX1VTRVJfVEFMS0VEX0RVUkFUSU9OEBESJgoiQU5BTFlUSUNTX0VWRU5UX1VTRVJfV0VCQ0FNX1NUQVRVUxASEiwKKEFOQUxZVElDU19FVkVOVF9VU0VSX1NDUkVFTl9TSEFSRV9TVEFUVVMQExIjCh9BTkFMWVRJQ1NfRVZFTlRfVVNFUl9WT1RFRF9QT0xMEBQSJAogQU5BTFlUSUNTX0VWRU5UX1VTRVJfUFVCTElDX0NIQVQQFRIlCiFBTkFMWVRJQ1NfRVZFTlRfVVNFUl9QUklWQVRFX0NIQVQQFhIjCh9BTkFMWVRJQ1NfRVZFTlRfVVNFUl9DSEFUX0ZJTEVTEBcSLQopQU5BTFlUSUNTX0VWRU5UX1VTRVJfV0hJVEVCT0FSRF9BTk5PVEFURUQQGBIpCiVBTkFMWVRJQ1NfRVZFTlRfVVNFUl9XSElURUJPQVJEX0ZJTEVTEBkSLgoqQU5BTFlUSUNTX0VWRU5UX1VTRVJfU1BFRUNIX1NFUlZJQ0VTX1VTQUdFEBoSLworQU5BTFlUSUNTX0VWRU5UX1VTRVJfU1BFRUNIX1NFUlZJQ0VTX1NUQVRVUxAbEi0KKUFOQUxZVElDU19FVkVOVF9VU0VSX0lOVEVSRkFDRV9WSVNJQklMSVRZEBwSIwofQU5BTFlUSUNTX0VWRU5UX1VTRVJfUkFJU0VfSEFORBAdEisKJ0FOQUxZVElDU19FVkVOVF9VU0VSX0NPTk5FQ1RJT05fUVVBTElUWRAeKoUBCg9BbmFseXRpY3NTdGF0dXMSHAoYQU5BTFlUSUNTX1NUQVRVU19TVEFSVEVEEAASGgoWQU5BTFlUSUNTX1NUQVRVU19FTkRFRBABEhoKFkFOQUxZVElDU19TVEFUVVNfTVVURUQQAhIcChhBTkFMWVRJQ1NfU1RBVFVTX1VOTVVURUQQA0KgAQoNY29tLnBsdWdubWVldEIXUGx1Z25tZWV0QW5hbHl0aWNzUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * @generated from message plugnmeet.AnalyticsDataMsg\n */\nexport type AnalyticsDataMsg = Message<\"plugnmeet.AnalyticsDataMsg\"> & {\n /**\n * @generated from field: plugnmeet.AnalyticsEventType event_type = 1;\n */\n eventType: AnalyticsEventType;\n\n /**\n * @generated from field: plugnmeet.AnalyticsEvents event_name = 2;\n */\n eventName: AnalyticsEvents;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n\n /**\n * should be unix milliseconds\n *\n * @generated from field: int64 time = 4 [jstype = JS_STRING];\n */\n time: string;\n\n /**\n * if we pass value here then it will use redis SET to set the value for the key\n *\n * @generated from field: optional string event_value_string = 5;\n */\n eventValueString?: string;\n\n /**\n * if we pass value here then it will use redis INCRBY to increment value for the key\n *\n * @generated from field: optional int64 event_value_integer = 6 [jstype = JS_STRING];\n */\n eventValueInteger?: string;\n\n /**\n * if we pass value here then it will use redis HSET to set hash field value for the key\n * hash field will be unix milliseconds, so it will remain unique as always\n *\n * @generated from field: optional string hset_value = 7;\n */\n hsetValue?: string;\n\n /**\n * @generated from field: optional string room_sid = 8;\n */\n roomSid?: string;\n\n /**\n * @generated from field: optional string user_id = 9;\n */\n userId?: string;\n\n /**\n * @generated from field: optional string user_name = 10;\n */\n userName?: string;\n\n /**\n * this extra_data can be use for various purposes like, room or user metadata\n *\n * @generated from field: optional string extra_data = 11;\n */\n extraData?: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsDataMsg.\n * Use `create(AnalyticsDataMsgSchema)` to create a new message.\n */\nexport const AnalyticsDataMsgSchema: GenMessage<AnalyticsDataMsg> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 0);\n\n/**\n * @generated from message plugnmeet.AnalyticsEventValue\n */\nexport type AnalyticsEventValue = Message<\"plugnmeet.AnalyticsEventValue\"> & {\n /**\n * @generated from field: int64 time = 1 [jstype = JS_STRING];\n */\n time: string;\n\n /**\n * @generated from field: string value = 2;\n */\n value: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsEventValue.\n * Use `create(AnalyticsEventValueSchema)` to create a new message.\n */\nexport const AnalyticsEventValueSchema: GenMessage<AnalyticsEventValue> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 1);\n\n/**\n * @generated from message plugnmeet.AnalyticsEventData\n */\nexport type AnalyticsEventData = Message<\"plugnmeet.AnalyticsEventData\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: uint32 total = 2;\n */\n total: number;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsEventValue values = 3;\n */\n values: AnalyticsEventValue[];\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsEventData.\n * Use `create(AnalyticsEventDataSchema)` to create a new message.\n */\nexport const AnalyticsEventDataSchema: GenMessage<AnalyticsEventData> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 2);\n\n/**\n * @generated from message plugnmeet.AnalyticsRoomInfo\n */\nexport type AnalyticsRoomInfo = Message<\"plugnmeet.AnalyticsRoomInfo\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_title = 2;\n */\n roomTitle: string;\n\n /**\n * @generated from field: int64 room_total_users = 3 [jstype = JS_STRING];\n */\n roomTotalUsers: string;\n\n /**\n * @generated from field: int64 room_creation = 4 [jstype = JS_STRING];\n */\n roomCreation: string;\n\n /**\n * @generated from field: int64 room_ended = 5 [jstype = JS_STRING];\n */\n roomEnded: string;\n\n /**\n * @generated from field: int64 room_duration = 6 [jstype = JS_STRING];\n */\n roomDuration: string;\n\n /**\n * @generated from field: bool enabled_e2ee = 7;\n */\n enabledE2ee: boolean;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsEventData events = 9;\n */\n events: AnalyticsEventData[];\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsRoomInfo.\n * Use `create(AnalyticsRoomInfoSchema)` to create a new message.\n */\nexport const AnalyticsRoomInfoSchema: GenMessage<AnalyticsRoomInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 3);\n\n/**\n * @generated from message plugnmeet.AnalyticsUserInfo\n */\nexport type AnalyticsUserInfo = Message<\"plugnmeet.AnalyticsUserInfo\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: bool is_admin = 3;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: optional string extra_data = 4;\n */\n extraData?: string;\n\n /**\n * @generated from field: optional string ex_user_id = 5;\n */\n exUserId?: string;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsEventData events = 6;\n */\n events: AnalyticsEventData[];\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsUserInfo.\n * Use `create(AnalyticsUserInfoSchema)` to create a new message.\n */\nexport const AnalyticsUserInfoSchema: GenMessage<AnalyticsUserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 4);\n\n/**\n * @generated from message plugnmeet.AnalyticsResult\n */\nexport type AnalyticsResult = Message<\"plugnmeet.AnalyticsResult\"> & {\n /**\n * @generated from field: plugnmeet.AnalyticsRoomInfo room = 1;\n */\n room?: AnalyticsRoomInfo;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsUserInfo users = 2;\n */\n users: AnalyticsUserInfo[];\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsResult.\n * Use `create(AnalyticsResultSchema)` to create a new message.\n */\nexport const AnalyticsResultSchema: GenMessage<AnalyticsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 5);\n\n/**\n * @generated from message plugnmeet.AnalyticsRedisUserInfo\n */\nexport type AnalyticsRedisUserInfo = Message<\"plugnmeet.AnalyticsRedisUserInfo\"> & {\n /**\n * @generated from field: optional string name = 1;\n */\n name?: string;\n\n /**\n * @generated from field: bool is_admin = 2;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: optional string extra_data = 3;\n */\n extraData?: string;\n\n /**\n * @generated from field: optional string ex_user_id = 4;\n */\n exUserId?: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsRedisUserInfo.\n * Use `create(AnalyticsRedisUserInfoSchema)` to create a new message.\n */\nexport const AnalyticsRedisUserInfoSchema: GenMessage<AnalyticsRedisUserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_analytics, 6);\n\n/**\n * @generated from enum plugnmeet.AnalyticsEventType\n */\nexport enum AnalyticsEventType {\n /**\n * @generated from enum value: ANALYTICS_EVENT_TYPE_ROOM = 0;\n */\n ROOM = 0,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_TYPE_USER = 1;\n */\n USER = 1,\n}\n\n/**\n * Describes the enum plugnmeet.AnalyticsEventType.\n */\nexport const AnalyticsEventTypeSchema: GenEnum<AnalyticsEventType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_analytics, 0);\n\n/**\n * @generated from enum plugnmeet.AnalyticsEvents\n */\nexport enum AnalyticsEvents {\n /**\n * @generated from enum value: ANALYTICS_EVENT_UNKNOWN = 0;\n */\n ANALYTICS_EVENT_UNKNOWN = 0,\n\n /**\n * room related\n *\n * @generated from enum value: ANALYTICS_EVENT_ROOM_POLL_ADDED = 1;\n */\n ANALYTICS_EVENT_ROOM_POLL_ADDED = 1,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_POLL_ENDED = 2;\n */\n ANALYTICS_EVENT_ROOM_POLL_ENDED = 2,\n\n /**\n * user join will be room related\n * after take record it will pass to user\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_JOINED = 3;\n */\n ANALYTICS_EVENT_USER_JOINED = 3,\n\n /**\n * room recorder\n *\n * @generated from enum value: ANALYTICS_EVENT_ROOM_RECORDING_STATUS = 4;\n */\n ANALYTICS_EVENT_ROOM_RECORDING_STATUS = 4,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_RTMP_STATUS = 5;\n */\n ANALYTICS_EVENT_ROOM_RTMP_STATUS = 5,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_BREAKOUT_ROOM = 6;\n */\n ANALYTICS_EVENT_ROOM_BREAKOUT_ROOM = 6,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_ETHERPAD_STATUS = 7;\n */\n ANALYTICS_EVENT_ROOM_ETHERPAD_STATUS = 7,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_EXTERNAL_DISPLAY_LINK_STATUS = 8;\n */\n ANALYTICS_EVENT_ROOM_EXTERNAL_DISPLAY_LINK_STATUS = 8,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_EXTERNAL_MEDIA_PLAYER_STATUS = 9;\n */\n ANALYTICS_EVENT_ROOM_EXTERNAL_MEDIA_PLAYER_STATUS = 9,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_SPEECH_SERVICE_STATUS = 10;\n */\n ANALYTICS_EVENT_ROOM_SPEECH_SERVICE_STATUS = 10,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_SPEECH_SERVICE_TOTAL_USAGE = 11;\n */\n ANALYTICS_EVENT_ROOM_SPEECH_SERVICE_TOTAL_USAGE = 11,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INGRESS_CREATED = 12;\n */\n ANALYTICS_EVENT_ROOM_INGRESS_CREATED = 12,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_WHITEBOARD_FILES = 13;\n */\n ANALYTICS_EVENT_ROOM_WHITEBOARD_FILES = 13,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_TRANSCRIPTION_STATUS = 31;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_TRANSCRIPTION_STATUS = 31,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_TRANSCRIPTION_TOTAL_USAGE = 32;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_TRANSCRIPTION_TOTAL_USAGE = 32,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_SYNTHESIZED_SPEECH_TOTAL_USAGE = 33;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_SYNTHESIZED_SPEECH_TOTAL_USAGE = 33,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_CHAT_TRANSLATION_STATUS = 34;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_CHAT_TRANSLATION_STATUS = 34,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_CHAT_TRANSLATION_TOTAL_USAGE = 35;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_CHAT_TRANSLATION_TOTAL_USAGE = 35,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_STATUS = 36;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_STATUS = 36,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_INTERACTION_TOTAL_USAGE = 37;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_INTERACTION_TOTAL_USAGE = 37,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_SUMMARIZATION_TOTAL_USAGE = 38;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_AI_TEXT_CHAT_SUMMARIZATION_TOTAL_USAGE = 38,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_ROOM_INSIGHTS_AI_MEETING_SUMMARIZATION_STATUS = 39;\n */\n ANALYTICS_EVENT_ROOM_INSIGHTS_AI_MEETING_SUMMARIZATION_STATUS = 39,\n\n /**\n * here all related with user\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_LEFT = 14;\n */\n ANALYTICS_EVENT_USER_LEFT = 14,\n\n /**\n * microphone\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_MIC_STATUS = 15;\n */\n ANALYTICS_EVENT_USER_MIC_STATUS = 15,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_TALKED = 16;\n */\n ANALYTICS_EVENT_USER_TALKED = 16,\n\n /**\n * in milliseconds\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_TALKED_DURATION = 17;\n */\n ANALYTICS_EVENT_USER_TALKED_DURATION = 17,\n\n /**\n * webcam\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_WEBCAM_STATUS = 18;\n */\n ANALYTICS_EVENT_USER_WEBCAM_STATUS = 18,\n\n /**\n * screen share\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_SCREEN_SHARE_STATUS = 19;\n */\n ANALYTICS_EVENT_USER_SCREEN_SHARE_STATUS = 19,\n\n /**\n * polls\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_VOTED_POLL = 20;\n */\n ANALYTICS_EVENT_USER_VOTED_POLL = 20,\n\n /**\n * chat\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_PUBLIC_CHAT = 21;\n */\n ANALYTICS_EVENT_USER_PUBLIC_CHAT = 21,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_PRIVATE_CHAT = 22;\n */\n ANALYTICS_EVENT_USER_PRIVATE_CHAT = 22,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_CHAT_FILES = 23;\n */\n ANALYTICS_EVENT_USER_CHAT_FILES = 23,\n\n /**\n * whiteboard\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_WHITEBOARD_ANNOTATED = 24;\n */\n ANALYTICS_EVENT_USER_WHITEBOARD_ANNOTATED = 24,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_WHITEBOARD_FILES = 25;\n */\n ANALYTICS_EVENT_USER_WHITEBOARD_FILES = 25,\n\n /**\n * speech services\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_SPEECH_SERVICES_USAGE = 26;\n */\n ANALYTICS_EVENT_USER_SPEECH_SERVICES_USAGE = 26,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_SPEECH_SERVICES_STATUS = 27;\n */\n ANALYTICS_EVENT_USER_SPEECH_SERVICES_STATUS = 27,\n\n /**\n * etc\n *\n * @generated from enum value: ANALYTICS_EVENT_USER_INTERFACE_VISIBILITY = 28;\n */\n ANALYTICS_EVENT_USER_INTERFACE_VISIBILITY = 28,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_RAISE_HAND = 29;\n */\n ANALYTICS_EVENT_USER_RAISE_HAND = 29,\n\n /**\n * @generated from enum value: ANALYTICS_EVENT_USER_CONNECTION_QUALITY = 30;\n */\n ANALYTICS_EVENT_USER_CONNECTION_QUALITY = 30,\n}\n\n/**\n * Describes the enum plugnmeet.AnalyticsEvents.\n */\nexport const AnalyticsEventsSchema: GenEnum<AnalyticsEvents> = /*@__PURE__*/\n enumDesc(file_plugnmeet_analytics, 1);\n\n/**\n * @generated from enum plugnmeet.AnalyticsStatus\n */\nexport enum AnalyticsStatus {\n /**\n * @generated from enum value: ANALYTICS_STATUS_STARTED = 0;\n */\n STARTED = 0,\n\n /**\n * @generated from enum value: ANALYTICS_STATUS_ENDED = 1;\n */\n ENDED = 1,\n\n /**\n * @generated from enum value: ANALYTICS_STATUS_MUTED = 2;\n */\n MUTED = 2,\n\n /**\n * @generated from enum value: ANALYTICS_STATUS_UNMUTED = 3;\n */\n UNMUTED = 3,\n}\n\n/**\n * Describes the enum plugnmeet.AnalyticsStatus.\n */\nexport const AnalyticsStatusSchema: GenEnum<AnalyticsStatus> = /*@__PURE__*/\n enumDesc(file_plugnmeet_analytics, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_auth_analytics.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_auth_analytics.proto.\n */\nexport const file_plugnmeet_auth_analytics: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5wbHVnbm1lZXRfYXV0aF9hbmFseXRpY3MucHJvdG8SCXBsdWdubWVldCJUChFGZXRjaEFuYWx5dGljc1JlcRIQCghyb29tX2lkcxgBIAMoCRIMCgRmcm9tGAIgASgNEg0KBWxpbWl0GAMgASgNEhAKCG9yZGVyX2J5GAQgASgJInIKDUFuYWx5dGljc0luZm8SDwoHcm9vbV9pZBgBIAEoCRIPCgdmaWxlX2lkGAIgASgJEhEKCWZpbGVfbmFtZRgDIAEoCRIRCglmaWxlX3NpemUYBCABKAESGQoNY3JlYXRpb25fdGltZRgFIAEoA0ICMAEilAEKFEZldGNoQW5hbHl0aWNzUmVzdWx0EhsKD3RvdGFsX2FuYWx5dGljcxgBIAEoA0ICMAESDAoEZnJvbRgCIAEoDRINCgVsaW1pdBgDIAEoDRIQCghvcmRlcl9ieRgEIAEoCRIwCg5hbmFseXRpY3NfbGlzdBgFIAMoCzIYLnBsdWdubWVldC5BbmFseXRpY3NJbmZvImEKEUZldGNoQW5hbHl0aWNzUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSLwoGcmVzdWx0GAMgASgLMh8ucGx1Z25tZWV0LkZldGNoQW5hbHl0aWNzUmVzdWx0Ii0KEkRlbGV0ZUFuYWx5dGljc1JlcRIXCgdmaWxlX2lkGAEgASgJQga6SAPIAQEiMQoSRGVsZXRlQW5hbHl0aWNzUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkiNwocR2V0QW5hbHl0aWNzRG93bmxvYWRUb2tlblJlcRIXCgdmaWxlX2lkGAEgASgJQga6SAPIAQEiWQocR2V0QW5hbHl0aWNzRG93bmxvYWRUb2tlblJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhIKBXRva2VuGAMgASgJSACIAQFCCAoGX3Rva2VuQqQBCg1jb20ucGx1Z25tZWV0QhtQbHVnbm1lZXRBdXRoQW5hbHl0aWNzUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_buf_validate_validate]);\n\n/**\n * @generated from message plugnmeet.FetchAnalyticsReq\n */\nexport type FetchAnalyticsReq = Message<\"plugnmeet.FetchAnalyticsReq\"> & {\n /**\n * @generated from field: repeated string room_ids = 1;\n */\n roomIds: string[];\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n};\n\n/**\n * Describes the message plugnmeet.FetchAnalyticsReq.\n * Use `create(FetchAnalyticsReqSchema)` to create a new message.\n */\nexport const FetchAnalyticsReqSchema: GenMessage<FetchAnalyticsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 0);\n\n/**\n * @generated from message plugnmeet.AnalyticsInfo\n */\nexport type AnalyticsInfo = Message<\"plugnmeet.AnalyticsInfo\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string file_id = 2;\n */\n fileId: string;\n\n /**\n * @generated from field: string file_name = 3;\n */\n fileName: string;\n\n /**\n * @generated from field: double file_size = 4;\n */\n fileSize: number;\n\n /**\n * @generated from field: int64 creation_time = 5 [jstype = JS_STRING];\n */\n creationTime: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsInfo.\n * Use `create(AnalyticsInfoSchema)` to create a new message.\n */\nexport const AnalyticsInfoSchema: GenMessage<AnalyticsInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 1);\n\n/**\n * @generated from message plugnmeet.FetchAnalyticsResult\n */\nexport type FetchAnalyticsResult = Message<\"plugnmeet.FetchAnalyticsResult\"> & {\n /**\n * @generated from field: int64 total_analytics = 1 [jstype = JS_STRING];\n */\n totalAnalytics: string;\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n\n /**\n * @generated from field: repeated plugnmeet.AnalyticsInfo analytics_list = 5;\n */\n analyticsList: AnalyticsInfo[];\n};\n\n/**\n * Describes the message plugnmeet.FetchAnalyticsResult.\n * Use `create(FetchAnalyticsResultSchema)` to create a new message.\n */\nexport const FetchAnalyticsResultSchema: GenMessage<FetchAnalyticsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 2);\n\n/**\n * @generated from message plugnmeet.FetchAnalyticsRes\n */\nexport type FetchAnalyticsRes = Message<\"plugnmeet.FetchAnalyticsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.FetchAnalyticsResult result = 3;\n */\n result?: FetchAnalyticsResult;\n};\n\n/**\n * Describes the message plugnmeet.FetchAnalyticsRes.\n * Use `create(FetchAnalyticsResSchema)` to create a new message.\n */\nexport const FetchAnalyticsResSchema: GenMessage<FetchAnalyticsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 3);\n\n/**\n * @generated from message plugnmeet.DeleteAnalyticsReq\n */\nexport type DeleteAnalyticsReq = Message<\"plugnmeet.DeleteAnalyticsReq\"> & {\n /**\n * @generated from field: string file_id = 1;\n */\n fileId: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteAnalyticsReq.\n * Use `create(DeleteAnalyticsReqSchema)` to create a new message.\n */\nexport const DeleteAnalyticsReqSchema: GenMessage<DeleteAnalyticsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 4);\n\n/**\n * @generated from message plugnmeet.DeleteAnalyticsRes\n */\nexport type DeleteAnalyticsRes = Message<\"plugnmeet.DeleteAnalyticsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteAnalyticsRes.\n * Use `create(DeleteAnalyticsResSchema)` to create a new message.\n */\nexport const DeleteAnalyticsResSchema: GenMessage<DeleteAnalyticsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 5);\n\n/**\n * @generated from message plugnmeet.GetAnalyticsDownloadTokenReq\n */\nexport type GetAnalyticsDownloadTokenReq = Message<\"plugnmeet.GetAnalyticsDownloadTokenReq\"> & {\n /**\n * @generated from field: string file_id = 1;\n */\n fileId: string;\n};\n\n/**\n * Describes the message plugnmeet.GetAnalyticsDownloadTokenReq.\n * Use `create(GetAnalyticsDownloadTokenReqSchema)` to create a new message.\n */\nexport const GetAnalyticsDownloadTokenReqSchema: GenMessage<GetAnalyticsDownloadTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 6);\n\n/**\n * @generated from message plugnmeet.GetAnalyticsDownloadTokenRes\n */\nexport type GetAnalyticsDownloadTokenRes = Message<\"plugnmeet.GetAnalyticsDownloadTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string token = 3;\n */\n token?: string;\n};\n\n/**\n * Describes the message plugnmeet.GetAnalyticsDownloadTokenRes.\n * Use `create(GetAnalyticsDownloadTokenResSchema)` to create a new message.\n */\nexport const GetAnalyticsDownloadTokenResSchema: GenMessage<GetAnalyticsDownloadTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_analytics, 7);\n\n","// Copyright 2023-2026 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.11.0 with parameter \"target=ts\"\n// @generated from file buf/validate/validate.proto (package buf.validate, syntax proto2)\n/* eslint-disable */\n\n// [Protovalidate](https://protovalidate.com/) is the semantic validation library for Protobuf.\n// It provides standard annotations to validate common rules on messages and fields, as well as the ability to use [CEL](https://cel.dev) to write custom rules.\n// It's the next generation of [protoc-gen-validate](https://github.com/bufbuild/protoc-gen-validate).\n//\n// This package provides the options, messages, and enums that power Protovalidate.\n// Apply its options to messages, fields, and oneofs in your Protobuf schemas to add validation rules:\n//\n// ```proto\n// message User {\n// string id = 1 [(buf.validate.field).string.uuid = true];\n// string first_name = 2 [(buf.validate.field).string.max_len = 64];\n// string last_name = 3 [(buf.validate.field).string.max_len = 64];\n//\n// option (buf.validate.message).cel = {\n// id: \"first_name_requires_last_name\"\n// message: \"last_name must be present if first_name is present\"\n// expression: \"!has(this.first_name) || has(this.last_name)\"\n// };\n// }\n// ```\n//\n// These rules are enforced at runtime by language-specific libraries.\n// See the [developer quickstart](https://protovalidate.com/quickstart/) to get started, or go directly to the runtime library for your language:\n// [Go](https://github.com/bufbuild/protovalidate-go)\n// [JavaScript/TypeScript](https://github.com/bufbuild/protovalidate-es),\n// [Java](https://github.com/bufbuild/protovalidate-java),\n// [Python](https://github.com/bufbuild/protovalidate-python),\n// or [C++](https://github.com/bufbuild/protovalidate-cc).\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Duration, FieldDescriptorProto_Type, FieldMask, FieldOptions, MessageOptions, OneofOptions, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_field_mask, 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(\"ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSLaFwoKRmxvYXRSdWxlcxKDAQoFY29uc3QYASABKAJCdMJIcQpvCgtmbG9hdC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEp8BCgJsdBgCIAEoAkKQAcJIjAEKiQEKCGZsb2F0Lmx0Gn0haGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0KT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEq8BCgNsdGUYAyABKAJCnwHCSJsBCpgBCglmbG9hdC5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLvBwoCZ3QYBCABKAJC4AfCSNwHCo0BCghmbG9hdC5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsMBCgtmbG9hdC5ndF9sdBqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCs0BChVmbG9hdC5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrTAQoMZmxvYXQuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3QEKFmZsb2F0Lmd0X2x0ZV9leGNsdXNpdmUawgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEroICgNndGUYBSABKAJCqgjCSKYICpsBCglmbG9hdC5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0gEKDGZsb2F0Lmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3AEKFmZsb2F0Lmd0ZV9sdF9leGNsdXNpdmUawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCuIBCg1mbG9hdC5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrsAQoXZmxvYXQuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESfwoCaW4YBiADKAJCc8JIcApuCghmbG9hdC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdgoGbm90X2luGAcgAygCQmbCSGMKYQoMZmxvYXQubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdQoGZmluaXRlGAggASgIQmXCSGIKYAoMZmxvYXQuZmluaXRlGlBydWxlcy5maW5pdGUgPyAodGhpcy5pc05hbigpIHx8IHRoaXMuaXNJbmYoKSA/ICd2YWx1ZSBtdXN0IGJlIGZpbml0ZScgOiAnJykgOiAnJxIrCgdleGFtcGxlGAkgAygCQhrCSBcKFQoNZmxvYXQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i7RcKC0RvdWJsZVJ1bGVzEoQBCgVjb25zdBgBIAEoAUJ1wkhyCnAKDGRvdWJsZS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqABCgJsdBgCIAEoAUKRAcJIjQEKigEKCWRvdWJsZS5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKwAQoDbHRlGAMgASgBQqABwkicAQqZAQoKZG91YmxlLmx0ZRqKASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvQHCgJndBgEIAEoAULlB8JI4QcKjgEKCWRvdWJsZS5ndBqAASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCsQBCgxkb3VibGUuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrOAQoWZG91YmxlLmd0X2x0X2V4Y2x1c2l2ZRqzAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCtQBCg1kb3VibGUuZ3RfbHRlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycK3gEKF2RvdWJsZS5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK/CAoDZ3RlGAUgASgBQq8IwkirCAqcAQoKZG91YmxlLmd0ZRqNASFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrTAQoNZG91YmxlLmd0ZV9sdBrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK3QEKF2RvdWJsZS5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrjAQoOZG91YmxlLmd0ZV9sdGUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCu0BChhkb3VibGUuZ3RlX2x0ZV9leGNsdXNpdmUa0AFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygBQnTCSHEKbwoJZG91YmxlLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKAFCZ8JIZApiCg1kb3VibGUubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSdgoGZmluaXRlGAggASgIQmbCSGMKYQoNZG91YmxlLmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSLAoHZXhhbXBsZRgJIAMoAUIbwkgYChYKDmRvdWJsZS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKMFQoKSW50MzJSdWxlcxKDAQoFY29uc3QYASABKAVCdMJIcQpvCgtpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEooBCgJsdBgCIAEoBUJ8wkh5CncKCGludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpwBCgNsdGUYAyABKAVCjAHCSIgBCoUBCglpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpcHCgJndBgEIAEoBUKIB8JIhAcKegoIaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrMBCgtpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKuwEKFWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsMBCgxpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCssBChZpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLjBwoDZ3RlGAUgASgFQtMHwkjPBwqIAQoJaW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwgEKDGludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrKAQoWaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0gEKDWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2gEKF2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygFQnPCSHAKbgoIaW50MzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoBUJmwkhjCmEKDGludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCCADKAVCGsJIFwoVCg1pbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKdFQoKSW50NjRSdWxlcxKFAQoFY29uc3QYASABKANCdjABwkhxCm8KC2ludDY0LmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgDQn4wAcJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgDQo4BMAHCSIgBCoUBCglpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpkHCgJndBgEIAEoA0KKBzABwkiEBwp6CghpbnQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKswEKC2ludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq7AQoVaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwwEKDGludDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKywEKFmludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEuUHCgNndGUYBSABKANC1QcwAcJIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKANCdTABwkhwCm4KCGludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKANCaDABwkhjCmEKDGludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCSADKANCHDABwkgXChUKDWludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIp4VCgtVSW50MzJSdWxlcxKEAQoFY29uc3QYASABKA1CdcJIcgpwCgx1aW50MzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKLAQoCbHQYAiABKA1CfcJIegp4Cgl1aW50MzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnQEKA2x0ZRgDIAEoDUKNAcJIiQEKhgEKCnVpbnQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEpwHCgJndBgEIAEoDUKNB8JIiQcKewoJdWludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMdWludDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWdWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg11aW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXdWludDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEugHCgNndGUYBSABKA1C2AfCSNQHCokBCgp1aW50MzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwwEKDXVpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKywEKF3VpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrTAQoOdWludDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2wEKGHVpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKAAQoCaW4YBiADKA1CdMJIcQpvCgl1aW50MzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEncKBm5vdF9pbhgHIAMoDUJnwkhkCmIKDXVpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygNQhvCSBgKFgoOdWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIq4VCgtVSW50NjRSdWxlcxKGAQoFY29uc3QYASABKARCdzABwkhyCnAKDHVpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo0BCgJsdBgCIAEoBEJ/MAHCSHoKeAoJdWludDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKARCjwEwAcJIiQEKhgEKCnVpbnQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEp4HCgJndBgEIAEoBEKPBzABwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6gcKA2d0ZRgFIAEoBELaBzABwkjUBwqJAQoKdWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg11aW50NjQuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnVpbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygEQnYwAcJIcQpvCgl1aW50NjQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoBEJpMAHCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKARCHTABwkgYChYKDnVpbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKeFQoLU0ludDMyUnVsZXMShAEKBWNvbnN0GAEgASgRQnXCSHIKcAoMc2ludDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSiwEKAmx0GAIgASgRQn3CSHoKeAoJc2ludDMyLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp0BCgNsdGUYAyABKBFCjQHCSIkBCoYBCgpzaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKcBwoCZ3QYBCABKBFCjQfCSIkHCnsKCXNpbnQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtAEKDHNpbnQzMi5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvAEKFnNpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrEAQoNc2ludDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzAEKF3NpbnQzMi5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLoBwoDZ3RlGAUgASgRQtgHwkjUBwqJAQoKc2ludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsMBCg1zaW50MzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCssBChdzaW50MzIuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK0wEKDnNpbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtsBChhzaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgAEKAmluGAYgAygRQnTCSHEKbwoJc2ludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YByADKBFCZ8JIZApiCg1zaW50MzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKuFQoLU0ludDY0UnVsZXMShgEKBWNvbnN0GAEgASgSQncwAcJIcgpwCgxzaW50NjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKNAQoCbHQYAiABKBJCfzABwkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgSQo8BMAHCSIkBCoYBCgpzaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKeBwoCZ3QYBCABKBJCjwcwAcJIiQcKewoJc2ludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq0AQoMc2ludDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq8AQoWc2ludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsQBCg1zaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrMAQoXc2ludDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEuoHCgNndGUYBSABKBJC2gcwAcJI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoIBCgJpbhgGIAMoEkJ2MAHCSHEKbwoJc2ludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ5CgZub3RfaW4YByADKBJCaTABwkhkCmIKDXNpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygSQh0wAcJIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4irxUKDEZpeGVkMzJSdWxlcxKFAQoFY29uc3QYASABKAdCdsJIcwpxCg1maXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgQEKAmluGAYgAygHQnXCSHIKcAoKZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeAoGbm90X2luGAcgAygHQmjCSGUKYwoOZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxItCgdleGFtcGxlGAggAygHQhzCSBkKFwoPZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLAFQoMRml4ZWQ2NFJ1bGVzEocBCgVjb25zdBgBIAEoBkJ4MAHCSHMKcQoNZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo8BCgJsdBgCIAEoBkKAATABwkh7CnkKCmZpeGVkNjQubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASoAEKA2x0ZRgDIAEoBkKQATABwkiKAQqHAQoLZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqMHCgJndBgEIAEoBkKUBzABwkiOBwp8CgpmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLvBwoDZ3RlGAUgASgGQt8HMAHCSNkHCooBCgtmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsQBCg5maXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoYZml4ZWQ2NC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrUAQoPZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtwBChlmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoMBCgJpbhgGIAMoBkJ3MAHCSHIKcAoKZml4ZWQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSegoGbm90X2luGAcgAygGQmowAcJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi8KB2V4YW1wbGUYCCADKAZCHjABwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwBUKDVNGaXhlZDMyUnVsZXMShgEKBWNvbnN0GAEgASgPQnfCSHQKcgoOc2ZpeGVkMzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKNAQoCbHQYAiABKA9Cf8JIfAp6CgtzZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKfAQoDbHRlGAMgASgPQo8BwkiLAQqIAQoMc2ZpeGVkMzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKmBwoCZ3QYBCABKA9ClwfCSJMHCn0KC3NmaXhlZDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOc2ZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPc2ZpeGVkMzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES8gcKA2d0ZRgFIAEoD0LiB8JI3gcKiwEKDHNmaXhlZDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKCAQoCaW4YBiADKA9CdsJIcwpxCgtzZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeQoGbm90X2luGAcgAygPQmnCSGYKZAoPc2ZpeGVkMzIubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLgoHZXhhbXBsZRgIIAMoD0IdwkgaChgKEHNmaXhlZDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuItEVCg1TRml4ZWQ2NFJ1bGVzEogBCgVjb25zdBgBIAEoEEJ5MAHCSHQKcgoOc2ZpeGVkNjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKQAQoCbHQYAiABKBBCgQEwAcJIfAp6CgtzZml4ZWQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKhAQoDbHRlGAMgASgQQpEBMAHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqgHCgJndBgEIAEoEEKZBzABwkiTBwp9CgtzZml4ZWQ2NC5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDY0Lmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDY0Lmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDY0Lmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvQHCgNndGUYBSABKBBC5AcwAcJI3gcKiwEKDHNmaXhlZDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9zZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBzZml4ZWQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKEAQoCaW4YBiADKBBCeDABwkhzCnEKC3NmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ7CgZub3RfaW4YByADKBBCazABwkhmCmQKD3NmaXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEjAKB2V4YW1wbGUYCCADKBBCHzABwkgaChgKEHNmaXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIscBCglCb29sUnVsZXMSggEKBWNvbnN0GAEgASgIQnPCSHAKbgoKYm9vbC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEioKB2V4YW1wbGUYAiADKAhCGcJIFgoUCgxib29sLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAiKVOQoLU3RyaW5nUnVsZXMShgEKBWNvbnN0GAEgASgJQnfCSHQKcgoMc3RyaW5nLmNvbnN0GmJ0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsIGAlc2AnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKAAQoDbGVuGBMgASgEQnMwAcJIbgpsCgpzdHJpbmcubGVuGl51aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEpsBCgdtaW5fbGVuGAIgASgEQokBMAHCSIMBCoABCg5zdHJpbmcubWluX2xlbhpudWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSmQEKB21heF9sZW4YAyABKARChwEwAcJIgQEKfwoOc3RyaW5nLm1heF9sZW4abXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSnQEKCWxlbl9ieXRlcxgUIAEoBEKJATABwkiDAQqAAQoQc3RyaW5nLmxlbl9ieXRlcxpsdWludChieXRlcyh0aGlzKS5zaXplKCkpICE9IHJ1bGVzLmxlbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5sZW5fYnl0ZXNdKSA6ICcnEqUBCgltaW5fYnl0ZXMYBCABKARCkQEwAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fYnl0ZXNdKSA6ICcnEqQBCgltYXhfYnl0ZXMYBSABKARCkAEwAcJIigEKhwEKEHN0cmluZy5tYXhfYnl0ZXMac3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBtb3N0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1heF9ieXRlc10pIDogJycSjQEKB3BhdHRlcm4YBiABKAlCfMJIeQp3Cg5zdHJpbmcucGF0dGVybhplIXRoaXMubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBkb2VzIG5vdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycShAEKBnByZWZpeBgHIAEoCUJ0wkhxCm8KDXN0cmluZy5wcmVmaXgaXiF0aGlzLnN0YXJ0c1dpdGgocnVsZXMucHJlZml4KSA/ICd2YWx1ZSBkb2VzIG5vdCBoYXZlIHByZWZpeCBgJXNgJy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSggEKBnN1ZmZpeBgIIAEoCUJywkhvCm0KDXN0cmluZy5zdWZmaXgaXCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEpABCghjb250YWlucxgJIAEoCUJ+wkh7CnkKD3N0cmluZy5jb250YWlucxpmIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpgBCgxub3RfY29udGFpbnMYFyABKAlCgQHCSH4KfAoTc3RyaW5nLm5vdF9jb250YWlucxpldGhpcy5jb250YWlucyhydWxlcy5ub3RfY29udGFpbnMpID8gJ3ZhbHVlIGNvbnRhaW5zIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLm5vdF9jb250YWluc10pIDogJycSgAEKAmluGAogAygJQnTCSHEKbwoJc3RyaW5nLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ3CgZub3RfaW4YCyADKAlCZ8JIZApiCg1zdHJpbmcubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS3wEKBWVtYWlsGAwgASgIQs0BwkjJAQphCgxzdHJpbmcuZW1haWwSI3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGiwhcnVsZXMuZW1haWwgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzRW1haWwoKQpkChJzdHJpbmcuZW1haWxfZW1wdHkSMnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBlbWFpbCBhZGRyZXNzGhohcnVsZXMuZW1haWwgfHwgdGhpcyAhPSAnJ0gAEucBCghob3N0bmFtZRgNIAEoCELSAcJIzgEKZQoPc3RyaW5nLmhvc3RuYW1lEh52YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdG5hbWUaMiFydWxlcy5ob3N0bmFtZSB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpCmUKFXN0cmluZy5ob3N0bmFtZV9lbXB0eRItdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lGh0hcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyAhPSAnJ0gAEscBCgJpcBgOIAEoCEK4AcJItAEKVQoJc3RyaW5nLmlwEiB2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxomIXJ1bGVzLmlwIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKCkKWwoPc3RyaW5nLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxoXIXJ1bGVzLmlwIHx8IHRoaXMgIT0gJydIABLWAQoEaXB2NBgPIAEoCELFAcJIwQEKXAoLc3RyaW5nLmlwdjQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaKSFydWxlcy5pcHY0IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwKDQpCmEKEXN0cmluZy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGhkhcnVsZXMuaXB2NCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjYYECABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGikhcnVsZXMuaXB2NiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg2KQphChFzdHJpbmcuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxoZIXJ1bGVzLmlwdjYgfHwgdGhpcyAhPSAnJ0gAEr8BCgN1cmkYESABKAhCrwHCSKsBClEKCnN0cmluZy51cmkSGXZhbHVlIG11c3QgYmUgYSB2YWxpZCBVUkkaKCFydWxlcy51cmkgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzVXJpKCkKVgoQc3RyaW5nLnVyaV9lbXB0eRIodmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVSSRoYIXJ1bGVzLnVyaSB8fCB0aGlzICE9ICcnSAAScAoHdXJpX3JlZhgSIAEoCEJdwkhaClgKDnN0cmluZy51cmlfcmVmEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJIFJlZmVyZW5jZRohIXJ1bGVzLnVyaV9yZWYgfHwgdGhpcy5pc1VyaVJlZigpSAASkAIKB2FkZHJlc3MYFSABKAhC/AHCSPgBCoEBCg5zdHJpbmcuYWRkcmVzcxItdmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKYAgoEdXVpZBgWIAEoCEKHAsJIgwIKpQEKC3N0cmluZy51dWlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS8AEKBXR1dWlkGCEgASgIQt4BwkjaAQpzCgxzdHJpbmcudHV1aWQSInZhbHVlIG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASlgIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvgBwkj0AQp4ChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEs8CChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQq8CwkirAgqTAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SNXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS8gEKCWlwX3ByZWZpeBgdIAEoCELcAcJI2AEKbAoQc3RyaW5nLmlwX3ByZWZpeBIfdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABKDAgoLaXB2NF9wcmVmaXgYHiABKAhC6wHCSOcBCnUKEnN0cmluZy5pcHY0X3ByZWZpeBIhdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjZfcHJlZml4GB8gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2Nl9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAErUCCg1ob3N0X2FuZF9wb3J0GCAgASgIQpsCwkiXAgqZAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSQXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEvUBCgR1bGlkGCMgASgIQuQBwkjgAQqCAQoLc3RyaW5nLnVsaWQSGnZhbHVlIG11c3QgYmUgYSB2YWxpZCBVTElEGlchcnVsZXMudWxpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTddWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNX0kJykKWQoRc3RyaW5nLnVsaWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVTElEGhkhcnVsZXMudWxpZCB8fCB0aGlzICE9ICcnSAASqAUKEHdlbGxfa25vd25fcmVnZXgYGCABKA4yGC5idWYudmFsaWRhdGUuS25vd25SZWdleELxBMJI7QQK8AEKI3N0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lEiZ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRqgAXJ1bGVzLndlbGxfa25vd25fcmVnZXggIT0gMSB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXjo/WzAtOWEtekEtWiEjJCUmXCcqKy0uXl98flx4NjBdKyQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSskJykKjQEKKXN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl9uYW1lX2VtcHR5EjV2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSFRUUCBoZWFkZXIgbmFtZRopcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgIT0gJycK5wEKJHN0cmluZy53ZWxsX2tub3duX3JlZ2V4LmhlYWRlcl92YWx1ZRIndmFsdWUgbXVzdCBiZSBhIHZhbGlkIEhUVFAgaGVhZGVyIHZhbHVlGpUBcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAyIHx8IHRoaXMubWF0Y2hlcyghaGFzKHJ1bGVzLnN0cmljdCkgfHwgcnVsZXMuc3RyaWN0ID8nXlteXHUwMDAwLVx1MDAwOFx1MDAwQS1cdTAwMUZcdTAwN0ZdKiQnIDonXlteXHUwMDAwXHUwMDBBXHUwMDBEXSokJylIABIOCgZzdHJpY3QYGSABKAgSLAoHZXhhbXBsZRgiIAMoCUIbwkgYChYKDnN0cmluZy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLJEgoKQnl0ZXNSdWxlcxKAAQoFY29uc3QYASABKAxCccJIbgpsCgtieXRlcy5jb25zdBpddGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBiZSAleCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEnoKA2xlbhgNIAEoBEJtMAHCSGgKZgoJYnl0ZXMubGVuGll1aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKTAQoHbWluX2xlbhgCIAEoBEKBATABwkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKKAQoHbWF4X2xlbhgDIAEoBEJ5MAHCSHQKcgoNYnl0ZXMubWF4X2xlbhphdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ3ZhbHVlIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfbGVuXSkgOiAnJxKQAQoHcGF0dGVybhgEIAEoCUJ/wkh8CnoKDWJ5dGVzLnBhdHRlcm4aaSFzdHJpbmcodGhpcykubWF0Y2hlcyhydWxlcy5wYXR0ZXJuKSA/ICd2YWx1ZSBtdXN0IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxKBAQoGcHJlZml4GAUgASgMQnHCSG4KbAoMYnl0ZXMucHJlZml4GlwhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ/CgZzdWZmaXgYBiABKAxCb8JIbApqCgxieXRlcy5zdWZmaXgaWiF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKDAQoIY29udGFpbnMYByABKAxCccJIbgpsCg5ieXRlcy5jb250YWlucxpaIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ3ZhbHVlIGRvZXMgbm90IGNvbnRhaW4gJXgnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEqcBCgJpbhgIIAMoDEKaAcJIlgEKkwEKCGJ5dGVzLmluGoYBZ2V0RmllbGQocnVsZXMsICdpbicpLnNpemUoKSA+IDAgJiYgISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdgoGbm90X2luGAkgAygMQmbCSGMKYQoMYnl0ZXMubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycS6wEKAmlwGAogASgIQtwBwkjYAQp0CghieXRlcy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaRiFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSA9PSAwIHx8IHRoaXMuc2l6ZSgpID09IDQgfHwgdGhpcy5zaXplKCkgPT0gMTYKYAoOYnl0ZXMuaXBfZW1wdHkSL3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBhZGRyZXNzGh0hcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgIT0gMEgAEuQBCgRpcHY0GAsgASgIQtMBwkjPAQplCgpieXRlcy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGjMhcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSA9PSAwIHx8IHRoaXMuc2l6ZSgpID09IDQKZgoQYnl0ZXMuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxofIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEuUBCgRpcHY2GAwgASgIQtQBwkjQAQpmCgpieXRlcy5pcHY2EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzGjQhcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSA9PSAwIHx8IHRoaXMuc2l6ZSgpID09IDE2CmYKEGJ5dGVzLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaHyFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLVAQoEdXVpZBgPIAEoCELEAcJIwAEKXgoKYnl0ZXMudXVpZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaNCFydWxlcy51dWlkIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKXgoQYnl0ZXMudXVpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVVSUQaHyFydWxlcy51dWlkIHx8IHRoaXMuc2l6ZSgpICE9IDBIABIrCgdleGFtcGxlGA4gAygMQhrCSBcKFQoNYnl0ZXMuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgwKCndlbGxfa25vd24i1AMKCUVudW1SdWxlcxKCAQoFY29uc3QYASABKAVCc8JIcApuCgplbnVtLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSFAoMZGVmaW5lZF9vbmx5GAIgASgIEn4KAmluGAMgAygFQnLCSG8KbQoHZW51bS5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdQoGbm90X2luGAQgAygFQmXCSGIKYAoLZW51bS5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIqCgdleGFtcGxlGAUgAygFQhnCSBYKFAoMZW51bS5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi/wMKDVJlcGVhdGVkUnVsZXMSoAEKCW1pbl9pdGVtcxgBIAEoBEKMATABwkiGAQqDAQoScmVwZWF0ZWQubWluX2l0ZW1zGm11aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICd2YWx1ZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEqQBCgltYXhfaXRlbXMYAiABKARCkAEwAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSJwoFaXRlbXMYBCABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlcyoJCOgHEICAgIACIo4DCghNYXBSdWxlcxKRAQoJbWluX3BhaXJzGAEgASgEQn4wAcJIeQp3Cg1tYXAubWluX3BhaXJzGmZ1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBsZWFzdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1pbl9wYWlyc10pIDogJycSkAEKCW1heF9wYWlycxgCIAEoBEJ9MAHCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIpkXCg1EdXJhdGlvblJ1bGVzEqEBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJ3wkh0CnIKDmR1cmF0aW9uLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSqAEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQn/CSHwKegoLZHVyYXRpb24ubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASugEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKPAcJIiwEKiAEKDGR1cmF0aW9uLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASwQcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQpcHwkiTBwp9CgtkdXJhdGlvbi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDmR1cmF0aW9uLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD2R1cmF0aW9uLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEo0ICgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25C4gfCSN4HCosBCgxkdXJhdGlvbi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPZHVyYXRpb24uZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQZHVyYXRpb24uZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESnQEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnbCSHMKcQoLZHVyYXRpb24uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEpQBCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CacJIZgpkCg9kdXJhdGlvbi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i/QUKDkZpZWxkTWFza1J1bGVzEr8BCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCkwHCSI8BCowBChBmaWVsZF9tYXNrLmNvbnN0Gnh0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICd2YWx1ZSBtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS2QEKAmluGAIgAygJQswBwkjIAQrFAQoNZmllbGRfbWFzay5pbhqzASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICd2YWx1ZSBtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEvMBCgZub3RfaW4YAyADKAlC4gHCSN4BCtsBChFmaWVsZF9tYXNrLm5vdF9pbhrFASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ3ZhbHVlIG11c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIikhgKDlRpbWVzdGFtcFJ1bGVzEqMBCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCeMJIdQpzCg90aW1lc3RhbXAuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKrAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQoABwkh9CnsKDHRpbWVzdGFtcC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK8AQoDbHRlGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKQAcJIjAEKiQEKDXRpbWVzdGFtcC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEmwKBmx0X25vdxgHIAEoCEJawkhXClUKEHRpbWVzdGFtcC5sdF9ub3caQShydWxlcy5sdF9ub3cgJiYgdGhpcyA+IG5vdykgPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gbm93JyA6ICcnSAASxwcKAmd0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKcB8JImAcKfgoMdGltZXN0YW1wLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq3AQoPdGltZXN0YW1wLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq/AQoZdGltZXN0YW1wLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCscBChB0aW1lc3RhbXAuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrPAQoadGltZXN0YW1wLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEpMICgNndGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQucHwkjjBwqMAQoNdGltZXN0YW1wLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsYBChB0aW1lc3RhbXAuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs4BChp0aW1lc3RhbXAuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1gEKEXRpbWVzdGFtcC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt4BCht0aW1lc3RhbXAuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESbwoGZ3Rfbm93GAggASgIQl3CSFoKWAoQdGltZXN0YW1wLmd0X25vdxpEKHJ1bGVzLmd0X25vdyAmJiB0aGlzIDwgbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBub3cnIDogJydIARK4AQoGd2l0aGluGAkgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQowBwkiIAQqFAQoQdGltZXN0YW1wLndpdGhpbhpxdGhpcyA8IG5vdy1ydWxlcy53aXRoaW4gfHwgdGhpcyA+IG5vdytydWxlcy53aXRoaW4gPyAndmFsdWUgbXVzdCBiZSB3aXRoaW4gJXMgb2Ygbm93Jy5mb3JtYXQoW3J1bGVzLndpdGhpbl0pIDogJycSSwoHZXhhbXBsZRgKIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCHsJIGwoZChF0aW1lc3RhbXAuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iOQoKVmlvbGF0aW9ucxIrCgp2aW9sYXRpb25zGAEgAygLMhcuYnVmLnZhbGlkYXRlLlZpb2xhdGlvbiKfAQoJVmlvbGF0aW9uEiYKBWZpZWxkGAUgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIlCgRydWxlGAYgASgLMhcuYnVmLnZhbGlkYXRlLkZpZWxkUGF0aBIPCgdydWxlX2lkGAIgASgJEg8KB21lc3NhZ2UYAyABKAkSDwoHZm9yX2tleRgEIAEoCEoECAEQAlIKZmllbGRfcGF0aCI9CglGaWVsZFBhdGgSMAoIZWxlbWVudHMYASADKAsyHi5idWYudmFsaWRhdGUuRmllbGRQYXRoRWxlbWVudCL1AgoQRmllbGRQYXRoRWxlbWVudBIUCgxmaWVsZF9udW1iZXIYASABKAUSEgoKZmllbGRfbmFtZRgCIAEoCRI+CgpmaWVsZF90eXBlGAMgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPAoIa2V5X3R5cGUYBCABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI+Cgp2YWx1ZV90eXBlGAUgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSEwoFaW5kZXgYBiABKARCAjABSAASEgoIYm9vbF9rZXkYByABKAhIABIVCgdpbnRfa2V5GAggASgDQgIwAUgAEhYKCHVpbnRfa2V5GAkgASgEQgIwAUgAEhQKCnN0cmluZ19rZXkYCiABKAlIAEILCglzdWJzY3JpcHQqoQEKBklnbm9yZRIWChJJR05PUkVfVU5TUEVDSUZJRUQQABIYChRJR05PUkVfSUZfWkVST19WQUxVRRABEhEKDUlHTk9SRV9BTFdBWVMQAyIECAIQAioMSUdOT1JFX0VNUFRZKg5JR05PUkVfREVGQVVMVCoXSUdOT1JFX0lGX0RFRkFVTFRfVkFMVUUqFUlHTk9SRV9JRl9VTlBPUFVMQVRFRCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQrsBChBjb20uYnVmLnZhbGlkYXRlQg1WYWxpZGF0ZVByb3RvUAFaR2J1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcHJvdG92YWxpZGF0ZS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3ZhbGlkYXRlogIDQlZYqgIMQnVmLlZhbGlkYXRlygIMQnVmXFZhbGlkYXRl4gIYQnVmXFZhbGlkYXRlXEdQQk1ldGFkYXRh6gINQnVmOjpWYWxpZGF0ZQ\", [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_timestamp]);\n\n/**\n * `Rule` represents a validation rule written in the Common Expression\n * Language (CEL) syntax. Each Rule includes a unique identifier, an\n * optional error message, and the CEL expression to evaluate. For more\n * information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\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.Rule\n */\nexport type Rule = Message<\"buf.validate.Rule\"> & {\n /**\n * `id` is a string that serves as a machine-readable name for this Rule.\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 Rule 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.Rule.\n * Use `create(RuleSchema)` to create a new message.\n */\nexport const RuleSchema: GenMessage<Rule> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 0);\n\n/**\n * MessageRules represents validation rules that are applied to the entire message.\n * It includes disabling options and a list of Rule messages representing Common Expression Language (CEL) validation rules.\n *\n * @generated from message buf.validate.MessageRules\n */\nexport type MessageRules = Message<\"buf.validate.MessageRules\"> & {\n /**\n * `cel_expression` is a repeated field CEL expressions. Each expression specifies a validation\n * rule to be applied to this message. These rules are written in Common Expression Language (CEL) syntax.\n *\n * This is a simplified form of the `cel` Rule field, where only `expression` is set. This allows for\n * simpler syntax when defining CEL Rules where `id` and `message` derived from the `expression`. `id` will\n * be same as the `expression`.\n *\n * For more information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message MyMessage {\n * // The field `foo` must be greater than 42.\n * option (buf.validate.message).cel_expression = \"this.foo > 42\";\n * // The field `foo` must be less than 84.\n * option (buf.validate.message).cel_expression = \"this.foo < 84\";\n * optional int32 foo = 1;\n * }\n * ```\n *\n * @generated from field: repeated string cel_expression = 5;\n */\n celExpression: string[];\n\n /**\n * `cel` is a repeated field of type Rule. Each Rule specifies a validation rule to be applied to this message.\n * These rules are written in Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\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.Rule cel = 3;\n */\n cel: Rule[];\n\n /**\n * `oneof` is a repeated field of type MessageOneofRule that specifies a list of fields\n * of which at most one can be present. If `required` is also specified, then exactly one\n * of the specified fields _must_ be present.\n *\n * This will enforce oneof-like constraints with a few features not provided by\n * actual Protobuf oneof declarations:\n * 1. Repeated and map fields are allowed in this validation. In a Protobuf oneof,\n * only scalar fields are allowed.\n * 2. Fields with implicit presence are allowed. In a Protobuf oneof, all member\n * fields have explicit presence. This means that, for the purpose of determining\n * how many fields are set, explicitly setting such a field to its zero value is\n * effectively the same as not setting it at all.\n * 3. This will always generate validation errors for a message unmarshalled from\n * serialized data that sets more than one field. With a Protobuf oneof, when\n * multiple fields are present in the serialized form, earlier values are usually\n * silently ignored when unmarshalling, with only the last field being set when\n * unmarshalling completes.\n *\n * Note that adding a field to a `oneof` will also set the IGNORE_IF_ZERO_VALUE on the fields. This means\n * only the field that is set will be validated and the unset fields are not validated according to the field rules.\n * This behavior can be overridden by setting `ignore` against a field.\n *\n * ```proto\n * message MyMessage {\n * // Only one of `field1` or `field2` _can_ be present in this message.\n * option (buf.validate.message).oneof = { fields: [\"field1\", \"field2\"] };\n * // Exactly one of `field3` or `field4` _must_ be present in this message.\n * option (buf.validate.message).oneof = { fields: [\"field3\", \"field4\"], required: true };\n * string field1 = 1;\n * bytes field2 = 2;\n * bool field3 = 3;\n * int32 field4 = 4;\n * }\n * ```\n *\n * @generated from field: repeated buf.validate.MessageOneofRule oneof = 4;\n */\n oneof: MessageOneofRule[];\n};\n\n/**\n * Describes the message buf.validate.MessageRules.\n * Use `create(MessageRulesSchema)` to create a new message.\n */\nexport const MessageRulesSchema: GenMessage<MessageRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 1);\n\n/**\n * @generated from message buf.validate.MessageOneofRule\n */\nexport type MessageOneofRule = Message<\"buf.validate.MessageOneofRule\"> & {\n /**\n * A list of field names to include in the oneof. All field names must be\n * defined in the message. At least one field must be specified, and\n * duplicates are not permitted.\n *\n * @generated from field: repeated string fields = 1;\n */\n fields: string[];\n\n /**\n * If true, one of the fields specified _must_ be set.\n *\n * @generated from field: optional bool required = 2;\n */\n required: boolean;\n};\n\n/**\n * Describes the message buf.validate.MessageOneofRule.\n * Use `create(MessageOneofRuleSchema)` to create a new message.\n */\nexport const MessageOneofRuleSchema: GenMessage<MessageOneofRule> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 2);\n\n/**\n * The `OneofRules` message type enables you to manage rules for\n * oneof fields in your protobuf messages.\n *\n * @generated from message buf.validate.OneofRules\n */\nexport type OneofRules = Message<\"buf.validate.OneofRules\"> & {\n /**\n * If `required` is true, exactly one field of the oneof must be set. A\n * validation error is returned if no fields in the oneof are set. Further rules\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.OneofRules.\n * Use `create(OneofRulesSchema)` to create a new message.\n */\nexport const OneofRulesSchema: GenMessage<OneofRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 3);\n\n/**\n * FieldRules 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.FieldRules\n */\nexport type FieldRules = Message<\"buf.validate.FieldRules\"> & {\n /**\n * `cel_expression` is a repeated field CEL expressions. Each expression specifies a validation\n * rule to be applied to this message. These rules are written in Common Expression Language (CEL) syntax.\n *\n * This is a simplified form of the `cel` Rule field, where only `expression` is set. This allows for\n * simpler syntax when defining CEL Rules where `id` and `message` derived from the `expression`. `id` will\n * be same as the `expression`.\n *\n * For more information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message MyMessage {\n * // The field `value` must be greater than 42.\n * optional int32 value = 1 [(buf.validate.field).cel_expression = \"this > 42\"];\n * }\n * ```\n *\n * @generated from field: repeated string cel_expression = 29;\n */\n celExpression: string[];\n\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\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.Rule cel = 23;\n */\n cel: Rule[];\n\n /**\n * If `required` is true, the field must be set. A validation error is returned\n * if the field is not set.\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message FieldsWithPresence {\n * // Requires any string to be set, including the empty string.\n * optional string link = 1 [\n * (buf.validate.field).required = true\n * ];\n * // Requires true or false to be set.\n * optional bool disabled = 2 [\n * (buf.validate.field).required = true\n * ];\n * // Requires a message to be set, including the empty message.\n * SomeMessage msg = 4 [\n * (buf.validate.field).required = true\n * ];\n * }\n * ```\n *\n * All fields in the example above track presence. By default, Protovalidate\n * ignores rules on those fields if no value is set. `required` ensures that\n * the fields are set and valid.\n *\n * Fields that don't track presence are always validated by Protovalidate,\n * whether they are set or not. It is not necessary to add `required`. It\n * can be added to indicate that the field cannot be the zero value.\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message FieldsWithoutPresence {\n * // `string.email` always applies, even to an empty string.\n * string link = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * // `repeated.min_items` always applies, even to an empty list.\n * repeated string labels = 2 [\n * (buf.validate.field).repeated.min_items = 1\n * ];\n * // `required`, for fields that don't track presence, indicates\n * // the value of the field can't be the zero value.\n * int32 zero_value_not_allowed = 3 [\n * (buf.validate.field).required = true\n * ];\n * }\n * ```\n *\n * To learn which fields track presence, see the\n * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat).\n *\n * Note: While field rules can be applied to repeated items, map keys, and map\n * values, the elements are always considered to be set. Consequently,\n * specifying `repeated.items.required` is redundant.\n *\n * @generated from field: optional bool required = 25;\n */\n required: boolean;\n\n /**\n * Ignore validation rules on the field if its value matches the specified\n * criteria. See the `Ignore` enum for details.\n *\n * ```proto\n * message UpdateRequest {\n * // The uri rule only applies if the field is not an empty string.\n * string url = 1 [\n * (buf.validate.field).ignore = IGNORE_IF_ZERO_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.FieldRules.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.FieldMaskRules field_mask = 28;\n */\n value: FieldMaskRules;\n case: \"fieldMask\";\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 * Describes the message buf.validate.FieldRules.\n * Use `create(FieldRulesSchema)` to create a new message.\n */\nexport const FieldRulesSchema: GenMessage<FieldRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 4);\n\n/**\n * PredefinedRules are custom rules that can be re-used with\n * multiple fields.\n *\n * @generated from message buf.validate.PredefinedRules\n */\nexport type PredefinedRules = Message<\"buf.validate.PredefinedRules\"> & {\n /**\n * `cel` is a repeated field used to represent a textual expression\n * in the Common Expression Language (CEL) syntax. For more information,\n * [see our documentation](https://buf.build/docs/protovalidate/schemas/predefined-rules/).\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.Rule cel = 1;\n */\n cel: Rule[];\n};\n\n/**\n * Describes the message buf.validate.PredefinedRules.\n * Use `create(PredefinedRulesSchema)` to create a new message.\n */\nexport const PredefinedRulesSchema: GenMessage<PredefinedRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 5);\n\n/**\n * FloatRules describes the rules 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 * 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 * 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 rules. `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 = inf\n * ];\n * }\n * ```\n *\n * @generated from field: repeated float example = 9;\n */\n example: number[];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 6);\n\n/**\n * DoubleRules describes the rules 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 * 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 * 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 rules. `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 = inf\n * ];\n * }\n * ```\n *\n * @generated from field: repeated double example = 9;\n */\n example: number[];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 7);\n\n/**\n * Int32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 8);\n\n/**\n * Int64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated int64 in = 6 [jstype = JS_STRING];\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 * int64 value = 1 [(buf.validate.field).int64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated int64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 9);\n\n/**\n * UInt32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 10);\n\n/**\n * UInt64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated uint64 in = 6 [jstype = JS_STRING];\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 * uint64 value = 1 [(buf.validate.field).uint64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated uint64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 11);\n\n/**\n * SInt32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 12);\n\n/**\n * SInt64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sint64 in = 6 [jstype = JS_STRING];\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 * sint64 value = 1 [(buf.validate.field).sint64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sint64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 13);\n\n/**\n * Fixed32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 14);\n\n/**\n * Fixed64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 in = 6 [jstype = JS_STRING];\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 * fixed64 value = 1 [(buf.validate.field).fixed64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated fixed64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 15);\n\n/**\n * SFixed32Rules describes the rules 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 * 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 * 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 16);\n\n/**\n * SFixed64Rules describes the rules 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 [jstype = JS_STRING];\n */\n const: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 in = 6 [jstype = JS_STRING];\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 * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }];\n * }\n * ```\n *\n * @generated from field: repeated sfixed64 not_in = 7 [jstype = JS_STRING];\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 [jstype = JS_STRING];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 17);\n\n/**\n * BoolRules describes the rules 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 18);\n\n/**\n * StringRules describes the rules 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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 * 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 * 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 rules 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, for\n * example \"foo@example.com\".\n *\n * Conforms to the definition for a valid email address from the [HTML standard](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address).\n * Note that this standard willfully deviates from [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322),\n * which allows many unexpected forms of email addresses and will easily match\n * a typographical error.\n *\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 hostname, for\n * example \"foo.example.com\".\n *\n * A valid hostname follows the rules below:\n * - The name consists of one or more labels, separated by a dot (\".\").\n * - Each label can be 1 to 63 alphanumeric characters.\n * - A label can contain hyphens (\"-\"), but must not start or end with a hyphen.\n * - The right-most label must not be digits only.\n * - The name can have a trailing dot—for example, \"foo.example.com.\".\n * - The name can be 253 characters at most, excluding the optional trailing dot.\n *\n * If the field value isn't a 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 (v4 or v6) address.\n *\n * IPv4 addresses are expected in the dotted decimal format—for example, \"192.168.5.21\".\n * IPv6 addresses are expected in their text representation—for example, \"::1\",\n * or \"2001:0DB8:ABCD:0012::0\".\n *\n * Both formats are well-defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).\n * Zone identifiers for IPv6 addresses (for example, \"fe80::a%en1\") are supported.\n *\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 address—for\n * example \"192.168.5.21\". If the field value isn't a valid IPv4 address, an\n * error message 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 IPv6 address—for\n * example \"::1\", or \"d7a:115c:a1e0:ab12:4843:cd96:626b:430b\". If the field\n * value is 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 URI, for example\n * \"https://example.com/foo/bar?baz=quux#frag\".\n *\n * URI is defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).\n * Zone Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)).\n *\n * If the 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 = 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 Reference—either\n * a URI such as \"https://example.com/foo/bar?baz=quux#frag\", or a Relative\n * Reference such as \"./foo/bar?query\".\n *\n * URI, URI Reference, and Relative Reference are defined in the internet\n * standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Zone\n * Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)).\n *\n * If the field value isn't a valid URI Reference, an error message will be\n * generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid URI Reference\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 * (for example, \"example.com\"), or a valid IP (v4 or v6) address (for example,\n * \"192.168.0.1\", or \"::1\"). If the field value isn't a valid hostname or IP,\n * an error 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://datatracker.ietf.org/doc/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://datatracker.ietf.org/doc/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\n * (v4 or v6) address with prefix length—for example, \"192.168.5.21/16\" or\n * \"2001:0DB8:ABCD:0012::F1/64\". If the field value isn't a valid IP with\n * prefix length, an error message will be generated.\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 length—for example, \"192.168.5.21/16\". If the\n * field value isn't a valid IPv4 address with prefix length, an error\n * 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—for example, \"2001:0DB8:ABCD:0012::F1/64\".\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)\n * prefix—for example, \"192.168.0.0/16\" or \"2001:0DB8:ABCD:0012::0/64\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"2001:0DB8:ABCD:0012::0/64\" designates the left-most 64 bits for the\n * prefix, and the remaining 64 bits must be zero.\n *\n * If the field value isn't a valid IP prefix, an error message will be\n * generated.\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, for example \"192.168.0.0/16\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"192.168.0.0/16\" designates the left-most 16 bits for the prefix,\n * and the remaining 16 bits must be zero.\n *\n * If the field value isn't a valid IPv4 prefix, an error message\n * will be generated.\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—for\n * example, \"2001:0DB8:ABCD:0012::0/64\".\n *\n * The prefix must have all zeros for the unmasked bits. For example,\n * \"2001:0DB8:ABCD:0012::0/64\" designates the left-most 64 bits for the\n * prefix, and the remaining 64 bits must be zero.\n *\n * If the field value is not a valid IPv6 prefix, an error message will be\n * generated.\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 that the field value must be valid host/port\n * pair—for example, \"example.com:8080\".\n *\n * The host can be one of:\n * - An IPv4 address in dotted decimal format—for example, \"192.168.5.21\".\n * - An IPv6 address enclosed in square brackets—for example, \"[2001:0DB8:ABCD:0012::F1]\".\n * - A hostname—for example, \"example.com\".\n *\n * The port is separated by a colon. It must be non-empty, with a decimal number\n * in the range of 0-65535, inclusive.\n *\n * @generated from field: bool host_and_port = 32;\n */\n value: boolean;\n case: \"hostAndPort\";\n } | {\n /**\n * `ulid` specifies that the field value must be a valid ULID (Universally Unique\n * Lexicographically Sortable Identifier) as defined by the [ULID specification](https://github.com/ulid/spec).\n * If the field value isn't a valid ULID, an error message will be generated.\n *\n * ```proto\n * message MyString {\n * // value must be a valid ULID\n * string value = 1 [(buf.validate.field).string.ulid = true];\n * }\n * ```\n *\n * @generated from field: bool ulid = 35;\n */\n value: boolean;\n case: \"ulid\";\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://datatracker.ietf.org/doc/html/rfc7230#section-3.2) |\n * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/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://datatracker.ietf.org/doc/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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 19);\n\n/**\n * BytesRules describe the rules 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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\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: 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 * ```proto\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 * ```proto\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 rules 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 rule, 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 rule, 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 rule, 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 } | {\n /**\n * `uuid` ensures that the field `value` encodes the 128-bit UUID data as\n * defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2).\n * The field must contain exactly 16 bytes\n * representing the UUID. If the field value isn't a valid UUID, an error\n * message will be generated.\n *\n * ```proto\n * message MyBytes {\n * // value must be a valid UUID\n * optional bytes value = 1 [(buf.validate.field).bytes.uuid = true];\n * }\n * ```\n *\n * @generated from field: bool uuid = 15;\n */\n value: boolean;\n case: \"uuid\";\n } | { case: undefined; value?: undefined };\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 * Describes the message buf.validate.BytesRules.\n * Use `create(BytesRulesSchema)` to create a new message.\n */\nexport const BytesRulesSchema: GenMessage<BytesRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 20);\n\n/**\n * EnumRules describe the rules 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 rules. `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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 21);\n\n/**\n * RepeatedRules describe the rules 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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\n */\n maxItems: string;\n\n /**\n * `unique` indicates that all elements in this field must\n * be unique. This rule 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 rules to be applied to each item\n * in the field. Even for repeated message fields, validation is executed\n * against each item unless `ignore` is specified.\n *\n * ```proto\n * message MyRepeated {\n * // The items in the field `value` must follow the specified rules.\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 * Note that the `required` rule does not apply. Repeated items\n * cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules items = 4;\n */\n items?: FieldRules;\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 22);\n\n/**\n * MapRules describe the rules 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 [jstype = JS_STRING];\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 [jstype = JS_STRING];\n */\n maxPairs: string;\n\n /**\n * Specifies the rules 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 rules.\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 * Note that the `required` rule does not apply. Map keys cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules keys = 4;\n */\n keys?: FieldRules;\n\n /**\n * Specifies the rules to be applied to the value of each key in the\n * field. Message values will still have their validations evaluated unless\n * `ignore` is specified.\n *\n * ```proto\n * message MyMap {\n * // The values in the field `value` must follow the specified rules.\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 * Note that the `required` rule does not apply. Map values cannot be unset.\n *\n * @generated from field: optional buf.validate.FieldRules values = 5;\n */\n values?: FieldRules;\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 23);\n\n/**\n * AnyRules describe rules 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 = {\n * in: [\"type.googleapis.com/MyType1\", \"type.googleapis.com/MyType2\"]\n * }];\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 `value` field must not have a `type_url` equal to any of the specified values.\n * google.protobuf.Any value = 1 [(buf.validate.field).any = {\n * not_in: [\"type.googleapis.com/ForbiddenType1\", \"type.googleapis.com/ForbiddenType2\"]\n * }];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 24);\n\n/**\n * DurationRules describe the rules 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 rules. `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 * Describes the message buf.validate.DurationRules.\n * Use `create(DurationRulesSchema)` to create a new message.\n */\nexport const DurationRulesSchema: GenMessage<DurationRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 25);\n\n/**\n * FieldMaskRules describe rules applied exclusively to the `google.protobuf.FieldMask` well-known type.\n *\n * @generated from message buf.validate.FieldMaskRules\n */\nexport type FieldMaskRules = Message<\"buf.validate.FieldMaskRules\"> & {\n /**\n * `const` dictates that the field must match the specified value of the `google.protobuf.FieldMask` 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 MyFieldMask {\n * // value must equal [\"a\"]\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask.const = {\n * paths: [\"a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: optional google.protobuf.FieldMask const = 1;\n */\n const?: FieldMask;\n\n /**\n * `in` requires the field value to only contain paths matching specified\n * values or their subpaths.\n * If any of the field value's paths doesn't match the rule,\n * an error message is generated.\n * See: https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask\n *\n * ```proto\n * message MyFieldMask {\n * // The `value` FieldMask must only contain paths listed in `in`.\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask = {\n * in: [\"a\", \"b\", \"c.a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated string in = 2;\n */\n in: string[];\n\n /**\n * `not_in` requires the field value to not contain paths matching specified\n * values or their subpaths.\n * If any of the field value's paths matches the rule,\n * an error message is generated.\n * See: https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask\n *\n * ```proto\n * message MyFieldMask {\n * // The `value` FieldMask shall not contain paths listed in `not_in`.\n * google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask = {\n * not_in: [\"forbidden\", \"immutable\", \"c.a\"]\n * }];\n * }\n * ```\n *\n * @generated from field: repeated string not_in = 3;\n */\n notIn: string[];\n\n /**\n * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 MyFieldMask {\n * google.protobuf.FieldMask value = 1 [\n * (buf.validate.field).field_mask.example = { paths: [\"a\", \"b\"] },\n * (buf.validate.field).field_mask.example = { paths: [\"c.a\", \"d\"] },\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.FieldMask example = 4;\n */\n example: FieldMask[];\n};\n\n/**\n * Describes the message buf.validate.FieldMaskRules.\n * Use `create(FieldMaskRulesSchema)` to create a new message.\n */\nexport const FieldMaskRulesSchema: GenMessage<FieldMaskRules> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 26);\n\n/**\n * TimestampRules describe the rules 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 * `example` specifies values that the field may have. These values SHOULD\n * conform to other rules. `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 MyTimestamp {\n * google.protobuf.Timestamp value = 1 [\n * (buf.validate.field).timestamp.example = { seconds: 1672444800 },\n * (buf.validate.field).timestamp.example = { seconds: 1672531200 },\n * ];\n * }\n * ```\n *\n * @generated from field: repeated google.protobuf.Timestamp example = 10;\n */\n example: Timestamp[];\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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 27);\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 `Rule` 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 * Describes the message buf.validate.Violations.\n * Use `create(ViolationsSchema)` to create a new message.\n */\nexport const ViolationsSchema: GenMessage<Violations> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 28);\n\n/**\n * `Violation` represents a single instance where a validation rule, expressed\n * as a `Rule`, was not met. It provides information about the field that\n * caused the violation, the specific rule that wasn't fulfilled, and a\n * human-readable error message.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message User {\n * int32 age = 1 [(buf.validate.field).cel = {\n * id: \"user.age\",\n * expression: \"this < 18 ? 'User must be at least 18 years old' : ''\",\n * }];\n * }\n * ```\n *\n * It could produce the following violation:\n *\n * ```json\n * {\n * \"ruleId\": \"user.age\",\n * \"message\": \"User must be at least 18 years old\",\n * \"field\": {\n * \"elements\": [\n * {\n * \"fieldNumber\": 1,\n * \"fieldName\": \"age\",\n * \"fieldType\": \"TYPE_INT32\"\n * }\n * ]\n * },\n * \"rule\": {\n * \"elements\": [\n * {\n * \"fieldNumber\": 23,\n * \"fieldName\": \"cel\",\n * \"fieldType\": \"TYPE_MESSAGE\",\n * \"index\": \"0\"\n * }\n * ]\n * }\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 rule that failed validation.\n * This will be a nested field starting from the FieldRules of the field that failed validation.\n * For custom rules, this will provide the path of the rule, 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_rule\",\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 * `rule_id` is the unique identifier of the `Rule` that was not fulfilled.\n * This is the same `id` that was specified in the `Rule` message, allowing easy tracing of which rule was violated.\n *\n * @generated from field: optional string rule_id = 2;\n */\n ruleId: 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 `Rule`, 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> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 29);\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 * Describes the message buf.validate.FieldPath.\n * Use `create(FieldPathSchema)` to create a new message.\n */\nexport const FieldPathSchema: GenMessage<FieldPath> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 30);\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 [jstype = JS_STRING];\n */\n value: string;\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 * Describes the message buf.validate.FieldPathElement.\n * Use `create(FieldPathElementSchema)` to create a new message.\n */\nexport const FieldPathElementSchema: GenMessage<FieldPathElement> = /*@__PURE__*/\n messageDesc(file_buf_validate_validate, 31);\n\n/**\n * Specifies how `FieldRules.ignore` behaves, depending on the field's value, and\n * whether the field tracks presence.\n *\n * @generated from enum buf.validate.Ignore\n */\nexport enum Ignore {\n /**\n * Ignore rules if the field tracks presence and is unset. This is the default\n * behavior.\n *\n * In proto3, only message fields, members of a Protobuf `oneof`, and fields\n * with the `optional` label track presence. Consequently, the following fields\n * are always validated, whether a value is set or not:\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message RulesApply {\n * string email = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * int32 age = 2 [\n * (buf.validate.field).int32.gt = 0\n * ];\n * repeated string labels = 3 [\n * (buf.validate.field).repeated.min_items = 1\n * ];\n * }\n * ```\n *\n * In contrast, the following fields track presence, and are only validated if\n * a value is set:\n *\n * ```proto\n * syntax=\"proto3\";\n *\n * message RulesApplyIfSet {\n * optional string email = 1 [\n * (buf.validate.field).string.email = true\n * ];\n * oneof ref {\n * string reference = 2 [\n * (buf.validate.field).string.uuid = true\n * ];\n * string name = 3 [\n * (buf.validate.field).string.min_len = 4\n * ];\n * }\n * SomeMessage msg = 4 [\n * (buf.validate.field).cel = {/* ... *\\/}\n * ];\n * }\n * ```\n *\n * To ensure that such a field is set, add the `required` rule.\n *\n * To learn which fields track presence, see the\n * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat).\n *\n * @generated from enum value: IGNORE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * Ignore rules if the field is unset, or set to the zero value.\n *\n * The zero value depends on the field type:\n * - For strings, the zero value is the empty string.\n * - For bytes, the zero value is empty bytes.\n * - For bool, the zero value is false.\n * - For numeric types, the zero value is zero.\n * - For enums, the zero value is the first defined enum value.\n * - For repeated fields, the zero is an empty list.\n * - For map fields, the zero is an empty map.\n * - For message fields, absence of the message (typically a null-value) is considered zero value.\n *\n * For fields that track presence (e.g. adding the `optional` label in proto3),\n * this a no-op and behavior is the same as the default `IGNORE_UNSPECIFIED`.\n *\n * @generated from enum value: IGNORE_IF_ZERO_VALUE = 1;\n */\n IF_ZERO_VALUE = 1,\n\n /**\n * Always ignore rules, including the `required` rule.\n *\n * This is useful for ignoring the rules of a referenced message, or to\n * temporarily ignore rules during development.\n *\n * ```proto\n * message MyMessage {\n * // The field's rules will always be ignored, including any validations\n * // on value's fields.\n * MyOtherMessage value = 1 [\n * (buf.validate.field).ignore = IGNORE_ALWAYS\n * ];\n * }\n * ```\n *\n * @generated from enum value: IGNORE_ALWAYS = 3;\n */\n ALWAYS = 3,\n}\n\n/**\n * Describes the enum buf.validate.Ignore.\n */\nexport const IgnoreSchema: GenEnum<Ignore> = /*@__PURE__*/\n enumDesc(file_buf_validate_validate, 0);\n\n/**\n * KnownRegex contains 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://datatracker.ietf.org/doc/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://datatracker.ietf.org/doc/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 * Describes the enum buf.validate.KnownRegex.\n */\nexport const KnownRegexSchema: GenEnum<KnownRegex> = /*@__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.MessageRules message = 1159;\n */\nexport const message: GenExtension<MessageOptions, MessageRules> = /*@__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.OneofRules oneof = 1159;\n */\nexport const oneof: GenExtension<OneofOptions, OneofRules> = /*@__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.FieldRules field = 1159;\n */\nexport const field: GenExtension<FieldOptions, FieldRules> = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 2);\n\n/**\n * Specifies predefined rules. When extending a standard rule 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.PredefinedRules predefined = 1160;\n */\nexport const predefined: GenExtension<FieldOptions, PredefinedRules> = /*@__PURE__*/\n extDesc(file_buf_validate_validate, 3);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_auth_recording.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { PastRoomInfo } from \"./plugnmeet_auth_room_pb\";\nimport { file_plugnmeet_auth_room } from \"./plugnmeet_auth_room_pb\";\nimport type { RecordingMetadata } from \"./plugnmeet_recording_pb\";\nimport { file_plugnmeet_recording } from \"./plugnmeet_recording_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_auth_recording.proto.\n */\nexport const file_plugnmeet_auth_recording: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5wbHVnbm1lZXRfYXV0aF9yZWNvcmRpbmcucHJvdG8SCXBsdWdubWVldCJ5ChJGZXRjaFJlY29yZGluZ3NSZXESEAoIcm9vbV9pZHMYASADKAkSFQoIcm9vbV9zaWQYAiABKAlIAIgBARIMCgRmcm9tGAMgASgNEg0KBWxpbWl0GAQgASgNEhAKCG9yZGVyX2J5GAUgASgJQgsKCV9yb29tX3NpZCLoAQoNUmVjb3JkaW5nSW5mbxIRCglyZWNvcmRfaWQYASABKAkSDwoHcm9vbV9pZBgCIAEoCRIQCghyb29tX3NpZBgDIAEoCRIRCglmaWxlX3BhdGgYBCABKAkSEQoJZmlsZV9zaXplGAUgASgCEhkKDWNyZWF0aW9uX3RpbWUYBiABKANCAjABEh4KEnJvb21fY3JlYXRpb25fdGltZRgHIAEoA0ICMAESMwoIbWV0YWRhdGEYCCABKAsyHC5wbHVnbm1lZXQuUmVjb3JkaW5nTWV0YWRhdGFIAIgBAUILCglfbWV0YWRhdGEilwEKFUZldGNoUmVjb3JkaW5nc1Jlc3VsdBIcChB0b3RhbF9yZWNvcmRpbmdzGAEgASgDQgIwARIMCgRmcm9tGAIgASgNEg0KBWxpbWl0GAMgASgNEhAKCG9yZGVyX2J5GAQgASgJEjEKD3JlY29yZGluZ3NfbGlzdBgFIAMoCzIYLnBsdWdubWVldC5SZWNvcmRpbmdJbmZvImMKEkZldGNoUmVjb3JkaW5nc1JlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEjAKBnJlc3VsdBgDIAEoCzIgLnBsdWdubWVldC5GZXRjaFJlY29yZGluZ3NSZXN1bHQiLQoQUmVjb3JkaW5nSW5mb1JlcRIZCglyZWNvcmRfaWQYASABKAlCBrpIA8gBASKNAQoQUmVjb3JkaW5nSW5mb1JlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEjAKDnJlY29yZGluZ19pbmZvGAMgASgLMhgucGx1Z25tZWV0LlJlY29yZGluZ0luZm8SKgoJcm9vbV9pbmZvGAQgASgLMhcucGx1Z25tZWV0LlBhc3RSb29tSW5mbyIvChJEZWxldGVSZWNvcmRpbmdSZXESGQoJcmVjb3JkX2lkGAEgASgJQga6SAPIAQEiMQoSRGVsZXRlUmVjb3JkaW5nUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkiMAoTR2V0RG93bmxvYWRUb2tlblJlcRIZCglyZWNvcmRfaWQYASABKAlCBrpIA8gBASJQChNHZXREb3dubG9hZFRva2VuUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSEgoFdG9rZW4YAyABKAlIAIgBAUIICgZfdG9rZW4iZwoaVXBkYXRlUmVjb3JkaW5nTWV0YWRhdGFSZXESGQoJcmVjb3JkX2lkGAEgASgJQga6SAPIAQESLgoIbWV0YWRhdGEYAiABKAsyHC5wbHVnbm1lZXQuUmVjb3JkaW5nTWV0YWRhdGEiOQoaVXBkYXRlUmVjb3JkaW5nTWV0YWRhdGFSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCUKkAQoNY29tLnBsdWdubWVldEIbUGx1Z25tZWV0QXV0aFJlY29yZGluZ1Byb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\", [file_buf_validate_validate, file_plugnmeet_auth_room, file_plugnmeet_recording]);\n\n/**\n * @generated from message plugnmeet.FetchRecordingsReq\n */\nexport type FetchRecordingsReq = Message<\"plugnmeet.FetchRecordingsReq\"> & {\n /**\n * @generated from field: repeated string room_ids = 1;\n */\n roomIds: string[];\n\n /**\n * To get information about a particular session\n *\n * @generated from field: optional string room_sid = 2;\n */\n roomSid?: string;\n\n /**\n * @generated from field: uint32 from = 3;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 4;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 5;\n */\n orderBy: string;\n};\n\n/**\n * Describes the message plugnmeet.FetchRecordingsReq.\n * Use `create(FetchRecordingsReqSchema)` to create a new message.\n */\nexport const FetchRecordingsReqSchema: GenMessage<FetchRecordingsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 0);\n\n/**\n * @generated from message plugnmeet.RecordingInfo\n */\nexport type RecordingInfo = Message<\"plugnmeet.RecordingInfo\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 3;\n */\n roomSid: string;\n\n /**\n * @generated from field: string file_path = 4;\n */\n filePath: string;\n\n /**\n * @generated from field: float file_size = 5;\n */\n fileSize: number;\n\n /**\n * @generated from field: int64 creation_time = 6 [jstype = JS_STRING];\n */\n creationTime: string;\n\n /**\n * @generated from field: int64 room_creation_time = 7 [jstype = JS_STRING];\n */\n roomCreationTime: string;\n\n /**\n * @generated from field: optional plugnmeet.RecordingMetadata metadata = 8;\n */\n metadata?: RecordingMetadata;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfo.\n * Use `create(RecordingInfoSchema)` to create a new message.\n */\nexport const RecordingInfoSchema: GenMessage<RecordingInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 1);\n\n/**\n * @generated from message plugnmeet.FetchRecordingsResult\n */\nexport type FetchRecordingsResult = Message<\"plugnmeet.FetchRecordingsResult\"> & {\n /**\n * @generated from field: int64 total_recordings = 1 [jstype = JS_STRING];\n */\n totalRecordings: string;\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n\n /**\n * @generated from field: repeated plugnmeet.RecordingInfo recordings_list = 5;\n */\n recordingsList: RecordingInfo[];\n};\n\n/**\n * Describes the message plugnmeet.FetchRecordingsResult.\n * Use `create(FetchRecordingsResultSchema)` to create a new message.\n */\nexport const FetchRecordingsResultSchema: GenMessage<FetchRecordingsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 2);\n\n/**\n * @generated from message plugnmeet.FetchRecordingsRes\n */\nexport type FetchRecordingsRes = Message<\"plugnmeet.FetchRecordingsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.FetchRecordingsResult result = 3;\n */\n result?: FetchRecordingsResult;\n};\n\n/**\n * Describes the message plugnmeet.FetchRecordingsRes.\n * Use `create(FetchRecordingsResSchema)` to create a new message.\n */\nexport const FetchRecordingsResSchema: GenMessage<FetchRecordingsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 3);\n\n/**\n * @generated from message plugnmeet.RecordingInfoReq\n */\nexport type RecordingInfoReq = Message<\"plugnmeet.RecordingInfoReq\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfoReq.\n * Use `create(RecordingInfoReqSchema)` to create a new message.\n */\nexport const RecordingInfoReqSchema: GenMessage<RecordingInfoReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 4);\n\n/**\n * @generated from message plugnmeet.RecordingInfoRes\n */\nexport type RecordingInfoRes = Message<\"plugnmeet.RecordingInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.RecordingInfo recording_info = 3;\n */\n recordingInfo?: RecordingInfo;\n\n /**\n * @generated from field: plugnmeet.PastRoomInfo room_info = 4;\n */\n roomInfo?: PastRoomInfo;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfoRes.\n * Use `create(RecordingInfoResSchema)` to create a new message.\n */\nexport const RecordingInfoResSchema: GenMessage<RecordingInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 5);\n\n/**\n * @generated from message plugnmeet.DeleteRecordingReq\n */\nexport type DeleteRecordingReq = Message<\"plugnmeet.DeleteRecordingReq\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteRecordingReq.\n * Use `create(DeleteRecordingReqSchema)` to create a new message.\n */\nexport const DeleteRecordingReqSchema: GenMessage<DeleteRecordingReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 6);\n\n/**\n * @generated from message plugnmeet.DeleteRecordingRes\n */\nexport type DeleteRecordingRes = Message<\"plugnmeet.DeleteRecordingRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteRecordingRes.\n * Use `create(DeleteRecordingResSchema)` to create a new message.\n */\nexport const DeleteRecordingResSchema: GenMessage<DeleteRecordingRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 7);\n\n/**\n * @generated from message plugnmeet.GetDownloadTokenReq\n */\nexport type GetDownloadTokenReq = Message<\"plugnmeet.GetDownloadTokenReq\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n};\n\n/**\n * Describes the message plugnmeet.GetDownloadTokenReq.\n * Use `create(GetDownloadTokenReqSchema)` to create a new message.\n */\nexport const GetDownloadTokenReqSchema: GenMessage<GetDownloadTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 8);\n\n/**\n * @generated from message plugnmeet.GetDownloadTokenRes\n */\nexport type GetDownloadTokenRes = Message<\"plugnmeet.GetDownloadTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string token = 3;\n */\n token?: string;\n};\n\n/**\n * Describes the message plugnmeet.GetDownloadTokenRes.\n * Use `create(GetDownloadTokenResSchema)` to create a new message.\n */\nexport const GetDownloadTokenResSchema: GenMessage<GetDownloadTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 9);\n\n/**\n * @generated from message plugnmeet.UpdateRecordingMetadataReq\n */\nexport type UpdateRecordingMetadataReq = Message<\"plugnmeet.UpdateRecordingMetadataReq\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n\n /**\n * @generated from field: plugnmeet.RecordingMetadata metadata = 2;\n */\n metadata?: RecordingMetadata;\n};\n\n/**\n * Describes the message plugnmeet.UpdateRecordingMetadataReq.\n * Use `create(UpdateRecordingMetadataReqSchema)` to create a new message.\n */\nexport const UpdateRecordingMetadataReqSchema: GenMessage<UpdateRecordingMetadataReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 10);\n\n/**\n * @generated from message plugnmeet.UpdateRecordingMetadataRes\n */\nexport type UpdateRecordingMetadataRes = Message<\"plugnmeet.UpdateRecordingMetadataRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.UpdateRecordingMetadataRes.\n * Use `create(UpdateRecordingMetadataResSchema)` to create a new message.\n */\nexport const UpdateRecordingMetadataResSchema: GenMessage<UpdateRecordingMetadataRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_recording, 11);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_auth_room.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { ParticipantInfo } from \"./livekit_models_pb\";\nimport { file_livekit_models } from \"./livekit_models_pb\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_auth_room.proto.\n */\nexport const file_plugnmeet_auth_room: GenFile = /*@__PURE__*/\n fileDesc(\"ChlwbHVnbm1lZXRfYXV0aF9yb29tLnByb3RvEglwbHVnbm1lZXQiLwoUR2V0QWN0aXZlUm9vbUluZm9SZXESFwoHcm9vbV9pZBgBIAEoCUIGukgDyAEBIqYBChFBY3RpdmVSb29tSW5mb1JlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEjEKCXJvb21faW5mbxgDIAEoCzIZLnBsdWdubWVldC5BY3RpdmVSb29tSW5mb0gAiAEBEjMKEXBhcnRpY2lwYW50c19pbmZvGAQgAygLMhgubGl2ZWtpdC5QYXJ0aWNpcGFudEluZm9CDAoKX3Jvb21faW5mbyKZAgoOQWN0aXZlUm9vbUluZm8SEgoKcm9vbV90aXRsZRgBIAEoCRIPCgdyb29tX2lkGAIgASgJEgsKA3NpZBgDIAEoCRIfChNqb2luZWRfcGFydGljaXBhbnRzGAQgASgDQgIwARISCgppc19ydW5uaW5nGAUgASgFEhQKDGlzX3JlY29yZGluZxgGIAEoBRIWCg5pc19hY3RpdmVfcnRtcBgHIAEoBRITCgt3ZWJob29rX3VybBgIIAEoCRIYChBpc19icmVha291dF9yb29tGAkgASgFEhYKDnBhcmVudF9yb29tX2lkGAogASgJEhkKDWNyZWF0aW9uX3RpbWUYCyABKANCAjABEhAKCG1ldGFkYXRhGAwgASgJIiUKClJvb21FbmRSZXESFwoHcm9vbV9pZBgBIAEoCUIGukgDyAEBIikKClJvb21FbmRSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCSIqCg9Jc1Jvb21BY3RpdmVSZXESFwoHcm9vbV9pZBgBIAEoCUIGukgDyAEBIkEKD0lzUm9vbUFjdGl2ZVJlcxIOCgZzdGF0dXMYASABKAgSEQoJaXNfYWN0aXZlGAIgASgIEgsKA21zZxgDIAEoCSKRAQoZQWN0aXZlUm9vbVdpdGhQYXJ0aWNpcGFudBIxCglyb29tX2luZm8YAyABKAsyGS5wbHVnbm1lZXQuQWN0aXZlUm9vbUluZm9IAIgBARIzChFwYXJ0aWNpcGFudHNfaW5mbxgEIAMoCzIYLmxpdmVraXQuUGFydGljaXBhbnRJbmZvQgwKCl9yb29tX2luZm8iZwoUR2V0QWN0aXZlUm9vbUluZm9SZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIyCgRyb29tGAMgASgLMiQucGx1Z25tZWV0LkFjdGl2ZVJvb21XaXRoUGFydGljaXBhbnQiaQoVR2V0QWN0aXZlUm9vbXNJbmZvUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSMwoFcm9vbXMYAyADKAsyJC5wbHVnbm1lZXQuQWN0aXZlUm9vbVdpdGhQYXJ0aWNpcGFudCLRAQoMUGFzdFJvb21JbmZvEhIKCnJvb21fdGl0bGUYASABKAkSDwoHcm9vbV9pZBgCIAEoCRIQCghyb29tX3NpZBgDIAEoCRIfChNqb2luZWRfcGFydGljaXBhbnRzGAQgASgDQgIwARITCgt3ZWJob29rX3VybBgFIAEoCRIPCgdjcmVhdGVkGAYgASgJEg0KBWVuZGVkGAcgASgJEh4KEWFuYWx5dGljc19maWxlX2lkGAggASgJSACIAQFCFAoSX2FuYWx5dGljc19maWxlX2lkIlQKEUZldGNoUGFzdFJvb21zUmVxEhAKCHJvb21faWRzGAEgAygJEgwKBGZyb20YAiABKA0SDQoFbGltaXQYAyABKA0SEAoIb3JkZXJfYnkYBCABKAkiiwEKFEZldGNoUGFzdFJvb21zUmVzdWx0EhcKC3RvdGFsX3Jvb21zGAEgASgDQgIwARIMCgRmcm9tGAIgASgNEg0KBWxpbWl0GAMgASgNEhAKCG9yZGVyX2J5GAQgASgJEisKCnJvb21zX2xpc3QYBSADKAsyFy5wbHVnbm1lZXQuUGFzdFJvb21JbmZvImEKEUZldGNoUGFzdFJvb21zUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSLwoGcmVzdWx0GAMgASgLMh8ucGx1Z25tZWV0LkZldGNoUGFzdFJvb21zUmVzdWx0Iq4BChFHZXRDbGllbnRGaWxlc1JlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEg8KA2NzcxgDIAMoCUICGAESDgoCanMYBCADKAlCAhgBEhEKCWNzc19maWxlcxgFIAMoCRIQCghqc19maWxlcxgGIAMoCRIfChJzdGF0aWNfYXNzZXRzX3BhdGgYByABKAlIAIgBAUIVChNfc3RhdGljX2Fzc2V0c19wYXRoQp8BCg1jb20ucGx1Z25tZWV0QhZQbHVnbm1lZXRBdXRoUm9vbVByb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\", [file_livekit_models, file_buf_validate_validate]);\n\n/**\n * @generated from message plugnmeet.GetActiveRoomInfoReq\n */\nexport type GetActiveRoomInfoReq = Message<\"plugnmeet.GetActiveRoomInfoReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.GetActiveRoomInfoReq.\n * Use `create(GetActiveRoomInfoReqSchema)` to create a new message.\n */\nexport const GetActiveRoomInfoReqSchema: GenMessage<GetActiveRoomInfoReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 0);\n\n/**\n * @generated from message plugnmeet.ActiveRoomInfoRes\n */\nexport type ActiveRoomInfoRes = Message<\"plugnmeet.ActiveRoomInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional plugnmeet.ActiveRoomInfo room_info = 3;\n */\n roomInfo?: ActiveRoomInfo;\n\n /**\n * @generated from field: repeated livekit.ParticipantInfo participants_info = 4;\n */\n participantsInfo: ParticipantInfo[];\n};\n\n/**\n * Describes the message plugnmeet.ActiveRoomInfoRes.\n * Use `create(ActiveRoomInfoResSchema)` to create a new message.\n */\nexport const ActiveRoomInfoResSchema: GenMessage<ActiveRoomInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 1);\n\n/**\n * @generated from message plugnmeet.ActiveRoomInfo\n */\nexport type ActiveRoomInfo = Message<\"plugnmeet.ActiveRoomInfo\"> & {\n /**\n * @generated from field: string room_title = 1;\n */\n roomTitle: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string sid = 3;\n */\n sid: string;\n\n /**\n * @generated from field: int64 joined_participants = 4 [jstype = JS_STRING];\n */\n joinedParticipants: string;\n\n /**\n * @generated from field: int32 is_running = 5;\n */\n isRunning: number;\n\n /**\n * @generated from field: int32 is_recording = 6;\n */\n isRecording: number;\n\n /**\n * @generated from field: int32 is_active_rtmp = 7;\n */\n isActiveRtmp: number;\n\n /**\n * @generated from field: string webhook_url = 8;\n */\n webhookUrl: string;\n\n /**\n * @generated from field: int32 is_breakout_room = 9;\n */\n isBreakoutRoom: number;\n\n /**\n * @generated from field: string parent_room_id = 10;\n */\n parentRoomId: string;\n\n /**\n * @generated from field: int64 creation_time = 11 [jstype = JS_STRING];\n */\n creationTime: string;\n\n /**\n * @generated from field: string metadata = 12;\n */\n metadata: string;\n};\n\n/**\n * Describes the message plugnmeet.ActiveRoomInfo.\n * Use `create(ActiveRoomInfoSchema)` to create a new message.\n */\nexport const ActiveRoomInfoSchema: GenMessage<ActiveRoomInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 2);\n\n/**\n * @generated from message plugnmeet.RoomEndReq\n */\nexport type RoomEndReq = Message<\"plugnmeet.RoomEndReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomEndReq.\n * Use `create(RoomEndReqSchema)` to create a new message.\n */\nexport const RoomEndReqSchema: GenMessage<RoomEndReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 3);\n\n/**\n * @generated from message plugnmeet.RoomEndRes\n */\nexport type RoomEndRes = Message<\"plugnmeet.RoomEndRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomEndRes.\n * Use `create(RoomEndResSchema)` to create a new message.\n */\nexport const RoomEndResSchema: GenMessage<RoomEndRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 4);\n\n/**\n * @generated from message plugnmeet.IsRoomActiveReq\n */\nexport type IsRoomActiveReq = Message<\"plugnmeet.IsRoomActiveReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.IsRoomActiveReq.\n * Use `create(IsRoomActiveReqSchema)` to create a new message.\n */\nexport const IsRoomActiveReqSchema: GenMessage<IsRoomActiveReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 5);\n\n/**\n * @generated from message plugnmeet.IsRoomActiveRes\n */\nexport type IsRoomActiveRes = Message<\"plugnmeet.IsRoomActiveRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: string msg = 3;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.IsRoomActiveRes.\n * Use `create(IsRoomActiveResSchema)` to create a new message.\n */\nexport const IsRoomActiveResSchema: GenMessage<IsRoomActiveRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 6);\n\n/**\n * @generated from message plugnmeet.ActiveRoomWithParticipant\n */\nexport type ActiveRoomWithParticipant = Message<\"plugnmeet.ActiveRoomWithParticipant\"> & {\n /**\n * @generated from field: optional plugnmeet.ActiveRoomInfo room_info = 3;\n */\n roomInfo?: ActiveRoomInfo;\n\n /**\n * @generated from field: repeated livekit.ParticipantInfo participants_info = 4;\n */\n participantsInfo: ParticipantInfo[];\n};\n\n/**\n * Describes the message plugnmeet.ActiveRoomWithParticipant.\n * Use `create(ActiveRoomWithParticipantSchema)` to create a new message.\n */\nexport const ActiveRoomWithParticipantSchema: GenMessage<ActiveRoomWithParticipant> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 7);\n\n/**\n * @generated from message plugnmeet.GetActiveRoomInfoRes\n */\nexport type GetActiveRoomInfoRes = Message<\"plugnmeet.GetActiveRoomInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.ActiveRoomWithParticipant room = 3;\n */\n room?: ActiveRoomWithParticipant;\n};\n\n/**\n * Describes the message plugnmeet.GetActiveRoomInfoRes.\n * Use `create(GetActiveRoomInfoResSchema)` to create a new message.\n */\nexport const GetActiveRoomInfoResSchema: GenMessage<GetActiveRoomInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 8);\n\n/**\n * @generated from message plugnmeet.GetActiveRoomsInfoRes\n */\nexport type GetActiveRoomsInfoRes = Message<\"plugnmeet.GetActiveRoomsInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated plugnmeet.ActiveRoomWithParticipant rooms = 3;\n */\n rooms: ActiveRoomWithParticipant[];\n};\n\n/**\n * Describes the message plugnmeet.GetActiveRoomsInfoRes.\n * Use `create(GetActiveRoomsInfoResSchema)` to create a new message.\n */\nexport const GetActiveRoomsInfoResSchema: GenMessage<GetActiveRoomsInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 9);\n\n/**\n * @generated from message plugnmeet.PastRoomInfo\n */\nexport type PastRoomInfo = Message<\"plugnmeet.PastRoomInfo\"> & {\n /**\n * @generated from field: string room_title = 1;\n */\n roomTitle: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 3;\n */\n roomSid: string;\n\n /**\n * @generated from field: int64 joined_participants = 4 [jstype = JS_STRING];\n */\n joinedParticipants: string;\n\n /**\n * @generated from field: string webhook_url = 5;\n */\n webhookUrl: string;\n\n /**\n * @generated from field: string created = 6;\n */\n created: string;\n\n /**\n * @generated from field: string ended = 7;\n */\n ended: string;\n\n /**\n * @generated from field: optional string analytics_file_id = 8;\n */\n analyticsFileId?: string;\n};\n\n/**\n * Describes the message plugnmeet.PastRoomInfo.\n * Use `create(PastRoomInfoSchema)` to create a new message.\n */\nexport const PastRoomInfoSchema: GenMessage<PastRoomInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 10);\n\n/**\n * @generated from message plugnmeet.FetchPastRoomsReq\n */\nexport type FetchPastRoomsReq = Message<\"plugnmeet.FetchPastRoomsReq\"> & {\n /**\n * @generated from field: repeated string room_ids = 1;\n */\n roomIds: string[];\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n};\n\n/**\n * Describes the message plugnmeet.FetchPastRoomsReq.\n * Use `create(FetchPastRoomsReqSchema)` to create a new message.\n */\nexport const FetchPastRoomsReqSchema: GenMessage<FetchPastRoomsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 11);\n\n/**\n * @generated from message plugnmeet.FetchPastRoomsResult\n */\nexport type FetchPastRoomsResult = Message<\"plugnmeet.FetchPastRoomsResult\"> & {\n /**\n * @generated from field: int64 total_rooms = 1 [jstype = JS_STRING];\n */\n totalRooms: string;\n\n /**\n * @generated from field: uint32 from = 2;\n */\n from: number;\n\n /**\n * @generated from field: uint32 limit = 3;\n */\n limit: number;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n\n /**\n * @generated from field: repeated plugnmeet.PastRoomInfo rooms_list = 5;\n */\n roomsList: PastRoomInfo[];\n};\n\n/**\n * Describes the message plugnmeet.FetchPastRoomsResult.\n * Use `create(FetchPastRoomsResultSchema)` to create a new message.\n */\nexport const FetchPastRoomsResultSchema: GenMessage<FetchPastRoomsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 12);\n\n/**\n * @generated from message plugnmeet.FetchPastRoomsRes\n */\nexport type FetchPastRoomsRes = Message<\"plugnmeet.FetchPastRoomsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.FetchPastRoomsResult result = 3;\n */\n result?: FetchPastRoomsResult;\n};\n\n/**\n * Describes the message plugnmeet.FetchPastRoomsRes.\n * Use `create(FetchPastRoomsResSchema)` to create a new message.\n */\nexport const FetchPastRoomsResSchema: GenMessage<FetchPastRoomsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 13);\n\n/**\n * @generated from message plugnmeet.GetClientFilesRes\n */\nexport type GetClientFilesRes = Message<\"plugnmeet.GetClientFilesRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated string css = 3 [deprecated = true];\n * @deprecated\n */\n css: string[];\n\n /**\n * @generated from field: repeated string js = 4 [deprecated = true];\n * @deprecated\n */\n js: string[];\n\n /**\n * @generated from field: repeated string css_files = 5;\n */\n cssFiles: string[];\n\n /**\n * @generated from field: repeated string js_files = 6;\n */\n jsFiles: string[];\n\n /**\n * @generated from field: optional string static_assets_path = 7;\n */\n staticAssetsPath?: string;\n};\n\n/**\n * Describes the message plugnmeet.GetClientFilesRes.\n * Use `create(GetClientFilesResSchema)` to create a new message.\n */\nexport const GetClientFilesResSchema: GenMessage<GetClientFilesRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_room, 14);\n\n","// Copyright 2023 LiveKit, 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.11.0 with parameter \"target=ts\"\n// @generated from file livekit_models.proto (package livekit, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { MetricsBatch } from \"./livekit_metrics_pb\";\nimport { file_livekit_metrics } from \"./livekit_metrics_pb\";\nimport { file_logger_options } from \"./logger/options_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file livekit_models.proto.\n */\nexport const file_livekit_models: GenFile = /*@__PURE__*/\n fileDesc(\"ChRsaXZla2l0X21vZGVscy5wcm90bxIHbGl2ZWtpdCItCgpQYWdpbmF0aW9uEhAKCGFmdGVyX2lkGAEgASgJEg0KBWxpbWl0GAIgASgFIiAKD1Rva2VuUGFnaW5hdGlvbhINCgV0b2tlbhgBIAEoCSJFCgpMaXN0VXBkYXRlEgsKA3NldBgBIAMoCRILCgNhZGQYAiADKAkSDgoGcmVtb3ZlGAMgAygJEg0KBWNsZWFyGAQgASgIIpMDCgRSb29tEgsKA3NpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhUKDWVtcHR5X3RpbWVvdXQYAyABKA0SGQoRZGVwYXJ0dXJlX3RpbWVvdXQYDiABKA0SGAoQbWF4X3BhcnRpY2lwYW50cxgEIAEoDRIZCg1jcmVhdGlvbl90aW1lGAUgASgDQgIwARIcChBjcmVhdGlvbl90aW1lX21zGA8gASgDQgIwARIVCg10dXJuX3Bhc3N3b3JkGAYgASgJEiYKDmVuYWJsZWRfY29kZWNzGAcgAygLMg4ubGl2ZWtpdC5Db2RlYxI4CghtZXRhZGF0YRgIIAEoCUImiOwsAZLsLB48cmVkYWN0ZWQgKHt7IC5TaXplIH19IGJ5dGVzKT4SGAoQbnVtX3BhcnRpY2lwYW50cxgJIAEoDRIWCg5udW1fcHVibGlzaGVycxgLIAEoDRIYChBhY3RpdmVfcmVjb3JkaW5nGAogASgIEiYKB3ZlcnNpb24YDSABKAsyFS5saXZla2l0LlRpbWVkVmVyc2lvbiIoCgVDb2RlYxIMCgRtaW1lGAEgASgJEhEKCWZtdHBfbGluZRgCIAEoCSI5CgxQbGF5b3V0RGVsYXkSDwoHZW5hYmxlZBgBIAEoCBILCgNtaW4YAiABKA0SCwoDbWF4GAMgASgNIqcCChVQYXJ0aWNpcGFudFBlcm1pc3Npb24SFQoNY2FuX3N1YnNjcmliZRgBIAEoCBITCgtjYW5fcHVibGlzaBgCIAEoCBIYChBjYW5fcHVibGlzaF9kYXRhGAMgASgIEjEKE2Nhbl9wdWJsaXNoX3NvdXJjZXMYCSADKA4yFC5saXZla2l0LlRyYWNrU291cmNlEg4KBmhpZGRlbhgHIAEoCBIUCghyZWNvcmRlchgIIAEoCEICGAESGwoTY2FuX3VwZGF0ZV9tZXRhZGF0YRgKIAEoCBIRCgVhZ2VudBgLIAEoCEICGAESHQoVY2FuX3N1YnNjcmliZV9tZXRyaWNzGAwgASgIEiAKGGNhbl9tYW5hZ2VfYWdlbnRfc2Vzc2lvbhgNIAEoCCL1BwoPUGFydGljaXBhbnRJbmZvEgsKA3NpZBgBIAEoCRIQCghpZGVudGl0eRgCIAEoCRItCgVzdGF0ZRgDIAEoDjIeLmxpdmVraXQuUGFydGljaXBhbnRJbmZvLlN0YXRlEiIKBnRyYWNrcxgEIAMoCzISLmxpdmVraXQuVHJhY2tJbmZvEjgKCG1ldGFkYXRhGAUgASgJQiaI7CwBkuwsHjxyZWRhY3RlZCAoe3sgLlNpemUgfX0gYnl0ZXMpPhIVCglqb2luZWRfYXQYBiABKANCAjABEhgKDGpvaW5lZF9hdF9tcxgRIAEoA0ICMAESEgoEbmFtZRgJIAEoCUIEiOwsARIPCgd2ZXJzaW9uGAogASgNEjIKCnBlcm1pc3Npb24YCyABKAsyHi5saXZla2l0LlBhcnRpY2lwYW50UGVybWlzc2lvbhIOCgZyZWdpb24YDCABKAkSFAoMaXNfcHVibGlzaGVyGA0gASgIEisKBGtpbmQYDiABKA4yHS5saXZla2l0LlBhcnRpY2lwYW50SW5mby5LaW5kEmQKCmF0dHJpYnV0ZXMYDyADKAsyKC5saXZla2l0LlBhcnRpY2lwYW50SW5mby5BdHRyaWJ1dGVzRW50cnlCJojsLAGS7CwePHJlZGFjdGVkICh7eyAuU2l6ZSB9fSBieXRlcyk+EjQKEWRpc2Nvbm5lY3RfcmVhc29uGBAgASgOMhkubGl2ZWtpdC5EaXNjb25uZWN0UmVhc29uEjkKDGtpbmRfZGV0YWlscxgSIAMoDjIjLmxpdmVraXQuUGFydGljaXBhbnRJbmZvLktpbmREZXRhaWwSKwoLZGF0YV90cmFja3MYEyADKAsyFi5saXZla2l0LkRhdGFUcmFja0luZm8SFwoPY2xpZW50X3Byb3RvY29sGBQgASgFGjEKD0F0dHJpYnV0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIj4KBVN0YXRlEgsKB0pPSU5JTkcQABIKCgZKT0lORUQQARIKCgZBQ1RJVkUQAhIQCgxESVNDT05ORUNURUQQAyJcCgRLaW5kEgwKCFNUQU5EQVJEEAASCwoHSU5HUkVTUxABEgoKBkVHUkVTUxACEgcKA1NJUBADEgkKBUFHRU5UEAQSDQoJQ09OTkVDVE9SEAcSCgoGQlJJREdFEAgiawoKS2luZERldGFpbBIPCgtDTE9VRF9BR0VOVBAAEg0KCUZPUldBUkRFRBABEhYKEkNPTk5FQ1RPUl9XSEFUU0FQUBACEhQKEENPTk5FQ1RPUl9UV0lMSU8QAxIPCgtCUklER0VfUlRTUBAEIjMKCkVuY3J5cHRpb24iJQoEVHlwZRIICgROT05FEAASBwoDR0NNEAESCgoGQ1VTVE9NEAIiqwEKElNpbXVsY2FzdENvZGVjSW5mbxIRCgltaW1lX3R5cGUYASABKAkSCwoDbWlkGAIgASgJEgsKA2NpZBgDIAEoCRIjCgZsYXllcnMYBCADKAsyEy5saXZla2l0LlZpZGVvTGF5ZXISMgoQdmlkZW9fbGF5ZXJfbW9kZRgFIAEoDjIYLmxpdmVraXQuVmlkZW9MYXllci5Nb2RlEg8KB3NkcF9jaWQYBiABKAkixAQKCVRyYWNrSW5mbxILCgNzaWQYASABKAkSIAoEdHlwZRgCIAEoDjISLmxpdmVraXQuVHJhY2tUeXBlEhIKBG5hbWUYAyABKAlCBIjsLAESDQoFbXV0ZWQYBCABKAgSDQoFd2lkdGgYBSABKA0SDgoGaGVpZ2h0GAYgASgNEhUKCXNpbXVsY2FzdBgHIAEoCEICGAESFwoLZGlzYWJsZV9kdHgYCCABKAhCAhgBEiQKBnNvdXJjZRgJIAEoDjIULmxpdmVraXQuVHJhY2tTb3VyY2USJwoGbGF5ZXJzGAogAygLMhMubGl2ZWtpdC5WaWRlb0xheWVyQgIYARIRCgltaW1lX3R5cGUYCyABKAkSCwoDbWlkGAwgASgJEisKBmNvZGVjcxgNIAMoCzIbLmxpdmVraXQuU2ltdWxjYXN0Q29kZWNJbmZvEhIKBnN0ZXJlbxgOIAEoCEICGAESEwoLZGlzYWJsZV9yZWQYDyABKAgSLAoKZW5jcnlwdGlvbhgQIAEoDjIYLmxpdmVraXQuRW5jcnlwdGlvbi5UeXBlEg4KBnN0cmVhbRgRIAEoCRImCgd2ZXJzaW9uGBIgASgLMhUubGl2ZWtpdC5UaW1lZFZlcnNpb24SMgoOYXVkaW9fZmVhdHVyZXMYEyADKA4yGi5saXZla2l0LkF1ZGlvVHJhY2tGZWF0dXJlEjcKE2JhY2t1cF9jb2RlY19wb2xpY3kYFCABKA4yGi5saXZla2l0LkJhY2t1cENvZGVjUG9saWN5ImwKDURhdGFUcmFja0luZm8SEgoKcHViX2hhbmRsZRgBIAEoDRILCgNzaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIsCgplbmNyeXB0aW9uGAQgASgOMhgubGl2ZWtpdC5FbmNyeXB0aW9uLlR5cGUiZgogRGF0YVRyYWNrRXh0ZW5zaW9uUGFydGljaXBhbnRTaWQSKQoCaWQYASABKA4yHS5saXZla2l0LkRhdGFUcmFja0V4dGVuc2lvbklEEhcKD3BhcnRpY2lwYW50X3NpZBgCIAEoCSJGChxEYXRhVHJhY2tTdWJzY3JpcHRpb25PcHRpb25zEhcKCnRhcmdldF9mcHMYASABKA1IAIgBAUINCgtfdGFyZ2V0X2ZwcyLEAgoKVmlkZW9MYXllchImCgdxdWFsaXR5GAEgASgOMhUubGl2ZWtpdC5WaWRlb1F1YWxpdHkSDQoFd2lkdGgYAiABKA0SDgoGaGVpZ2h0GAMgASgNEg8KB2JpdHJhdGUYBCABKA0SDAoEc3NyYxgFIAEoDRIVCg1zcGF0aWFsX2xheWVyGAYgASgFEgsKA3JpZBgHIAEoCRITCgtyZXBhaXJfc3NyYxgIIAEoDSKWAQoETW9kZRIPCgtNT0RFX1VOVVNFRBAAEiAKHE9ORV9TUEFUSUFMX0xBWUVSX1BFUl9TVFJFQU0QARImCiJNVUxUSVBMRV9TUEFUSUFMX0xBWUVSU19QRVJfU1RSRUFNEAISMwovT05FX1NQQVRJQUxfTEFZRVJfUEVSX1NUUkVBTV9JTkNPTVBMRVRFX1JUQ1BfU1IQAyKnBgoKRGF0YVBhY2tldBIqCgRraW5kGAEgASgOMhgubGl2ZWtpdC5EYXRhUGFja2V0LktpbmRCAhgBEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAQgASgJEh4KFmRlc3RpbmF0aW9uX2lkZW50aXRpZXMYBSADKAkSIwoEdXNlchgCIAEoCzITLmxpdmVraXQuVXNlclBhY2tldEgAEjMKB3NwZWFrZXIYAyABKAsyHC5saXZla2l0LkFjdGl2ZVNwZWFrZXJVcGRhdGVCAhgBSAASJAoIc2lwX2R0bWYYBiABKAsyEC5saXZla2l0LlNpcERUTUZIABIvCg10cmFuc2NyaXB0aW9uGAcgASgLMhYubGl2ZWtpdC5UcmFuc2NyaXB0aW9uSAASKAoHbWV0cmljcxgIIAEoCzIVLmxpdmVraXQuTWV0cmljc0JhdGNoSAASLAoMY2hhdF9tZXNzYWdlGAkgASgLMhQubGl2ZWtpdC5DaGF0TWVzc2FnZUgAEioKC3JwY19yZXF1ZXN0GAogASgLMhMubGl2ZWtpdC5ScGNSZXF1ZXN0SAASIgoHcnBjX2FjaxgLIAEoCzIPLmxpdmVraXQuUnBjQWNrSAASLAoMcnBjX3Jlc3BvbnNlGAwgASgLMhQubGl2ZWtpdC5ScGNSZXNwb25zZUgAEjMKDXN0cmVhbV9oZWFkZXIYDSABKAsyGi5saXZla2l0LkRhdGFTdHJlYW0uSGVhZGVySAASMQoMc3RyZWFtX2NodW5rGA4gASgLMhkubGl2ZWtpdC5EYXRhU3RyZWFtLkNodW5rSAASNQoOc3RyZWFtX3RyYWlsZXIYDyABKAsyGy5saXZla2l0LkRhdGFTdHJlYW0uVHJhaWxlckgAEjQKEGVuY3J5cHRlZF9wYWNrZXQYEiABKAsyGC5saXZla2l0LkVuY3J5cHRlZFBhY2tldEgAEhAKCHNlcXVlbmNlGBAgASgNEhcKD3BhcnRpY2lwYW50X3NpZBgRIAEoCSIfCgRLaW5kEgwKCFJFTElBQkxFEAASCQoFTE9TU1kQAUIHCgV2YWx1ZSJ8Cg9FbmNyeXB0ZWRQYWNrZXQSMQoPZW5jcnlwdGlvbl90eXBlGAEgASgOMhgubGl2ZWtpdC5FbmNyeXB0aW9uLlR5cGUSCgoCaXYYAiABKAwSEQoJa2V5X2luZGV4GAMgASgNEhcKD2VuY3J5cHRlZF92YWx1ZRgEIAEoDCKRAwoWRW5jcnlwdGVkUGFja2V0UGF5bG9hZBIjCgR1c2VyGAEgASgLMhMubGl2ZWtpdC5Vc2VyUGFja2V0SAASLAoMY2hhdF9tZXNzYWdlGAMgASgLMhQubGl2ZWtpdC5DaGF0TWVzc2FnZUgAEioKC3JwY19yZXF1ZXN0GAQgASgLMhMubGl2ZWtpdC5ScGNSZXF1ZXN0SAASIgoHcnBjX2FjaxgFIAEoCzIPLmxpdmVraXQuUnBjQWNrSAASLAoMcnBjX3Jlc3BvbnNlGAYgASgLMhQubGl2ZWtpdC5ScGNSZXNwb25zZUgAEjMKDXN0cmVhbV9oZWFkZXIYByABKAsyGi5saXZla2l0LkRhdGFTdHJlYW0uSGVhZGVySAASMQoMc3RyZWFtX2NodW5rGAggASgLMhkubGl2ZWtpdC5EYXRhU3RyZWFtLkNodW5rSAASNQoOc3RyZWFtX3RyYWlsZXIYCSABKAsyGy5saXZla2l0LkRhdGFTdHJlYW0uVHJhaWxlckgAQgcKBXZhbHVlIkEKE0FjdGl2ZVNwZWFrZXJVcGRhdGUSJgoIc3BlYWtlcnMYASADKAsyFC5saXZla2l0LlNwZWFrZXJJbmZvOgIYASI5CgtTcGVha2VySW5mbxILCgNzaWQYASABKAkSDQoFbGV2ZWwYAiABKAISDgoGYWN0aXZlGAMgASgIIrcCCgpVc2VyUGFja2V0EhsKD3BhcnRpY2lwYW50X3NpZBgBIAEoCUICGAESIAoUcGFydGljaXBhbnRfaWRlbnRpdHkYBSABKAlCAhgBEg8KB3BheWxvYWQYAiABKAwSHAoQZGVzdGluYXRpb25fc2lkcxgDIAMoCUICGAESIgoWZGVzdGluYXRpb25faWRlbnRpdGllcxgGIAMoCUICGAESEgoFdG9waWMYBCABKAlIAIgBARIPCgJpZBgIIAEoCUgBiAEBEhsKCnN0YXJ0X3RpbWUYCSABKARCAjABSAKIAQESGQoIZW5kX3RpbWUYCiABKARCAjABSAOIAQESDQoFbm9uY2UYCyABKAxCCAoGX3RvcGljQgUKA19pZEINCgtfc3RhcnRfdGltZUILCglfZW5kX3RpbWUiJgoHU2lwRFRNRhIMCgRjb2RlGAMgASgNEg0KBWRpZ2l0GAQgASgJInwKDVRyYW5zY3JpcHRpb24SKAogdHJhbnNjcmliZWRfcGFydGljaXBhbnRfaWRlbnRpdHkYAiABKAkSEAoIdHJhY2tfaWQYAyABKAkSLwoIc2VnbWVudHMYBCADKAsyHS5saXZla2l0LlRyYW5zY3JpcHRpb25TZWdtZW50In8KFFRyYW5zY3JpcHRpb25TZWdtZW50EgoKAmlkGAEgASgJEgwKBHRleHQYAiABKAkSFgoKc3RhcnRfdGltZRgDIAEoBEICMAESFAoIZW5kX3RpbWUYBCABKARCAjABEg0KBWZpbmFsGAUgASgIEhAKCGxhbmd1YWdlGAYgASgJIpkBCgtDaGF0TWVzc2FnZRIKCgJpZBgBIAEoCRIVCgl0aW1lc3RhbXAYAiABKANCAjABEh8KDmVkaXRfdGltZXN0YW1wGAMgASgDQgIwAUgAiAEBEg8KB21lc3NhZ2UYBCABKAkSDwoHZGVsZXRlZBgFIAEoCBIRCglnZW5lcmF0ZWQYBiABKAhCEQoPX2VkaXRfdGltZXN0YW1wIoMBCgpScGNSZXF1ZXN0EgoKAmlkGAEgASgJEg4KBm1ldGhvZBgCIAEoCRIPCgdwYXlsb2FkGAMgASgJEhsKE3Jlc3BvbnNlX3RpbWVvdXRfbXMYBCABKA0SDwoHdmVyc2lvbhgFIAEoDRIaChJjb21wcmVzc2VkX3BheWxvYWQYBiABKAwiHAoGUnBjQWNrEhIKCnJlcXVlc3RfaWQYASABKAkifwoLUnBjUmVzcG9uc2USEgoKcmVxdWVzdF9pZBgBIAEoCRIRCgdwYXlsb2FkGAIgASgJSAASIgoFZXJyb3IYAyABKAsyES5saXZla2l0LlJwY0Vycm9ySAASHAoSY29tcHJlc3NlZF9wYXlsb2FkGAQgASgMSABCBwoFdmFsdWUiNwoIUnBjRXJyb3ISDAoEY29kZRgBIAEoDRIPCgdtZXNzYWdlGAIgASgJEgwKBGRhdGEYAyABKAkiQAoRUGFydGljaXBhbnRUcmFja3MSFwoPcGFydGljaXBhbnRfc2lkGAEgASgJEhIKCnRyYWNrX3NpZHMYAiADKAkizgEKClNlcnZlckluZm8SLAoHZWRpdGlvbhgBIAEoDjIbLmxpdmVraXQuU2VydmVySW5mby5FZGl0aW9uEg8KB3ZlcnNpb24YAiABKAkSEAoIcHJvdG9jb2wYAyABKAUSDgoGcmVnaW9uGAQgASgJEg8KB25vZGVfaWQYBSABKAkSEgoKZGVidWdfaW5mbxgGIAEoCRIWCg5hZ2VudF9wcm90b2NvbBgHIAEoBSIiCgdFZGl0aW9uEgwKCFN0YW5kYXJkEAASCQoFQ2xvdWQQASK6AwoKQ2xpZW50SW5mbxIkCgNzZGsYASABKA4yFy5saXZla2l0LkNsaWVudEluZm8uU0RLEg8KB3ZlcnNpb24YAiABKAkSEAoIcHJvdG9jb2wYAyABKAUSCgoCb3MYBCABKAkSEgoKb3NfdmVyc2lvbhgFIAEoCRIUCgxkZXZpY2VfbW9kZWwYBiABKAkSDwoHYnJvd3NlchgHIAEoCRIXCg9icm93c2VyX3ZlcnNpb24YCCABKAkSDwoHYWRkcmVzcxgJIAEoCRIPCgduZXR3b3JrGAogASgJEhIKCm90aGVyX3Nka3MYCyABKAkSFwoPY2xpZW50X3Byb3RvY29sGAwgASgFIrMBCgNTREsSCwoHVU5LTk9XThAAEgYKAkpTEAESCQoFU1dJRlQQAhILCgdBTkRST0lEEAMSCwoHRkxVVFRFUhAEEgYKAkdPEAUSCQoFVU5JVFkQBhIQCgxSRUFDVF9OQVRJVkUQBxIICgRSVVNUEAgSCgoGUFlUSE9OEAkSBwoDQ1BQEAoSDQoJVU5JVFlfV0VCEAsSCAoETk9ERRAMEgoKBlVOUkVBTBANEgkKBUVTUDMyEA4ijAIKE0NsaWVudENvbmZpZ3VyYXRpb24SKgoFdmlkZW8YASABKAsyGy5saXZla2l0LlZpZGVvQ29uZmlndXJhdGlvbhIrCgZzY3JlZW4YAiABKAsyGy5saXZla2l0LlZpZGVvQ29uZmlndXJhdGlvbhI3ChFyZXN1bWVfY29ubmVjdGlvbhgDIAEoDjIcLmxpdmVraXQuQ2xpZW50Q29uZmlnU2V0dGluZxIwCg9kaXNhYmxlZF9jb2RlY3MYBCABKAsyFy5saXZla2l0LkRpc2FibGVkQ29kZWNzEjEKC2ZvcmNlX3JlbGF5GAUgASgOMhwubGl2ZWtpdC5DbGllbnRDb25maWdTZXR0aW5nIkwKElZpZGVvQ29uZmlndXJhdGlvbhI2ChBoYXJkd2FyZV9lbmNvZGVyGAEgASgOMhwubGl2ZWtpdC5DbGllbnRDb25maWdTZXR0aW5nIlEKDkRpc2FibGVkQ29kZWNzEh4KBmNvZGVjcxgBIAMoCzIOLmxpdmVraXQuQ29kZWMSHwoHcHVibGlzaBgCIAMoCzIOLmxpdmVraXQuQ29kZWMikAIKCFJUUERyaWZ0Ei4KCnN0YXJ0X3RpbWUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKCGVuZF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghkdXJhdGlvbhgDIAEoARIbCg9zdGFydF90aW1lc3RhbXAYBCABKARCAjABEhkKDWVuZF90aW1lc3RhbXAYBSABKARCAjABEhsKD3J0cF9jbG9ja190aWNrcxgGIAEoBEICMAESGQoNZHJpZnRfc2FtcGxlcxgHIAEoA0ICMAESEAoIZHJpZnRfbXMYCCABKAESEgoKY2xvY2tfcmF0ZRgJIAEoASLuCgoIUlRQU3RhdHMSLgoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLAoIZW5kX3RpbWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCGR1cmF0aW9uGAMgASgBEg8KB3BhY2tldHMYBCABKA0SEwoLcGFja2V0X3JhdGUYBSABKAESEQoFYnl0ZXMYBiABKARCAjABEhgKDGhlYWRlcl9ieXRlcxgnIAEoBEICMAESDwoHYml0cmF0ZRgHIAEoARIUCgxwYWNrZXRzX2xvc3QYCCABKA0SGAoQcGFja2V0X2xvc3NfcmF0ZRgJIAEoARIeChZwYWNrZXRfbG9zc19wZXJjZW50YWdlGAogASgCEhkKEXBhY2tldHNfZHVwbGljYXRlGAsgASgNEh0KFXBhY2tldF9kdXBsaWNhdGVfcmF0ZRgMIAEoARIbCg9ieXRlc19kdXBsaWNhdGUYDSABKARCAjABEiIKFmhlYWRlcl9ieXRlc19kdXBsaWNhdGUYKCABKARCAjABEhkKEWJpdHJhdGVfZHVwbGljYXRlGA4gASgBEhcKD3BhY2tldHNfcGFkZGluZxgPIAEoDRIbChNwYWNrZXRfcGFkZGluZ19yYXRlGBAgASgBEhkKDWJ5dGVzX3BhZGRpbmcYESABKARCAjABEiAKFGhlYWRlcl9ieXRlc19wYWRkaW5nGCkgASgEQgIwARIXCg9iaXRyYXRlX3BhZGRpbmcYEiABKAESHAoUcGFja2V0c19vdXRfb2Zfb3JkZXIYEyABKA0SDgoGZnJhbWVzGBQgASgNEhIKCmZyYW1lX3JhdGUYFSABKAESFgoOaml0dGVyX2N1cnJlbnQYFiABKAESEgoKaml0dGVyX21heBgXIAEoARI6Cg1nYXBfaGlzdG9ncmFtGBggAygLMiMubGl2ZWtpdC5SVFBTdGF0cy5HYXBIaXN0b2dyYW1FbnRyeRINCgVuYWNrcxgZIAEoDRIRCgluYWNrX2Fja3MYJSABKA0SEwoLbmFja19taXNzZXMYGiABKA0SFQoNbmFja19yZXBlYXRlZBgmIAEoDRIMCgRwbGlzGBsgASgNEiwKCGxhc3RfcGxpGBwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIMCgRmaXJzGB0gASgNEiwKCGxhc3RfZmlyGB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtydHRfY3VycmVudBgfIAEoDRIPCgdydHRfbWF4GCAgASgNEhIKCmtleV9mcmFtZXMYISABKA0SMgoObGFzdF9rZXlfZnJhbWUYIiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKD2xheWVyX2xvY2tfcGxpcxgjIAEoDRI3ChNsYXN0X2xheWVyX2xvY2tfcGxpGCQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBInCgxwYWNrZXRfZHJpZnQYLCABKAsyES5saXZla2l0LlJUUERyaWZ0EisKEG50cF9yZXBvcnRfZHJpZnQYLSABKAsyES5saXZla2l0LlJUUERyaWZ0Ei8KFHJlYmFzZWRfcmVwb3J0X2RyaWZ0GC4gASgLMhEubGl2ZWtpdC5SVFBEcmlmdBIwChVyZWNlaXZlZF9yZXBvcnRfZHJpZnQYLyABKAsyES5saXZla2l0LlJUUERyaWZ0GjMKEUdhcEhpc3RvZ3JhbUVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoDToCOAEitgEKFVJUQ1BTZW5kZXJSZXBvcnRTdGF0ZRIVCg1ydHBfdGltZXN0YW1wGAEgASgNEh0KEXJ0cF90aW1lc3RhbXBfZXh0GAIgASgEQgIwARIZCg1udHBfdGltZXN0YW1wGAMgASgEQgIwARIOCgJhdBgEIAEoA0ICMAESFwoLYXRfYWRqdXN0ZWQYBSABKANCAjABEg8KB3BhY2tldHMYBiABKA0SEgoGb2N0ZXRzGAcgASgEQgIwASLVAgoRUlRQRm9yd2FyZGVyU3RhdGUSDwoHc3RhcnRlZBgBIAEoCBIfChdyZWZlcmVuY2VfbGF5ZXJfc3BhdGlhbBgCIAEoBRIaCg5wcmVfc3RhcnRfdGltZRgDIAEoA0ICMAESHwoTZXh0X2ZpcnN0X3RpbWVzdGFtcBgEIAEoBEICMAESKAocZHVtbXlfc3RhcnRfdGltZXN0YW1wX29mZnNldBgFIAEoBEICMAESKwoKcnRwX211bmdlchgGIAEoCzIXLmxpdmVraXQuUlRQTXVuZ2VyU3RhdGUSLQoKdnA4X211bmdlchgHIAEoCzIXLmxpdmVraXQuVlA4TXVuZ2VyU3RhdGVIABI7ChNzZW5kZXJfcmVwb3J0X3N0YXRlGAggAygLMh4ubGl2ZWtpdC5SVENQU2VuZGVyUmVwb3J0U3RhdGVCDgoMY29kZWNfbXVuZ2VyItsBCg5SVFBNdW5nZXJTdGF0ZRIkChhleHRfbGFzdF9zZXF1ZW5jZV9udW1iZXIYASABKARCAjABEisKH2V4dF9zZWNvbmRfbGFzdF9zZXF1ZW5jZV9udW1iZXIYAiABKARCAjABEh4KEmV4dF9sYXN0X3RpbWVzdGFtcBgDIAEoBEICMAESJQoZZXh0X3NlY29uZF9sYXN0X3RpbWVzdGFtcBgEIAEoBEICMAESEwoLbGFzdF9tYXJrZXIYBSABKAgSGgoSc2Vjb25kX2xhc3RfbWFya2VyGAYgASgIIrgBCg5WUDhNdW5nZXJTdGF0ZRIbChNleHRfbGFzdF9waWN0dXJlX2lkGAEgASgFEhcKD3BpY3R1cmVfaWRfdXNlZBgCIAEoCBIYChBsYXN0X3RsMF9waWNfaWR4GAMgASgNEhgKEHRsMF9waWNfaWR4X3VzZWQYBCABKAgSEAoIdGlkX3VzZWQYBSABKAgSFAoMbGFzdF9rZXlfaWR4GAYgASgNEhQKDGtleV9pZHhfdXNlZBgHIAEoCCI1CgxUaW1lZFZlcnNpb24SFgoKdW5peF9taWNybxgBIAEoA0ICMAESDQoFdGlja3MYAiABKAUi2QcKCkRhdGFTdHJlYW0apAEKClRleHRIZWFkZXISOQoOb3BlcmF0aW9uX3R5cGUYASABKA4yIS5saXZla2l0LkRhdGFTdHJlYW0uT3BlcmF0aW9uVHlwZRIPCgd2ZXJzaW9uGAIgASgFEhoKEnJlcGx5X3RvX3N0cmVhbV9pZBgDIAEoCRIbChNhdHRhY2hlZF9zdHJlYW1faWRzGAQgAygJEhEKCWdlbmVyYXRlZBgFIAEoCBoaCgpCeXRlSGVhZGVyEgwKBG5hbWUYASABKAkargMKBkhlYWRlchIRCglzdHJlYW1faWQYASABKAkSFQoJdGltZXN0YW1wGAIgASgDQgIwARINCgV0b3BpYxgDIAEoCRIRCgltaW1lX3R5cGUYBCABKAkSHQoMdG90YWxfbGVuZ3RoGAUgASgEQgIwAUgBiAEBEjUKD2VuY3J5cHRpb25fdHlwZRgHIAEoDjIYLmxpdmVraXQuRW5jcnlwdGlvbi5UeXBlQgIYARI+CgphdHRyaWJ1dGVzGAggAygLMioubGl2ZWtpdC5EYXRhU3RyZWFtLkhlYWRlci5BdHRyaWJ1dGVzRW50cnkSNQoLdGV4dF9oZWFkZXIYCSABKAsyHi5saXZla2l0LkRhdGFTdHJlYW0uVGV4dEhlYWRlckgAEjUKC2J5dGVfaGVhZGVyGAogASgLMh4ubGl2ZWtpdC5EYXRhU3RyZWFtLkJ5dGVIZWFkZXJIABoxCg9BdHRyaWJ1dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIQCg5jb250ZW50X2hlYWRlckIPCg1fdG90YWxfbGVuZ3RoGnEKBUNodW5rEhEKCXN0cmVhbV9pZBgBIAEoCRIXCgtjaHVua19pbmRleBgCIAEoBEICMAESDwoHY29udGVudBgDIAEoDBIPCgd2ZXJzaW9uGAQgASgFEhMKAml2GAUgASgMQgIYAUgAiAEBQgUKA19pdhqgAQoHVHJhaWxlchIRCglzdHJlYW1faWQYASABKAkSDgoGcmVhc29uGAIgASgJEj8KCmF0dHJpYnV0ZXMYAyADKAsyKy5saXZla2l0LkRhdGFTdHJlYW0uVHJhaWxlci5BdHRyaWJ1dGVzRW50cnkaMQoPQXR0cmlidXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoNT3BlcmF0aW9uVHlwZRIKCgZDUkVBVEUQABIKCgZVUERBVEUQARIKCgZERUxFVEUQAhIMCghSRUFDVElPThADIj4KDEZpbHRlclBhcmFtcxIWCg5pbmNsdWRlX2V2ZW50cxgBIAMoCRIWCg5leGNsdWRlX2V2ZW50cxgCIAMoCSJfCg1XZWJob29rQ29uZmlnEgsKA3VybBgBIAEoCRITCgtzaWduaW5nX2tleRgCIAEoCRIsCg1maWx0ZXJfcGFyYW1zGAMgASgLMhUubGl2ZWtpdC5GaWx0ZXJQYXJhbXMiNgoUU3Vic2NyaWJlZEF1ZGlvQ29kZWMSDQoFY29kZWMYASABKAkSDwoHZW5hYmxlZBgCIAEoCCo7CgpBdWRpb0NvZGVjEg4KCkRFRkFVTFRfQUMQABIICgRPUFVTEAESBwoDQUFDEAISCgoGQUNfTVAzEAMqVgoKVmlkZW9Db2RlYxIOCgpERUZBVUxUX1ZDEAASEQoNSDI2NF9CQVNFTElORRABEg0KCUgyNjRfTUFJThACEg0KCUgyNjRfSElHSBADEgcKA1ZQOBAEKikKCkltYWdlQ29kZWMSDgoKSUNfREVGQVVMVBAAEgsKB0lDX0pQRUcQASpJChFCYWNrdXBDb2RlY1BvbGljeRIVChFQUkVGRVJfUkVHUkVTU0lPThAAEg0KCVNJTVVMQ0FTVBABEg4KClJFR1JFU1NJT04QAiorCglUcmFja1R5cGUSCQoFQVVESU8QABIJCgVWSURFTxABEggKBERBVEEQAipgCgtUcmFja1NvdXJjZRILCgdVTktOT1dOEAASCgoGQ0FNRVJBEAESDgoKTUlDUk9QSE9ORRACEhAKDFNDUkVFTl9TSEFSRRADEhYKElNDUkVFTl9TSEFSRV9BVURJTxAEKkIKFERhdGFUcmFja0V4dGVuc2lvbklEEhAKDERURUlfSU5WQUxJRBAAEhgKFERURUlfUEFSVElDSVBBTlRfU0lEEAEqNgoMVmlkZW9RdWFsaXR5EgcKA0xPVxAAEgoKBk1FRElVTRABEggKBEhJR0gQAhIHCgNPRkYQAypAChFDb25uZWN0aW9uUXVhbGl0eRIICgRQT09SEAASCAoER09PRBABEg0KCUVYQ0VMTEVOVBACEggKBExPU1QQAyo7ChNDbGllbnRDb25maWdTZXR0aW5nEgkKBVVOU0VUEAASDAoIRElTQUJMRUQQARILCgdFTkFCTEVEEAIq1wIKEERpc2Nvbm5lY3RSZWFzb24SEgoOVU5LTk9XTl9SRUFTT04QABIUChBDTElFTlRfSU5JVElBVEVEEAESFgoSRFVQTElDQVRFX0lERU5USVRZEAISEwoPU0VSVkVSX1NIVVRET1dOEAMSFwoTUEFSVElDSVBBTlRfUkVNT1ZFRBAEEhAKDFJPT01fREVMRVRFRBAFEhIKDlNUQVRFX01JU01BVENIEAYSEAoMSk9JTl9GQUlMVVJFEAcSDQoJTUlHUkFUSU9OEAgSEAoMU0lHTkFMX0NMT1NFEAkSDwoLUk9PTV9DTE9TRUQQChIUChBVU0VSX1VOQVZBSUxBQkxFEAsSEQoNVVNFUl9SRUpFQ1RFRBAMEhUKEVNJUF9UUlVOS19GQUlMVVJFEA0SFgoSQ09OTkVDVElPTl9USU1FT1VUEA4SEQoNTUVESUFfRkFJTFVSRRAPKokBCg9SZWNvbm5lY3RSZWFzb24SDgoKUlJfVU5LTk9XThAAEhoKFlJSX1NJR05BTF9ESVNDT05ORUNURUQQARIXChNSUl9QVUJMSVNIRVJfRkFJTEVEEAISGAoUUlJfU1VCU0NSSUJFUl9GQUlMRUQQAxIXChNSUl9TV0lUQ0hfQ0FORElEQVRFEAQqVAoRU3Vic2NyaXB0aW9uRXJyb3ISDgoKU0VfVU5LTk9XThAAEhgKFFNFX0NPREVDX1VOU1VQUE9SVEVEEAESFQoRU0VfVFJBQ0tfTk9URk9VTkQQAiq9AQoRQXVkaW9UcmFja0ZlYXR1cmUSDQoJVEZfU1RFUkVPEAASDQoJVEZfTk9fRFRYEAESGAoUVEZfQVVUT19HQUlOX0NPTlRST0wQAhIYChRURl9FQ0hPX0NBTkNFTExBVElPThADEhgKFFRGX05PSVNFX1NVUFBSRVNTSU9OEAQSIgoeVEZfRU5IQU5DRURfTk9JU0VfQ0FOQ0VMTEFUSU9OEAUSGAoUVEZfUFJFQ09OTkVDVF9CVUZGRVIQBkKCAQoLY29tLmxpdmVraXRCEkxpdmVraXRNb2RlbHNQcm90b1ABWiNnaXRodWIuY29tL2xpdmVraXQvcHJvdG9jb2wvbGl2ZWtpdKICA0xYWKoCB0xpdmVraXTKAgdMaXZla2l04gITTGl2ZWtpdFxHUEJNZXRhZGF0YeoCB0xpdmVraXRiBnByb3RvMw\", [file_google_protobuf_timestamp, file_livekit_metrics, file_logger_options]);\n\n/**\n * @generated from message livekit.Pagination\n */\nexport type Pagination = Message<\"livekit.Pagination\"> & {\n /**\n * list entities which IDs are greater\n *\n * @generated from field: string after_id = 1;\n */\n afterId: string;\n\n /**\n * @generated from field: int32 limit = 2;\n */\n limit: number;\n};\n\n/**\n * Describes the message livekit.Pagination.\n * Use `create(PaginationSchema)` to create a new message.\n */\nexport const PaginationSchema: GenMessage<Pagination> = /*@__PURE__*/\n messageDesc(file_livekit_models, 0);\n\n/**\n * @generated from message livekit.TokenPagination\n */\nexport type TokenPagination = Message<\"livekit.TokenPagination\"> & {\n /**\n * @generated from field: string token = 1;\n */\n token: string;\n};\n\n/**\n * Describes the message livekit.TokenPagination.\n * Use `create(TokenPaginationSchema)` to create a new message.\n */\nexport const TokenPaginationSchema: GenMessage<TokenPagination> = /*@__PURE__*/\n messageDesc(file_livekit_models, 1);\n\n/**\n * ListUpdate is used for updated APIs where 'repeated string' field is modified.\n *\n * @generated from message livekit.ListUpdate\n */\nexport type ListUpdate = Message<\"livekit.ListUpdate\"> & {\n /**\n * set the field to a new list\n *\n * @generated from field: repeated string set = 1;\n */\n set: string[];\n\n /**\n * append items to a list, avoiding duplicates\n *\n * @generated from field: repeated string add = 2;\n */\n add: string[];\n\n /**\n * delete items from a list\n *\n * @generated from field: repeated string remove = 3;\n */\n remove: string[];\n\n /**\n * sets the list to an empty list\n *\n * @generated from field: bool clear = 4;\n */\n clear: boolean;\n};\n\n/**\n * Describes the message livekit.ListUpdate.\n * Use `create(ListUpdateSchema)` to create a new message.\n */\nexport const ListUpdateSchema: GenMessage<ListUpdate> = /*@__PURE__*/\n messageDesc(file_livekit_models, 2);\n\n/**\n * @generated from message livekit.Room\n */\nexport type Room = Message<\"livekit.Room\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: uint32 empty_timeout = 3;\n */\n emptyTimeout: number;\n\n /**\n * @generated from field: uint32 departure_timeout = 14;\n */\n departureTimeout: number;\n\n /**\n * @generated from field: uint32 max_participants = 4;\n */\n maxParticipants: number;\n\n /**\n * @generated from field: int64 creation_time = 5 [jstype = JS_STRING];\n */\n creationTime: string;\n\n /**\n * @generated from field: int64 creation_time_ms = 15 [jstype = JS_STRING];\n */\n creationTimeMs: string;\n\n /**\n * @generated from field: string turn_password = 6;\n */\n turnPassword: string;\n\n /**\n * @generated from field: repeated livekit.Codec enabled_codecs = 7;\n */\n enabledCodecs: Codec[];\n\n /**\n * @generated from field: string metadata = 8;\n */\n metadata: string;\n\n /**\n * @generated from field: uint32 num_participants = 9;\n */\n numParticipants: number;\n\n /**\n * @generated from field: uint32 num_publishers = 11;\n */\n numPublishers: number;\n\n /**\n * @generated from field: bool active_recording = 10;\n */\n activeRecording: boolean;\n\n /**\n * @generated from field: livekit.TimedVersion version = 13;\n */\n version?: TimedVersion;\n};\n\n/**\n * Describes the message livekit.Room.\n * Use `create(RoomSchema)` to create a new message.\n */\nexport const RoomSchema: GenMessage<Room> = /*@__PURE__*/\n messageDesc(file_livekit_models, 3);\n\n/**\n * @generated from message livekit.Codec\n */\nexport type Codec = Message<\"livekit.Codec\"> & {\n /**\n * @generated from field: string mime = 1;\n */\n mime: string;\n\n /**\n * @generated from field: string fmtp_line = 2;\n */\n fmtpLine: string;\n};\n\n/**\n * Describes the message livekit.Codec.\n * Use `create(CodecSchema)` to create a new message.\n */\nexport const CodecSchema: GenMessage<Codec> = /*@__PURE__*/\n messageDesc(file_livekit_models, 4);\n\n/**\n * @generated from message livekit.PlayoutDelay\n */\nexport type PlayoutDelay = Message<\"livekit.PlayoutDelay\"> & {\n /**\n * @generated from field: bool enabled = 1;\n */\n enabled: boolean;\n\n /**\n * @generated from field: uint32 min = 2;\n */\n min: number;\n\n /**\n * @generated from field: uint32 max = 3;\n */\n max: number;\n};\n\n/**\n * Describes the message livekit.PlayoutDelay.\n * Use `create(PlayoutDelaySchema)` to create a new message.\n */\nexport const PlayoutDelaySchema: GenMessage<PlayoutDelay> = /*@__PURE__*/\n messageDesc(file_livekit_models, 5);\n\n/**\n * @generated from message livekit.ParticipantPermission\n */\nexport type ParticipantPermission = Message<\"livekit.ParticipantPermission\"> & {\n /**\n * allow participant to subscribe to other tracks in the room\n *\n * @generated from field: bool can_subscribe = 1;\n */\n canSubscribe: boolean;\n\n /**\n * allow participant to publish new tracks to room\n *\n * @generated from field: bool can_publish = 2;\n */\n canPublish: boolean;\n\n /**\n * allow participant to publish data\n *\n * @generated from field: bool can_publish_data = 3;\n */\n canPublishData: boolean;\n\n /**\n * sources that are allowed to be published\n *\n * @generated from field: repeated livekit.TrackSource can_publish_sources = 9;\n */\n canPublishSources: TrackSource[];\n\n /**\n * indicates that it's hidden to others\n *\n * @generated from field: bool hidden = 7;\n */\n hidden: boolean;\n\n /**\n * indicates it's a recorder instance\n * deprecated: use ParticipantInfo.kind instead\n *\n * @generated from field: bool recorder = 8 [deprecated = true];\n * @deprecated\n */\n recorder: boolean;\n\n /**\n * indicates that participant can update own metadata and attributes\n *\n * @generated from field: bool can_update_metadata = 10;\n */\n canUpdateMetadata: boolean;\n\n /**\n * indicates that participant is an agent\n * deprecated: use ParticipantInfo.kind instead\n *\n * @generated from field: bool agent = 11 [deprecated = true];\n * @deprecated\n */\n agent: boolean;\n\n /**\n * if a participant can subscribe to metrics\n *\n * @generated from field: bool can_subscribe_metrics = 12;\n */\n canSubscribeMetrics: boolean;\n\n /**\n * if a participant can manage an agent session via RemoteSession (control and access state)\n *\n * @generated from field: bool can_manage_agent_session = 13;\n */\n canManageAgentSession: boolean;\n};\n\n/**\n * Describes the message livekit.ParticipantPermission.\n * Use `create(ParticipantPermissionSchema)` to create a new message.\n */\nexport const ParticipantPermissionSchema: GenMessage<ParticipantPermission> = /*@__PURE__*/\n messageDesc(file_livekit_models, 6);\n\n/**\n * @generated from message livekit.ParticipantInfo\n */\nexport type ParticipantInfo = Message<\"livekit.ParticipantInfo\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: string identity = 2;\n */\n identity: string;\n\n /**\n * @generated from field: livekit.ParticipantInfo.State state = 3;\n */\n state: ParticipantInfo_State;\n\n /**\n * @generated from field: repeated livekit.TrackInfo tracks = 4;\n */\n tracks: TrackInfo[];\n\n /**\n * @generated from field: string metadata = 5;\n */\n metadata: string;\n\n /**\n * timestamp when participant joined room, in seconds\n *\n * @generated from field: int64 joined_at = 6 [jstype = JS_STRING];\n */\n joinedAt: string;\n\n /**\n * timestamp when participant joined room, in milliseconds\n *\n * @generated from field: int64 joined_at_ms = 17 [jstype = JS_STRING];\n */\n joinedAtMs: string;\n\n /**\n * @generated from field: string name = 9;\n */\n name: string;\n\n /**\n * @generated from field: uint32 version = 10;\n */\n version: number;\n\n /**\n * @generated from field: livekit.ParticipantPermission permission = 11;\n */\n permission?: ParticipantPermission;\n\n /**\n * @generated from field: string region = 12;\n */\n region: string;\n\n /**\n * indicates the participant has an active publisher connection\n * and can publish to the server\n *\n * @generated from field: bool is_publisher = 13;\n */\n isPublisher: boolean;\n\n /**\n * @generated from field: livekit.ParticipantInfo.Kind kind = 14;\n */\n kind: ParticipantInfo_Kind;\n\n /**\n * @generated from field: map<string, string> attributes = 15;\n */\n attributes: { [key: string]: string };\n\n /**\n * @generated from field: livekit.DisconnectReason disconnect_reason = 16;\n */\n disconnectReason: DisconnectReason;\n\n /**\n * @generated from field: repeated livekit.ParticipantInfo.KindDetail kind_details = 18;\n */\n kindDetails: ParticipantInfo_KindDetail[];\n\n /**\n * @generated from field: repeated livekit.DataTrackInfo data_tracks = 19;\n */\n dataTracks: DataTrackInfo[];\n\n /**\n * protocol version used for client feature compatibility\n *\n * @generated from field: int32 client_protocol = 20;\n */\n clientProtocol: number;\n};\n\n/**\n * Describes the message livekit.ParticipantInfo.\n * Use `create(ParticipantInfoSchema)` to create a new message.\n */\nexport const ParticipantInfoSchema: GenMessage<ParticipantInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 7);\n\n/**\n * @generated from enum livekit.ParticipantInfo.State\n */\nexport enum ParticipantInfo_State {\n /**\n * websocket' connected, but not offered yet\n *\n * @generated from enum value: JOINING = 0;\n */\n JOINING = 0,\n\n /**\n * server received client offer\n *\n * @generated from enum value: JOINED = 1;\n */\n JOINED = 1,\n\n /**\n * ICE connectivity established\n *\n * @generated from enum value: ACTIVE = 2;\n */\n ACTIVE = 2,\n\n /**\n * WS disconnected\n *\n * @generated from enum value: DISCONNECTED = 3;\n */\n DISCONNECTED = 3,\n}\n\n/**\n * Describes the enum livekit.ParticipantInfo.State.\n */\nexport const ParticipantInfo_StateSchema: GenEnum<ParticipantInfo_State> = /*@__PURE__*/\n enumDesc(file_livekit_models, 7, 0);\n\n/**\n * @generated from enum livekit.ParticipantInfo.Kind\n */\nexport enum ParticipantInfo_Kind {\n /**\n * standard participants, e.g. web clients\n *\n * @generated from enum value: STANDARD = 0;\n */\n STANDARD = 0,\n\n /**\n * only ingests streams\n *\n * @generated from enum value: INGRESS = 1;\n */\n INGRESS = 1,\n\n /**\n * only consumes streams\n *\n * @generated from enum value: EGRESS = 2;\n */\n EGRESS = 2,\n\n /**\n * SIP participants\n *\n * @generated from enum value: SIP = 3;\n */\n SIP = 3,\n\n /**\n * LiveKit agents\n *\n * @generated from enum value: AGENT = 4;\n */\n AGENT = 4,\n\n /**\n * Connectors participants\n *\n * @generated from enum value: CONNECTOR = 7;\n */\n CONNECTOR = 7,\n\n /**\n * Bridge participants\n *\n * NEXT_ID: 9\n *\n * @generated from enum value: BRIDGE = 8;\n */\n BRIDGE = 8,\n}\n\n/**\n * Describes the enum livekit.ParticipantInfo.Kind.\n */\nexport const ParticipantInfo_KindSchema: GenEnum<ParticipantInfo_Kind> = /*@__PURE__*/\n enumDesc(file_livekit_models, 7, 1);\n\n/**\n * @generated from enum livekit.ParticipantInfo.KindDetail\n */\nexport enum ParticipantInfo_KindDetail {\n /**\n * @generated from enum value: CLOUD_AGENT = 0;\n */\n CLOUD_AGENT = 0,\n\n /**\n * @generated from enum value: FORWARDED = 1;\n */\n FORWARDED = 1,\n\n /**\n * @generated from enum value: CONNECTOR_WHATSAPP = 2;\n */\n CONNECTOR_WHATSAPP = 2,\n\n /**\n * @generated from enum value: CONNECTOR_TWILIO = 3;\n */\n CONNECTOR_TWILIO = 3,\n\n /**\n * NEXT_ID: 5\n *\n * @generated from enum value: BRIDGE_RTSP = 4;\n */\n BRIDGE_RTSP = 4,\n}\n\n/**\n * Describes the enum livekit.ParticipantInfo.KindDetail.\n */\nexport const ParticipantInfo_KindDetailSchema: GenEnum<ParticipantInfo_KindDetail> = /*@__PURE__*/\n enumDesc(file_livekit_models, 7, 2);\n\n/**\n * @generated from message livekit.Encryption\n */\nexport type Encryption = Message<\"livekit.Encryption\"> & {\n};\n\n/**\n * Describes the message livekit.Encryption.\n * Use `create(EncryptionSchema)` to create a new message.\n */\nexport const EncryptionSchema: GenMessage<Encryption> = /*@__PURE__*/\n messageDesc(file_livekit_models, 8);\n\n/**\n * @generated from enum livekit.Encryption.Type\n */\nexport enum Encryption_Type {\n /**\n * @generated from enum value: NONE = 0;\n */\n NONE = 0,\n\n /**\n * @generated from enum value: GCM = 1;\n */\n GCM = 1,\n\n /**\n * @generated from enum value: CUSTOM = 2;\n */\n CUSTOM = 2,\n}\n\n/**\n * Describes the enum livekit.Encryption.Type.\n */\nexport const Encryption_TypeSchema: GenEnum<Encryption_Type> = /*@__PURE__*/\n enumDesc(file_livekit_models, 8, 0);\n\n/**\n * @generated from message livekit.SimulcastCodecInfo\n */\nexport type SimulcastCodecInfo = Message<\"livekit.SimulcastCodecInfo\"> & {\n /**\n * @generated from field: string mime_type = 1;\n */\n mimeType: string;\n\n /**\n * @generated from field: string mid = 2;\n */\n mid: string;\n\n /**\n * @generated from field: string cid = 3;\n */\n cid: string;\n\n /**\n * @generated from field: repeated livekit.VideoLayer layers = 4;\n */\n layers: VideoLayer[];\n\n /**\n * @generated from field: livekit.VideoLayer.Mode video_layer_mode = 5;\n */\n videoLayerMode: VideoLayer_Mode;\n\n /**\n * cid (client side id for track) could be different between\n * signalling (AddTrackRequest) and SDP offer. This field\n * will be populated only if it is different to avoid\n * duplication and keep the representation concise.\n *\n * @generated from field: string sdp_cid = 6;\n */\n sdpCid: string;\n};\n\n/**\n * Describes the message livekit.SimulcastCodecInfo.\n * Use `create(SimulcastCodecInfoSchema)` to create a new message.\n */\nexport const SimulcastCodecInfoSchema: GenMessage<SimulcastCodecInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 9);\n\n/**\n * @generated from message livekit.TrackInfo\n */\nexport type TrackInfo = Message<\"livekit.TrackInfo\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: livekit.TrackType type = 2;\n */\n type: TrackType;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: bool muted = 4;\n */\n muted: boolean;\n\n /**\n * original width of video (unset for audio)\n * clients may receive a lower resolution version with simulcast\n *\n * @generated from field: uint32 width = 5;\n */\n width: number;\n\n /**\n * original height of video (unset for audio)\n *\n * @generated from field: uint32 height = 6;\n */\n height: number;\n\n /**\n * true if track is simulcasted\n *\n * see `video_layer_mode` in `codecs`\n *\n * @generated from field: bool simulcast = 7 [deprecated = true];\n * @deprecated\n */\n simulcast: boolean;\n\n /**\n * true if DTX (Discontinuous Transmission) is disabled for audio\n *\n * deprecated in favor of `audio_features`\n *\n * @generated from field: bool disable_dtx = 8 [deprecated = true];\n * @deprecated\n */\n disableDtx: boolean;\n\n /**\n * source of media\n *\n * @generated from field: livekit.TrackSource source = 9;\n */\n source: TrackSource;\n\n /**\n * see `codecs` for layers of individual codec\n *\n * @generated from field: repeated livekit.VideoLayer layers = 10 [deprecated = true];\n * @deprecated\n */\n layers: VideoLayer[];\n\n /**\n * mime type of codec\n *\n * @generated from field: string mime_type = 11;\n */\n mimeType: string;\n\n /**\n * @generated from field: string mid = 12;\n */\n mid: string;\n\n /**\n * @generated from field: repeated livekit.SimulcastCodecInfo codecs = 13;\n */\n codecs: SimulcastCodecInfo[];\n\n /**\n * deprecated in favor of `audio_features`\n *\n * @generated from field: bool stereo = 14 [deprecated = true];\n * @deprecated\n */\n stereo: boolean;\n\n /**\n * true if RED (Redundant Encoding) is disabled for audio\n *\n * @generated from field: bool disable_red = 15;\n */\n disableRed: boolean;\n\n /**\n * @generated from field: livekit.Encryption.Type encryption = 16;\n */\n encryption: Encryption_Type;\n\n /**\n * @generated from field: string stream = 17;\n */\n stream: string;\n\n /**\n * @generated from field: livekit.TimedVersion version = 18;\n */\n version?: TimedVersion;\n\n /**\n * @generated from field: repeated livekit.AudioTrackFeature audio_features = 19;\n */\n audioFeatures: AudioTrackFeature[];\n\n /**\n * @generated from field: livekit.BackupCodecPolicy backup_codec_policy = 20;\n */\n backupCodecPolicy: BackupCodecPolicy;\n};\n\n/**\n * Describes the message livekit.TrackInfo.\n * Use `create(TrackInfoSchema)` to create a new message.\n */\nexport const TrackInfoSchema: GenMessage<TrackInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 10);\n\n/**\n * @generated from message livekit.DataTrackInfo\n */\nexport type DataTrackInfo = Message<\"livekit.DataTrackInfo\"> & {\n /**\n * Client-assigned, 16-bit identifier that will be attached to packets sent by the publisher.\n *\n * @generated from field: uint32 pub_handle = 1;\n */\n pubHandle: number;\n\n /**\n * Server-assigned track identifier.\n *\n * @generated from field: string sid = 2;\n */\n sid: string;\n\n /**\n * Human-readable identifier (e.g., `geoLocation`, `servoPosition.x`, etc.), unique per publisher.\n *\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * Method used for end-to-end encryption (E2EE) on packet payloads.\n *\n * @generated from field: livekit.Encryption.Type encryption = 4;\n */\n encryption: Encryption_Type;\n};\n\n/**\n * Describes the message livekit.DataTrackInfo.\n * Use `create(DataTrackInfoSchema)` to create a new message.\n */\nexport const DataTrackInfoSchema: GenMessage<DataTrackInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 11);\n\n/**\n * @generated from message livekit.DataTrackExtensionParticipantSid\n */\nexport type DataTrackExtensionParticipantSid = Message<\"livekit.DataTrackExtensionParticipantSid\"> & {\n /**\n * @generated from field: livekit.DataTrackExtensionID id = 1;\n */\n id: DataTrackExtensionID;\n\n /**\n * @generated from field: string participant_sid = 2;\n */\n participantSid: string;\n};\n\n/**\n * Describes the message livekit.DataTrackExtensionParticipantSid.\n * Use `create(DataTrackExtensionParticipantSidSchema)` to create a new message.\n */\nexport const DataTrackExtensionParticipantSidSchema: GenMessage<DataTrackExtensionParticipantSid> = /*@__PURE__*/\n messageDesc(file_livekit_models, 12);\n\n/**\n * @generated from message livekit.DataTrackSubscriptionOptions\n */\nexport type DataTrackSubscriptionOptions = Message<\"livekit.DataTrackSubscriptionOptions\"> & {\n /**\n * Rate in frames per second (FPS) the subscriber wants to receive frames at.\n * If omitted, the subscriber defaults to the publisher's fps\n *\n * @generated from field: optional uint32 target_fps = 1;\n */\n targetFps?: number;\n};\n\n/**\n * Describes the message livekit.DataTrackSubscriptionOptions.\n * Use `create(DataTrackSubscriptionOptionsSchema)` to create a new message.\n */\nexport const DataTrackSubscriptionOptionsSchema: GenMessage<DataTrackSubscriptionOptions> = /*@__PURE__*/\n messageDesc(file_livekit_models, 13);\n\n/**\n * provide information about available spatial layers\n *\n * @generated from message livekit.VideoLayer\n */\nexport type VideoLayer = Message<\"livekit.VideoLayer\"> & {\n /**\n * for tracks with a single layer, this should be HIGH\n *\n * @generated from field: livekit.VideoQuality quality = 1;\n */\n quality: VideoQuality;\n\n /**\n * @generated from field: uint32 width = 2;\n */\n width: number;\n\n /**\n * @generated from field: uint32 height = 3;\n */\n height: number;\n\n /**\n * target bitrate in bit per second (bps), server will measure actual\n *\n * @generated from field: uint32 bitrate = 4;\n */\n bitrate: number;\n\n /**\n * @generated from field: uint32 ssrc = 5;\n */\n ssrc: number;\n\n /**\n * @generated from field: int32 spatial_layer = 6;\n */\n spatialLayer: number;\n\n /**\n * @generated from field: string rid = 7;\n */\n rid: string;\n\n /**\n * @generated from field: uint32 repair_ssrc = 8;\n */\n repairSsrc: number;\n};\n\n/**\n * Describes the message livekit.VideoLayer.\n * Use `create(VideoLayerSchema)` to create a new message.\n */\nexport const VideoLayerSchema: GenMessage<VideoLayer> = /*@__PURE__*/\n messageDesc(file_livekit_models, 14);\n\n/**\n * @generated from enum livekit.VideoLayer.Mode\n */\nexport enum VideoLayer_Mode {\n /**\n * @generated from enum value: MODE_UNUSED = 0;\n */\n MODE_UNUSED = 0,\n\n /**\n * @generated from enum value: ONE_SPATIAL_LAYER_PER_STREAM = 1;\n */\n ONE_SPATIAL_LAYER_PER_STREAM = 1,\n\n /**\n * @generated from enum value: MULTIPLE_SPATIAL_LAYERS_PER_STREAM = 2;\n */\n MULTIPLE_SPATIAL_LAYERS_PER_STREAM = 2,\n\n /**\n * @generated from enum value: ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR = 3;\n */\n ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR = 3,\n}\n\n/**\n * Describes the enum livekit.VideoLayer.Mode.\n */\nexport const VideoLayer_ModeSchema: GenEnum<VideoLayer_Mode> = /*@__PURE__*/\n enumDesc(file_livekit_models, 14, 0);\n\n/**\n * new DataPacket API\n *\n * @generated from message livekit.DataPacket\n */\nexport type DataPacket = Message<\"livekit.DataPacket\"> & {\n /**\n * @generated from field: livekit.DataPacket.Kind kind = 1 [deprecated = true];\n * @deprecated\n */\n kind: DataPacket_Kind;\n\n /**\n * participant identity of user that sent the message\n *\n * @generated from field: string participant_identity = 4;\n */\n participantIdentity: string;\n\n /**\n * identities of participants who will receive the message (sent to all by default)\n *\n * @generated from field: repeated string destination_identities = 5;\n */\n destinationIdentities: string[];\n\n /**\n * @generated from oneof livekit.DataPacket.value\n */\n value: {\n /**\n * @generated from field: livekit.UserPacket user = 2;\n */\n value: UserPacket;\n case: \"user\";\n } | {\n /**\n * @generated from field: livekit.ActiveSpeakerUpdate speaker = 3 [deprecated = true];\n * @deprecated\n */\n value: ActiveSpeakerUpdate;\n case: \"speaker\";\n } | {\n /**\n * @generated from field: livekit.SipDTMF sip_dtmf = 6;\n */\n value: SipDTMF;\n case: \"sipDtmf\";\n } | {\n /**\n * @generated from field: livekit.Transcription transcription = 7;\n */\n value: Transcription;\n case: \"transcription\";\n } | {\n /**\n * @generated from field: livekit.MetricsBatch metrics = 8;\n */\n value: MetricsBatch;\n case: \"metrics\";\n } | {\n /**\n * @generated from field: livekit.ChatMessage chat_message = 9;\n */\n value: ChatMessage;\n case: \"chatMessage\";\n } | {\n /**\n * @generated from field: livekit.RpcRequest rpc_request = 10;\n */\n value: RpcRequest;\n case: \"rpcRequest\";\n } | {\n /**\n * @generated from field: livekit.RpcAck rpc_ack = 11;\n */\n value: RpcAck;\n case: \"rpcAck\";\n } | {\n /**\n * @generated from field: livekit.RpcResponse rpc_response = 12;\n */\n value: RpcResponse;\n case: \"rpcResponse\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Header stream_header = 13;\n */\n value: DataStream_Header;\n case: \"streamHeader\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Chunk stream_chunk = 14;\n */\n value: DataStream_Chunk;\n case: \"streamChunk\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Trailer stream_trailer = 15;\n */\n value: DataStream_Trailer;\n case: \"streamTrailer\";\n } | {\n /**\n * @generated from field: livekit.EncryptedPacket encrypted_packet = 18;\n */\n value: EncryptedPacket;\n case: \"encryptedPacket\";\n } | { case: undefined; value?: undefined };\n\n /**\n * sequence number of reliable packet\n *\n * @generated from field: uint32 sequence = 16;\n */\n sequence: number;\n\n /**\n * sid of the user that sent the message\n *\n * @generated from field: string participant_sid = 17;\n */\n participantSid: string;\n};\n\n/**\n * Describes the message livekit.DataPacket.\n * Use `create(DataPacketSchema)` to create a new message.\n */\nexport const DataPacketSchema: GenMessage<DataPacket> = /*@__PURE__*/\n messageDesc(file_livekit_models, 15);\n\n/**\n * @generated from enum livekit.DataPacket.Kind\n */\nexport enum DataPacket_Kind {\n /**\n * @generated from enum value: RELIABLE = 0;\n */\n RELIABLE = 0,\n\n /**\n * @generated from enum value: LOSSY = 1;\n */\n LOSSY = 1,\n}\n\n/**\n * Describes the enum livekit.DataPacket.Kind.\n */\nexport const DataPacket_KindSchema: GenEnum<DataPacket_Kind> = /*@__PURE__*/\n enumDesc(file_livekit_models, 15, 0);\n\n/**\n * @generated from message livekit.EncryptedPacket\n */\nexport type EncryptedPacket = Message<\"livekit.EncryptedPacket\"> & {\n /**\n * @generated from field: livekit.Encryption.Type encryption_type = 1;\n */\n encryptionType: Encryption_Type;\n\n /**\n * @generated from field: bytes iv = 2;\n */\n iv: Uint8Array;\n\n /**\n * @generated from field: uint32 key_index = 3;\n */\n keyIndex: number;\n\n /**\n * This is an encrypted EncryptedPacketPayload message representation\n *\n * @generated from field: bytes encrypted_value = 4;\n */\n encryptedValue: Uint8Array;\n};\n\n/**\n * Describes the message livekit.EncryptedPacket.\n * Use `create(EncryptedPacketSchema)` to create a new message.\n */\nexport const EncryptedPacketSchema: GenMessage<EncryptedPacket> = /*@__PURE__*/\n messageDesc(file_livekit_models, 16);\n\n/**\n * @generated from message livekit.EncryptedPacketPayload\n */\nexport type EncryptedPacketPayload = Message<\"livekit.EncryptedPacketPayload\"> & {\n /**\n * @generated from oneof livekit.EncryptedPacketPayload.value\n */\n value: {\n /**\n * @generated from field: livekit.UserPacket user = 1;\n */\n value: UserPacket;\n case: \"user\";\n } | {\n /**\n * @generated from field: livekit.ChatMessage chat_message = 3;\n */\n value: ChatMessage;\n case: \"chatMessage\";\n } | {\n /**\n * @generated from field: livekit.RpcRequest rpc_request = 4;\n */\n value: RpcRequest;\n case: \"rpcRequest\";\n } | {\n /**\n * @generated from field: livekit.RpcAck rpc_ack = 5;\n */\n value: RpcAck;\n case: \"rpcAck\";\n } | {\n /**\n * @generated from field: livekit.RpcResponse rpc_response = 6;\n */\n value: RpcResponse;\n case: \"rpcResponse\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Header stream_header = 7;\n */\n value: DataStream_Header;\n case: \"streamHeader\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Chunk stream_chunk = 8;\n */\n value: DataStream_Chunk;\n case: \"streamChunk\";\n } | {\n /**\n * @generated from field: livekit.DataStream.Trailer stream_trailer = 9;\n */\n value: DataStream_Trailer;\n case: \"streamTrailer\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message livekit.EncryptedPacketPayload.\n * Use `create(EncryptedPacketPayloadSchema)` to create a new message.\n */\nexport const EncryptedPacketPayloadSchema: GenMessage<EncryptedPacketPayload> = /*@__PURE__*/\n messageDesc(file_livekit_models, 17);\n\n/**\n * @generated from message livekit.ActiveSpeakerUpdate\n * @deprecated\n */\nexport type ActiveSpeakerUpdate = Message<\"livekit.ActiveSpeakerUpdate\"> & {\n /**\n * @generated from field: repeated livekit.SpeakerInfo speakers = 1;\n */\n speakers: SpeakerInfo[];\n};\n\n/**\n * Describes the message livekit.ActiveSpeakerUpdate.\n * Use `create(ActiveSpeakerUpdateSchema)` to create a new message.\n * @deprecated\n */\nexport const ActiveSpeakerUpdateSchema: GenMessage<ActiveSpeakerUpdate> = /*@__PURE__*/\n messageDesc(file_livekit_models, 18);\n\n/**\n * @generated from message livekit.SpeakerInfo\n */\nexport type SpeakerInfo = Message<\"livekit.SpeakerInfo\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * audio level, 0-1.0, 1 is loudest\n *\n * @generated from field: float level = 2;\n */\n level: number;\n\n /**\n * true if speaker is currently active\n *\n * @generated from field: bool active = 3;\n */\n active: boolean;\n};\n\n/**\n * Describes the message livekit.SpeakerInfo.\n * Use `create(SpeakerInfoSchema)` to create a new message.\n */\nexport const SpeakerInfoSchema: GenMessage<SpeakerInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 19);\n\n/**\n * @generated from message livekit.UserPacket\n */\nexport type UserPacket = Message<\"livekit.UserPacket\"> & {\n /**\n * participant ID of user that sent the message\n *\n * @generated from field: string participant_sid = 1 [deprecated = true];\n * @deprecated\n */\n participantSid: string;\n\n /**\n * @generated from field: string participant_identity = 5 [deprecated = true];\n * @deprecated\n */\n participantIdentity: string;\n\n /**\n * user defined payload\n *\n * @generated from field: bytes payload = 2;\n */\n payload: Uint8Array;\n\n /**\n * the ID of the participants who will receive the message (sent to all by default)\n *\n * @generated from field: repeated string destination_sids = 3 [deprecated = true];\n * @deprecated\n */\n destinationSids: string[];\n\n /**\n * identities of participants who will receive the message (sent to all by default)\n *\n * @generated from field: repeated string destination_identities = 6 [deprecated = true];\n * @deprecated\n */\n destinationIdentities: string[];\n\n /**\n * topic under which the message was published\n *\n * @generated from field: optional string topic = 4;\n */\n topic?: string;\n\n /**\n * Unique ID to identify the message\n *\n * @generated from field: optional string id = 8;\n */\n id?: string;\n\n /**\n * start and end time allow relating the message to specific media time\n *\n * @generated from field: optional uint64 start_time = 9 [jstype = JS_STRING];\n */\n startTime?: string;\n\n /**\n * @generated from field: optional uint64 end_time = 10 [jstype = JS_STRING];\n */\n endTime?: string;\n\n /**\n * added by SDK to enable de-duping of messages, for INTERNAL USE ONLY\n *\n * @generated from field: bytes nonce = 11;\n */\n nonce: Uint8Array;\n};\n\n/**\n * Describes the message livekit.UserPacket.\n * Use `create(UserPacketSchema)` to create a new message.\n */\nexport const UserPacketSchema: GenMessage<UserPacket> = /*@__PURE__*/\n messageDesc(file_livekit_models, 20);\n\n/**\n * @generated from message livekit.SipDTMF\n */\nexport type SipDTMF = Message<\"livekit.SipDTMF\"> & {\n /**\n * @generated from field: uint32 code = 3;\n */\n code: number;\n\n /**\n * @generated from field: string digit = 4;\n */\n digit: string;\n};\n\n/**\n * Describes the message livekit.SipDTMF.\n * Use `create(SipDTMFSchema)` to create a new message.\n */\nexport const SipDTMFSchema: GenMessage<SipDTMF> = /*@__PURE__*/\n messageDesc(file_livekit_models, 21);\n\n/**\n * @generated from message livekit.Transcription\n */\nexport type Transcription = Message<\"livekit.Transcription\"> & {\n /**\n * Participant that got its speech transcribed\n *\n * @generated from field: string transcribed_participant_identity = 2;\n */\n transcribedParticipantIdentity: string;\n\n /**\n * @generated from field: string track_id = 3;\n */\n trackId: string;\n\n /**\n * @generated from field: repeated livekit.TranscriptionSegment segments = 4;\n */\n segments: TranscriptionSegment[];\n};\n\n/**\n * Describes the message livekit.Transcription.\n * Use `create(TranscriptionSchema)` to create a new message.\n */\nexport const TranscriptionSchema: GenMessage<Transcription> = /*@__PURE__*/\n messageDesc(file_livekit_models, 22);\n\n/**\n * @generated from message livekit.TranscriptionSegment\n */\nexport type TranscriptionSegment = Message<\"livekit.TranscriptionSegment\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: uint64 start_time = 3 [jstype = JS_STRING];\n */\n startTime: string;\n\n /**\n * @generated from field: uint64 end_time = 4 [jstype = JS_STRING];\n */\n endTime: string;\n\n /**\n * @generated from field: bool final = 5;\n */\n final: boolean;\n\n /**\n * @generated from field: string language = 6;\n */\n language: string;\n};\n\n/**\n * Describes the message livekit.TranscriptionSegment.\n * Use `create(TranscriptionSegmentSchema)` to create a new message.\n */\nexport const TranscriptionSegmentSchema: GenMessage<TranscriptionSegment> = /*@__PURE__*/\n messageDesc(file_livekit_models, 23);\n\n/**\n * @generated from message livekit.ChatMessage\n */\nexport type ChatMessage = Message<\"livekit.ChatMessage\"> & {\n /**\n * uuid\n *\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: int64 timestamp = 2 [jstype = JS_STRING];\n */\n timestamp: string;\n\n /**\n * populated only if the intent is to edit/update an existing message\n *\n * @generated from field: optional int64 edit_timestamp = 3 [jstype = JS_STRING];\n */\n editTimestamp?: string;\n\n /**\n * @generated from field: string message = 4;\n */\n message: string;\n\n /**\n * true to remove message\n *\n * @generated from field: bool deleted = 5;\n */\n deleted: boolean;\n\n /**\n * true if the chat message has been generated by an agent from a participant's audio transcription\n *\n * @generated from field: bool generated = 6;\n */\n generated: boolean;\n};\n\n/**\n * Describes the message livekit.ChatMessage.\n * Use `create(ChatMessageSchema)` to create a new message.\n */\nexport const ChatMessageSchema: GenMessage<ChatMessage> = /*@__PURE__*/\n messageDesc(file_livekit_models, 24);\n\n/**\n * @generated from message livekit.RpcRequest\n */\nexport type RpcRequest = Message<\"livekit.RpcRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string method = 2;\n */\n method: string;\n\n /**\n * @generated from field: string payload = 3;\n */\n payload: string;\n\n /**\n * @generated from field: uint32 response_timeout_ms = 4;\n */\n responseTimeoutMs: number;\n\n /**\n * @generated from field: uint32 version = 5;\n */\n version: number;\n\n /**\n * Compressed payload data. When set, this field is used instead of `payload`.\n *\n * @generated from field: bytes compressed_payload = 6;\n */\n compressedPayload: Uint8Array;\n};\n\n/**\n * Describes the message livekit.RpcRequest.\n * Use `create(RpcRequestSchema)` to create a new message.\n */\nexport const RpcRequestSchema: GenMessage<RpcRequest> = /*@__PURE__*/\n messageDesc(file_livekit_models, 25);\n\n/**\n * @generated from message livekit.RpcAck\n */\nexport type RpcAck = Message<\"livekit.RpcAck\"> & {\n /**\n * @generated from field: string request_id = 1;\n */\n requestId: string;\n};\n\n/**\n * Describes the message livekit.RpcAck.\n * Use `create(RpcAckSchema)` to create a new message.\n */\nexport const RpcAckSchema: GenMessage<RpcAck> = /*@__PURE__*/\n messageDesc(file_livekit_models, 26);\n\n/**\n * @generated from message livekit.RpcResponse\n */\nexport type RpcResponse = Message<\"livekit.RpcResponse\"> & {\n /**\n * @generated from field: string request_id = 1;\n */\n requestId: string;\n\n /**\n * @generated from oneof livekit.RpcResponse.value\n */\n value: {\n /**\n * @generated from field: string payload = 2;\n */\n value: string;\n case: \"payload\";\n } | {\n /**\n * @generated from field: livekit.RpcError error = 3;\n */\n value: RpcError;\n case: \"error\";\n } | {\n /**\n * Compressed payload data. When set, this field is used instead of `payload`.\n *\n * @generated from field: bytes compressed_payload = 4;\n */\n value: Uint8Array;\n case: \"compressedPayload\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message livekit.RpcResponse.\n * Use `create(RpcResponseSchema)` to create a new message.\n */\nexport const RpcResponseSchema: GenMessage<RpcResponse> = /*@__PURE__*/\n messageDesc(file_livekit_models, 27);\n\n/**\n * @generated from message livekit.RpcError\n */\nexport type RpcError = Message<\"livekit.RpcError\"> & {\n /**\n * @generated from field: uint32 code = 1;\n */\n code: number;\n\n /**\n * @generated from field: string message = 2;\n */\n message: string;\n\n /**\n * @generated from field: string data = 3;\n */\n data: string;\n};\n\n/**\n * Describes the message livekit.RpcError.\n * Use `create(RpcErrorSchema)` to create a new message.\n */\nexport const RpcErrorSchema: GenMessage<RpcError> = /*@__PURE__*/\n messageDesc(file_livekit_models, 28);\n\n/**\n * @generated from message livekit.ParticipantTracks\n */\nexport type ParticipantTracks = Message<\"livekit.ParticipantTracks\"> & {\n /**\n * participant ID of participant to whom the tracks belong\n *\n * @generated from field: string participant_sid = 1;\n */\n participantSid: string;\n\n /**\n * @generated from field: repeated string track_sids = 2;\n */\n trackSids: string[];\n};\n\n/**\n * Describes the message livekit.ParticipantTracks.\n * Use `create(ParticipantTracksSchema)` to create a new message.\n */\nexport const ParticipantTracksSchema: GenMessage<ParticipantTracks> = /*@__PURE__*/\n messageDesc(file_livekit_models, 29);\n\n/**\n * details about the server\n *\n * @generated from message livekit.ServerInfo\n */\nexport type ServerInfo = Message<\"livekit.ServerInfo\"> & {\n /**\n * @generated from field: livekit.ServerInfo.Edition edition = 1;\n */\n edition: ServerInfo_Edition;\n\n /**\n * @generated from field: string version = 2;\n */\n version: string;\n\n /**\n * @generated from field: int32 protocol = 3;\n */\n protocol: number;\n\n /**\n * @generated from field: string region = 4;\n */\n region: string;\n\n /**\n * @generated from field: string node_id = 5;\n */\n nodeId: string;\n\n /**\n * additional debugging information. sent only if server is in development mode\n *\n * @generated from field: string debug_info = 6;\n */\n debugInfo: string;\n\n /**\n * @generated from field: int32 agent_protocol = 7;\n */\n agentProtocol: number;\n};\n\n/**\n * Describes the message livekit.ServerInfo.\n * Use `create(ServerInfoSchema)` to create a new message.\n */\nexport const ServerInfoSchema: GenMessage<ServerInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 30);\n\n/**\n * @generated from enum livekit.ServerInfo.Edition\n */\nexport enum ServerInfo_Edition {\n /**\n * @generated from enum value: Standard = 0;\n */\n Standard = 0,\n\n /**\n * @generated from enum value: Cloud = 1;\n */\n Cloud = 1,\n}\n\n/**\n * Describes the enum livekit.ServerInfo.Edition.\n */\nexport const ServerInfo_EditionSchema: GenEnum<ServerInfo_Edition> = /*@__PURE__*/\n enumDesc(file_livekit_models, 30, 0);\n\n/**\n * details about the client\n *\n * @generated from message livekit.ClientInfo\n */\nexport type ClientInfo = Message<\"livekit.ClientInfo\"> & {\n /**\n * @generated from field: livekit.ClientInfo.SDK sdk = 1;\n */\n sdk: ClientInfo_SDK;\n\n /**\n * @generated from field: string version = 2;\n */\n version: string;\n\n /**\n * @generated from field: int32 protocol = 3;\n */\n protocol: number;\n\n /**\n * @generated from field: string os = 4;\n */\n os: string;\n\n /**\n * @generated from field: string os_version = 5;\n */\n osVersion: string;\n\n /**\n * @generated from field: string device_model = 6;\n */\n deviceModel: string;\n\n /**\n * @generated from field: string browser = 7;\n */\n browser: string;\n\n /**\n * @generated from field: string browser_version = 8;\n */\n browserVersion: string;\n\n /**\n * @generated from field: string address = 9;\n */\n address: string;\n\n /**\n * wifi, wired, cellular, vpn, empty if not known\n *\n * @generated from field: string network = 10;\n */\n network: string;\n\n /**\n * comma separated list of additional LiveKit SDKs in use of this client, with versions\n * e.g. \"components-js:1.2.3,track-processors-js:1.2.3\"\n *\n * @generated from field: string other_sdks = 11;\n */\n otherSdks: string;\n\n /**\n * client protocol version\n *\n * @generated from field: int32 client_protocol = 12;\n */\n clientProtocol: number;\n};\n\n/**\n * Describes the message livekit.ClientInfo.\n * Use `create(ClientInfoSchema)` to create a new message.\n */\nexport const ClientInfoSchema: GenMessage<ClientInfo> = /*@__PURE__*/\n messageDesc(file_livekit_models, 31);\n\n/**\n * @generated from enum livekit.ClientInfo.SDK\n */\nexport enum ClientInfo_SDK {\n /**\n * @generated from enum value: UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: JS = 1;\n */\n JS = 1,\n\n /**\n * @generated from enum value: SWIFT = 2;\n */\n SWIFT = 2,\n\n /**\n * @generated from enum value: ANDROID = 3;\n */\n ANDROID = 3,\n\n /**\n * @generated from enum value: FLUTTER = 4;\n */\n FLUTTER = 4,\n\n /**\n * @generated from enum value: GO = 5;\n */\n GO = 5,\n\n /**\n * @generated from enum value: UNITY = 6;\n */\n UNITY = 6,\n\n /**\n * @generated from enum value: REACT_NATIVE = 7;\n */\n REACT_NATIVE = 7,\n\n /**\n * @generated from enum value: RUST = 8;\n */\n RUST = 8,\n\n /**\n * @generated from enum value: PYTHON = 9;\n */\n PYTHON = 9,\n\n /**\n * @generated from enum value: CPP = 10;\n */\n CPP = 10,\n\n /**\n * @generated from enum value: UNITY_WEB = 11;\n */\n UNITY_WEB = 11,\n\n /**\n * @generated from enum value: NODE = 12;\n */\n NODE = 12,\n\n /**\n * @generated from enum value: UNREAL = 13;\n */\n UNREAL = 13,\n\n /**\n * @generated from enum value: ESP32 = 14;\n */\n ESP32 = 14,\n}\n\n/**\n * Describes the enum livekit.ClientInfo.SDK.\n */\nexport const ClientInfo_SDKSchema: GenEnum<ClientInfo_SDK> = /*@__PURE__*/\n enumDesc(file_livekit_models, 31, 0);\n\n/**\n * server provided client configuration\n *\n * @generated from message livekit.ClientConfiguration\n */\nexport type ClientConfiguration = Message<\"livekit.ClientConfiguration\"> & {\n /**\n * @generated from field: livekit.VideoConfiguration video = 1;\n */\n video?: VideoConfiguration;\n\n /**\n * @generated from field: livekit.VideoConfiguration screen = 2;\n */\n screen?: VideoConfiguration;\n\n /**\n * @generated from field: livekit.ClientConfigSetting resume_connection = 3;\n */\n resumeConnection: ClientConfigSetting;\n\n /**\n * @generated from field: livekit.DisabledCodecs disabled_codecs = 4;\n */\n disabledCodecs?: DisabledCodecs;\n\n /**\n * @generated from field: livekit.ClientConfigSetting force_relay = 5;\n */\n forceRelay: ClientConfigSetting;\n};\n\n/**\n * Describes the message livekit.ClientConfiguration.\n * Use `create(ClientConfigurationSchema)` to create a new message.\n */\nexport const ClientConfigurationSchema: GenMessage<ClientConfiguration> = /*@__PURE__*/\n messageDesc(file_livekit_models, 32);\n\n/**\n * @generated from message livekit.VideoConfiguration\n */\nexport type VideoConfiguration = Message<\"livekit.VideoConfiguration\"> & {\n /**\n * @generated from field: livekit.ClientConfigSetting hardware_encoder = 1;\n */\n hardwareEncoder: ClientConfigSetting;\n};\n\n/**\n * Describes the message livekit.VideoConfiguration.\n * Use `create(VideoConfigurationSchema)` to create a new message.\n */\nexport const VideoConfigurationSchema: GenMessage<VideoConfiguration> = /*@__PURE__*/\n messageDesc(file_livekit_models, 33);\n\n/**\n * @generated from message livekit.DisabledCodecs\n */\nexport type DisabledCodecs = Message<\"livekit.DisabledCodecs\"> & {\n /**\n * disabled for both publish and subscribe\n *\n * @generated from field: repeated livekit.Codec codecs = 1;\n */\n codecs: Codec[];\n\n /**\n * only disable for publish\n *\n * @generated from field: repeated livekit.Codec publish = 2;\n */\n publish: Codec[];\n};\n\n/**\n * Describes the message livekit.DisabledCodecs.\n * Use `create(DisabledCodecsSchema)` to create a new message.\n */\nexport const DisabledCodecsSchema: GenMessage<DisabledCodecs> = /*@__PURE__*/\n messageDesc(file_livekit_models, 34);\n\n/**\n * @generated from message livekit.RTPDrift\n */\nexport type RTPDrift = Message<\"livekit.RTPDrift\"> & {\n /**\n * @generated from field: google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp;\n\n /**\n * @generated from field: double duration = 3;\n */\n duration: number;\n\n /**\n * @generated from field: uint64 start_timestamp = 4 [jstype = JS_STRING];\n */\n startTimestamp: string;\n\n /**\n * @generated from field: uint64 end_timestamp = 5 [jstype = JS_STRING];\n */\n endTimestamp: string;\n\n /**\n * @generated from field: uint64 rtp_clock_ticks = 6 [jstype = JS_STRING];\n */\n rtpClockTicks: string;\n\n /**\n * @generated from field: int64 drift_samples = 7 [jstype = JS_STRING];\n */\n driftSamples: string;\n\n /**\n * @generated from field: double drift_ms = 8;\n */\n driftMs: number;\n\n /**\n * @generated from field: double clock_rate = 9;\n */\n clockRate: number;\n};\n\n/**\n * Describes the message livekit.RTPDrift.\n * Use `create(RTPDriftSchema)` to create a new message.\n */\nexport const RTPDriftSchema: GenMessage<RTPDrift> = /*@__PURE__*/\n messageDesc(file_livekit_models, 35);\n\n/**\n * @generated from message livekit.RTPStats\n */\nexport type RTPStats = Message<\"livekit.RTPStats\"> & {\n /**\n * @generated from field: google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp;\n\n /**\n * @generated from field: google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp;\n\n /**\n * @generated from field: double duration = 3;\n */\n duration: number;\n\n /**\n * @generated from field: uint32 packets = 4;\n */\n packets: number;\n\n /**\n * @generated from field: double packet_rate = 5;\n */\n packetRate: number;\n\n /**\n * @generated from field: uint64 bytes = 6 [jstype = JS_STRING];\n */\n bytes: string;\n\n /**\n * @generated from field: uint64 header_bytes = 39 [jstype = JS_STRING];\n */\n headerBytes: string;\n\n /**\n * @generated from field: double bitrate = 7;\n */\n bitrate: number;\n\n /**\n * @generated from field: uint32 packets_lost = 8;\n */\n packetsLost: number;\n\n /**\n * @generated from field: double packet_loss_rate = 9;\n */\n packetLossRate: number;\n\n /**\n * @generated from field: float packet_loss_percentage = 10;\n */\n packetLossPercentage: number;\n\n /**\n * @generated from field: uint32 packets_duplicate = 11;\n */\n packetsDuplicate: number;\n\n /**\n * @generated from field: double packet_duplicate_rate = 12;\n */\n packetDuplicateRate: number;\n\n /**\n * @generated from field: uint64 bytes_duplicate = 13 [jstype = JS_STRING];\n */\n bytesDuplicate: string;\n\n /**\n * @generated from field: uint64 header_bytes_duplicate = 40 [jstype = JS_STRING];\n */\n headerBytesDuplicate: string;\n\n /**\n * @generated from field: double bitrate_duplicate = 14;\n */\n bitrateDuplicate: number;\n\n /**\n * @generated from field: uint32 packets_padding = 15;\n */\n packetsPadding: number;\n\n /**\n * @generated from field: double packet_padding_rate = 16;\n */\n packetPaddingRate: number;\n\n /**\n * @generated from field: uint64 bytes_padding = 17 [jstype = JS_STRING];\n */\n bytesPadding: string;\n\n /**\n * @generated from field: uint64 header_bytes_padding = 41 [jstype = JS_STRING];\n */\n headerBytesPadding: string;\n\n /**\n * @generated from field: double bitrate_padding = 18;\n */\n bitratePadding: number;\n\n /**\n * @generated from field: uint32 packets_out_of_order = 19;\n */\n packetsOutOfOrder: number;\n\n /**\n * @generated from field: uint32 frames = 20;\n */\n frames: number;\n\n /**\n * @generated from field: double frame_rate = 21;\n */\n frameRate: number;\n\n /**\n * @generated from field: double jitter_current = 22;\n */\n jitterCurrent: number;\n\n /**\n * @generated from field: double jitter_max = 23;\n */\n jitterMax: number;\n\n /**\n * @generated from field: map<int32, uint32> gap_histogram = 24;\n */\n gapHistogram: { [key: number]: number };\n\n /**\n * @generated from field: uint32 nacks = 25;\n */\n nacks: number;\n\n /**\n * @generated from field: uint32 nack_acks = 37;\n */\n nackAcks: number;\n\n /**\n * @generated from field: uint32 nack_misses = 26;\n */\n nackMisses: number;\n\n /**\n * @generated from field: uint32 nack_repeated = 38;\n */\n nackRepeated: number;\n\n /**\n * @generated from field: uint32 plis = 27;\n */\n plis: number;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_pli = 28;\n */\n lastPli?: Timestamp;\n\n /**\n * @generated from field: uint32 firs = 29;\n */\n firs: number;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_fir = 30;\n */\n lastFir?: Timestamp;\n\n /**\n * @generated from field: uint32 rtt_current = 31;\n */\n rttCurrent: number;\n\n /**\n * @generated from field: uint32 rtt_max = 32;\n */\n rttMax: number;\n\n /**\n * @generated from field: uint32 key_frames = 33;\n */\n keyFrames: number;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_key_frame = 34;\n */\n lastKeyFrame?: Timestamp;\n\n /**\n * @generated from field: uint32 layer_lock_plis = 35;\n */\n layerLockPlis: number;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_layer_lock_pli = 36;\n */\n lastLayerLockPli?: Timestamp;\n\n /**\n * @generated from field: livekit.RTPDrift packet_drift = 44;\n */\n packetDrift?: RTPDrift;\n\n /**\n * @generated from field: livekit.RTPDrift ntp_report_drift = 45;\n */\n ntpReportDrift?: RTPDrift;\n\n /**\n * @generated from field: livekit.RTPDrift rebased_report_drift = 46;\n */\n rebasedReportDrift?: RTPDrift;\n\n /**\n * NEXT_ID: 48\n *\n * @generated from field: livekit.RTPDrift received_report_drift = 47;\n */\n receivedReportDrift?: RTPDrift;\n};\n\n/**\n * Describes the message livekit.RTPStats.\n * Use `create(RTPStatsSchema)` to create a new message.\n */\nexport const RTPStatsSchema: GenMessage<RTPStats> = /*@__PURE__*/\n messageDesc(file_livekit_models, 36);\n\n/**\n * @generated from message livekit.RTCPSenderReportState\n */\nexport type RTCPSenderReportState = Message<\"livekit.RTCPSenderReportState\"> & {\n /**\n * @generated from field: uint32 rtp_timestamp = 1;\n */\n rtpTimestamp: number;\n\n /**\n * @generated from field: uint64 rtp_timestamp_ext = 2 [jstype = JS_STRING];\n */\n rtpTimestampExt: string;\n\n /**\n * @generated from field: uint64 ntp_timestamp = 3 [jstype = JS_STRING];\n */\n ntpTimestamp: string;\n\n /**\n * time at which this happened\n *\n * @generated from field: int64 at = 4 [jstype = JS_STRING];\n */\n at: string;\n\n /**\n * @generated from field: int64 at_adjusted = 5 [jstype = JS_STRING];\n */\n atAdjusted: string;\n\n /**\n * @generated from field: uint32 packets = 6;\n */\n packets: number;\n\n /**\n * @generated from field: uint64 octets = 7 [jstype = JS_STRING];\n */\n octets: string;\n};\n\n/**\n * Describes the message livekit.RTCPSenderReportState.\n * Use `create(RTCPSenderReportStateSchema)` to create a new message.\n */\nexport const RTCPSenderReportStateSchema: GenMessage<RTCPSenderReportState> = /*@__PURE__*/\n messageDesc(file_livekit_models, 37);\n\n/**\n * @generated from message livekit.RTPForwarderState\n */\nexport type RTPForwarderState = Message<\"livekit.RTPForwarderState\"> & {\n /**\n * @generated from field: bool started = 1;\n */\n started: boolean;\n\n /**\n * @generated from field: int32 reference_layer_spatial = 2;\n */\n referenceLayerSpatial: number;\n\n /**\n * @generated from field: int64 pre_start_time = 3 [jstype = JS_STRING];\n */\n preStartTime: string;\n\n /**\n * @generated from field: uint64 ext_first_timestamp = 4 [jstype = JS_STRING];\n */\n extFirstTimestamp: string;\n\n /**\n * @generated from field: uint64 dummy_start_timestamp_offset = 5 [jstype = JS_STRING];\n */\n dummyStartTimestampOffset: string;\n\n /**\n * @generated from field: livekit.RTPMungerState rtp_munger = 6;\n */\n rtpMunger?: RTPMungerState;\n\n /**\n * @generated from oneof livekit.RTPForwarderState.codec_munger\n */\n codecMunger: {\n /**\n * @generated from field: livekit.VP8MungerState vp8_munger = 7;\n */\n value: VP8MungerState;\n case: \"vp8Munger\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: repeated livekit.RTCPSenderReportState sender_report_state = 8;\n */\n senderReportState: RTCPSenderReportState[];\n};\n\n/**\n * Describes the message livekit.RTPForwarderState.\n * Use `create(RTPForwarderStateSchema)` to create a new message.\n */\nexport const RTPForwarderStateSchema: GenMessage<RTPForwarderState> = /*@__PURE__*/\n messageDesc(file_livekit_models, 38);\n\n/**\n * @generated from message livekit.RTPMungerState\n */\nexport type RTPMungerState = Message<\"livekit.RTPMungerState\"> & {\n /**\n * @generated from field: uint64 ext_last_sequence_number = 1 [jstype = JS_STRING];\n */\n extLastSequenceNumber: string;\n\n /**\n * @generated from field: uint64 ext_second_last_sequence_number = 2 [jstype = JS_STRING];\n */\n extSecondLastSequenceNumber: string;\n\n /**\n * @generated from field: uint64 ext_last_timestamp = 3 [jstype = JS_STRING];\n */\n extLastTimestamp: string;\n\n /**\n * @generated from field: uint64 ext_second_last_timestamp = 4 [jstype = JS_STRING];\n */\n extSecondLastTimestamp: string;\n\n /**\n * @generated from field: bool last_marker = 5;\n */\n lastMarker: boolean;\n\n /**\n * @generated from field: bool second_last_marker = 6;\n */\n secondLastMarker: boolean;\n};\n\n/**\n * Describes the message livekit.RTPMungerState.\n * Use `create(RTPMungerStateSchema)` to create a new message.\n */\nexport const RTPMungerStateSchema: GenMessage<RTPMungerState> = /*@__PURE__*/\n messageDesc(file_livekit_models, 39);\n\n/**\n * @generated from message livekit.VP8MungerState\n */\nexport type VP8MungerState = Message<\"livekit.VP8MungerState\"> & {\n /**\n * @generated from field: int32 ext_last_picture_id = 1;\n */\n extLastPictureId: number;\n\n /**\n * @generated from field: bool picture_id_used = 2;\n */\n pictureIdUsed: boolean;\n\n /**\n * @generated from field: uint32 last_tl0_pic_idx = 3;\n */\n lastTl0PicIdx: number;\n\n /**\n * @generated from field: bool tl0_pic_idx_used = 4;\n */\n tl0PicIdxUsed: boolean;\n\n /**\n * @generated from field: bool tid_used = 5;\n */\n tidUsed: boolean;\n\n /**\n * @generated from field: uint32 last_key_idx = 6;\n */\n lastKeyIdx: number;\n\n /**\n * @generated from field: bool key_idx_used = 7;\n */\n keyIdxUsed: boolean;\n};\n\n/**\n * Describes the message livekit.VP8MungerState.\n * Use `create(VP8MungerStateSchema)` to create a new message.\n */\nexport const VP8MungerStateSchema: GenMessage<VP8MungerState> = /*@__PURE__*/\n messageDesc(file_livekit_models, 40);\n\n/**\n * @generated from message livekit.TimedVersion\n */\nexport type TimedVersion = Message<\"livekit.TimedVersion\"> & {\n /**\n * @generated from field: int64 unix_micro = 1 [jstype = JS_STRING];\n */\n unixMicro: string;\n\n /**\n * @generated from field: int32 ticks = 2;\n */\n ticks: number;\n};\n\n/**\n * Describes the message livekit.TimedVersion.\n * Use `create(TimedVersionSchema)` to create a new message.\n */\nexport const TimedVersionSchema: GenMessage<TimedVersion> = /*@__PURE__*/\n messageDesc(file_livekit_models, 41);\n\n/**\n * @generated from message livekit.DataStream\n */\nexport type DataStream = Message<\"livekit.DataStream\"> & {\n};\n\n/**\n * Describes the message livekit.DataStream.\n * Use `create(DataStreamSchema)` to create a new message.\n */\nexport const DataStreamSchema: GenMessage<DataStream> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42);\n\n/**\n * header properties specific to text streams\n *\n * @generated from message livekit.DataStream.TextHeader\n */\nexport type DataStream_TextHeader = Message<\"livekit.DataStream.TextHeader\"> & {\n /**\n * @generated from field: livekit.DataStream.OperationType operation_type = 1;\n */\n operationType: DataStream_OperationType;\n\n /**\n * Optional: Version for updates/edits\n *\n * @generated from field: int32 version = 2;\n */\n version: number;\n\n /**\n * Optional: Reply to specific message\n *\n * @generated from field: string reply_to_stream_id = 3;\n */\n replyToStreamId: string;\n\n /**\n * file attachments for text streams\n *\n * @generated from field: repeated string attached_stream_ids = 4;\n */\n attachedStreamIds: string[];\n\n /**\n * true if the text has been generated by an agent from a participant's audio transcription\n *\n * @generated from field: bool generated = 5;\n */\n generated: boolean;\n};\n\n/**\n * Describes the message livekit.DataStream.TextHeader.\n * Use `create(DataStream_TextHeaderSchema)` to create a new message.\n */\nexport const DataStream_TextHeaderSchema: GenMessage<DataStream_TextHeader> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 0);\n\n/**\n * header properties specific to byte or file streams\n *\n * @generated from message livekit.DataStream.ByteHeader\n */\nexport type DataStream_ByteHeader = Message<\"livekit.DataStream.ByteHeader\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message livekit.DataStream.ByteHeader.\n * Use `create(DataStream_ByteHeaderSchema)` to create a new message.\n */\nexport const DataStream_ByteHeaderSchema: GenMessage<DataStream_ByteHeader> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 1);\n\n/**\n * main DataStream.Header that contains a oneof for specific headers\n *\n * @generated from message livekit.DataStream.Header\n */\nexport type DataStream_Header = Message<\"livekit.DataStream.Header\"> & {\n /**\n * unique identifier for this data stream\n *\n * @generated from field: string stream_id = 1;\n */\n streamId: string;\n\n /**\n * using int64 for Unix timestamp\n *\n * @generated from field: int64 timestamp = 2 [jstype = JS_STRING];\n */\n timestamp: string;\n\n /**\n * @generated from field: string topic = 3;\n */\n topic: string;\n\n /**\n * @generated from field: string mime_type = 4;\n */\n mimeType: string;\n\n /**\n * only populated for finite streams, if it's a stream of unknown size this stays empty\n *\n * @generated from field: optional uint64 total_length = 5 [jstype = JS_STRING];\n */\n totalLength?: string;\n\n /**\n * this is set on the DataPacket\n *\n * @generated from field: livekit.Encryption.Type encryption_type = 7 [deprecated = true];\n * @deprecated\n */\n encryptionType: Encryption_Type;\n\n /**\n * user defined attributes map that can carry additional info\n *\n * @generated from field: map<string, string> attributes = 8;\n */\n attributes: { [key: string]: string };\n\n /**\n * oneof to choose between specific header types\n *\n * @generated from oneof livekit.DataStream.Header.content_header\n */\n contentHeader: {\n /**\n * @generated from field: livekit.DataStream.TextHeader text_header = 9;\n */\n value: DataStream_TextHeader;\n case: \"textHeader\";\n } | {\n /**\n * @generated from field: livekit.DataStream.ByteHeader byte_header = 10;\n */\n value: DataStream_ByteHeader;\n case: \"byteHeader\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message livekit.DataStream.Header.\n * Use `create(DataStream_HeaderSchema)` to create a new message.\n */\nexport const DataStream_HeaderSchema: GenMessage<DataStream_Header> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 2);\n\n/**\n * @generated from message livekit.DataStream.Chunk\n */\nexport type DataStream_Chunk = Message<\"livekit.DataStream.Chunk\"> & {\n /**\n * unique identifier for this data stream to map it to the correct header\n *\n * @generated from field: string stream_id = 1;\n */\n streamId: string;\n\n /**\n * @generated from field: uint64 chunk_index = 2 [jstype = JS_STRING];\n */\n chunkIndex: string;\n\n /**\n * content as binary (bytes)\n *\n * @generated from field: bytes content = 3;\n */\n content: Uint8Array;\n\n /**\n * a version indicating that this chunk_index has been retroactively modified and the original one needs to be replaced\n *\n * @generated from field: int32 version = 4;\n */\n version: number;\n\n /**\n * this is set on the DataPacket\n *\n * @generated from field: optional bytes iv = 5 [deprecated = true];\n * @deprecated\n */\n iv?: Uint8Array;\n};\n\n/**\n * Describes the message livekit.DataStream.Chunk.\n * Use `create(DataStream_ChunkSchema)` to create a new message.\n */\nexport const DataStream_ChunkSchema: GenMessage<DataStream_Chunk> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 3);\n\n/**\n * @generated from message livekit.DataStream.Trailer\n */\nexport type DataStream_Trailer = Message<\"livekit.DataStream.Trailer\"> & {\n /**\n * unique identifier for this data stream\n *\n * @generated from field: string stream_id = 1;\n */\n streamId: string;\n\n /**\n * reason why the stream was closed (could contain \"error\" / \"interrupted\" / empty for expected end)\n *\n * @generated from field: string reason = 2;\n */\n reason: string;\n\n /**\n * finalizing updates for the stream, can also include additional insights for errors or endTime for transcription\n *\n * @generated from field: map<string, string> attributes = 3;\n */\n attributes: { [key: string]: string };\n};\n\n/**\n * Describes the message livekit.DataStream.Trailer.\n * Use `create(DataStream_TrailerSchema)` to create a new message.\n */\nexport const DataStream_TrailerSchema: GenMessage<DataStream_Trailer> = /*@__PURE__*/\n messageDesc(file_livekit_models, 42, 4);\n\n/**\n * enum for operation types (specific to TextHeader)\n *\n * @generated from enum livekit.DataStream.OperationType\n */\nexport enum DataStream_OperationType {\n /**\n * @generated from enum value: CREATE = 0;\n */\n CREATE = 0,\n\n /**\n * @generated from enum value: UPDATE = 1;\n */\n UPDATE = 1,\n\n /**\n * @generated from enum value: DELETE = 2;\n */\n DELETE = 2,\n\n /**\n * @generated from enum value: REACTION = 3;\n */\n REACTION = 3,\n}\n\n/**\n * Describes the enum livekit.DataStream.OperationType.\n */\nexport const DataStream_OperationTypeSchema: GenEnum<DataStream_OperationType> = /*@__PURE__*/\n enumDesc(file_livekit_models, 42, 0);\n\n/**\n * @generated from message livekit.FilterParams\n */\nexport type FilterParams = Message<\"livekit.FilterParams\"> & {\n /**\n * @generated from field: repeated string include_events = 1;\n */\n includeEvents: string[];\n\n /**\n * @generated from field: repeated string exclude_events = 2;\n */\n excludeEvents: string[];\n};\n\n/**\n * Describes the message livekit.FilterParams.\n * Use `create(FilterParamsSchema)` to create a new message.\n */\nexport const FilterParamsSchema: GenMessage<FilterParams> = /*@__PURE__*/\n messageDesc(file_livekit_models, 43);\n\n/**\n * @generated from message livekit.WebhookConfig\n */\nexport type WebhookConfig = Message<\"livekit.WebhookConfig\"> & {\n /**\n * @generated from field: string url = 1;\n */\n url: string;\n\n /**\n * @generated from field: string signing_key = 2;\n */\n signingKey: string;\n\n /**\n * @generated from field: livekit.FilterParams filter_params = 3;\n */\n filterParams?: FilterParams;\n};\n\n/**\n * Describes the message livekit.WebhookConfig.\n * Use `create(WebhookConfigSchema)` to create a new message.\n */\nexport const WebhookConfigSchema: GenMessage<WebhookConfig> = /*@__PURE__*/\n messageDesc(file_livekit_models, 44);\n\n/**\n * @generated from message livekit.SubscribedAudioCodec\n */\nexport type SubscribedAudioCodec = Message<\"livekit.SubscribedAudioCodec\"> & {\n /**\n * @generated from field: string codec = 1;\n */\n codec: string;\n\n /**\n * @generated from field: bool enabled = 2;\n */\n enabled: boolean;\n};\n\n/**\n * Describes the message livekit.SubscribedAudioCodec.\n * Use `create(SubscribedAudioCodecSchema)` to create a new message.\n */\nexport const SubscribedAudioCodecSchema: GenMessage<SubscribedAudioCodec> = /*@__PURE__*/\n messageDesc(file_livekit_models, 45);\n\n/**\n * @generated from enum livekit.AudioCodec\n */\nexport enum AudioCodec {\n /**\n * @generated from enum value: DEFAULT_AC = 0;\n */\n DEFAULT_AC = 0,\n\n /**\n * @generated from enum value: OPUS = 1;\n */\n OPUS = 1,\n\n /**\n * @generated from enum value: AAC = 2;\n */\n AAC = 2,\n\n /**\n * @generated from enum value: AC_MP3 = 3;\n */\n AC_MP3 = 3,\n}\n\n/**\n * Describes the enum livekit.AudioCodec.\n */\nexport const AudioCodecSchema: GenEnum<AudioCodec> = /*@__PURE__*/\n enumDesc(file_livekit_models, 0);\n\n/**\n * @generated from enum livekit.VideoCodec\n */\nexport enum VideoCodec {\n /**\n * @generated from enum value: DEFAULT_VC = 0;\n */\n DEFAULT_VC = 0,\n\n /**\n * @generated from enum value: H264_BASELINE = 1;\n */\n H264_BASELINE = 1,\n\n /**\n * @generated from enum value: H264_MAIN = 2;\n */\n H264_MAIN = 2,\n\n /**\n * @generated from enum value: H264_HIGH = 3;\n */\n H264_HIGH = 3,\n\n /**\n * @generated from enum value: VP8 = 4;\n */\n VP8 = 4,\n}\n\n/**\n * Describes the enum livekit.VideoCodec.\n */\nexport const VideoCodecSchema: GenEnum<VideoCodec> = /*@__PURE__*/\n enumDesc(file_livekit_models, 1);\n\n/**\n * @generated from enum livekit.ImageCodec\n */\nexport enum ImageCodec {\n /**\n * @generated from enum value: IC_DEFAULT = 0;\n */\n IC_DEFAULT = 0,\n\n /**\n * @generated from enum value: IC_JPEG = 1;\n */\n IC_JPEG = 1,\n}\n\n/**\n * Describes the enum livekit.ImageCodec.\n */\nexport const ImageCodecSchema: GenEnum<ImageCodec> = /*@__PURE__*/\n enumDesc(file_livekit_models, 2);\n\n/**\n * Policy for publisher to handle subscribers that are unable to support the primary codec of a track\n *\n * @generated from enum livekit.BackupCodecPolicy\n */\nexport enum BackupCodecPolicy {\n /**\n * default behavior, the track prefer to regress to backup codec and all subscribers will receive the backup codec,\n * the sfu will try to regress codec if possible but not assured.\n *\n * @generated from enum value: PREFER_REGRESSION = 0;\n */\n PREFER_REGRESSION = 0,\n\n /**\n * encoding/send the primary and backup codec simultaneously\n *\n * @generated from enum value: SIMULCAST = 1;\n */\n SIMULCAST = 1,\n\n /**\n * force the track to regress to backup codec, this option can be used in video conference or the publisher has limited bandwidth/encoding power\n *\n * @generated from enum value: REGRESSION = 2;\n */\n REGRESSION = 2,\n}\n\n/**\n * Describes the enum livekit.BackupCodecPolicy.\n */\nexport const BackupCodecPolicySchema: GenEnum<BackupCodecPolicy> = /*@__PURE__*/\n enumDesc(file_livekit_models, 3);\n\n/**\n * @generated from enum livekit.TrackType\n */\nexport enum TrackType {\n /**\n * @generated from enum value: AUDIO = 0;\n */\n AUDIO = 0,\n\n /**\n * @generated from enum value: VIDEO = 1;\n */\n VIDEO = 1,\n\n /**\n * @generated from enum value: DATA = 2;\n */\n DATA = 2,\n}\n\n/**\n * Describes the enum livekit.TrackType.\n */\nexport const TrackTypeSchema: GenEnum<TrackType> = /*@__PURE__*/\n enumDesc(file_livekit_models, 4);\n\n/**\n * @generated from enum livekit.TrackSource\n */\nexport enum TrackSource {\n /**\n * @generated from enum value: UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: CAMERA = 1;\n */\n CAMERA = 1,\n\n /**\n * @generated from enum value: MICROPHONE = 2;\n */\n MICROPHONE = 2,\n\n /**\n * @generated from enum value: SCREEN_SHARE = 3;\n */\n SCREEN_SHARE = 3,\n\n /**\n * @generated from enum value: SCREEN_SHARE_AUDIO = 4;\n */\n SCREEN_SHARE_AUDIO = 4,\n}\n\n/**\n * Describes the enum livekit.TrackSource.\n */\nexport const TrackSourceSchema: GenEnum<TrackSource> = /*@__PURE__*/\n enumDesc(file_livekit_models, 5);\n\n/**\n * @generated from enum livekit.DataTrackExtensionID\n */\nexport enum DataTrackExtensionID {\n /**\n * @generated from enum value: DTEI_INVALID = 0;\n */\n DTEI_INVALID = 0,\n\n /**\n * @generated from enum value: DTEI_PARTICIPANT_SID = 1;\n */\n DTEI_PARTICIPANT_SID = 1,\n}\n\n/**\n * Describes the enum livekit.DataTrackExtensionID.\n */\nexport const DataTrackExtensionIDSchema: GenEnum<DataTrackExtensionID> = /*@__PURE__*/\n enumDesc(file_livekit_models, 6);\n\n/**\n * @generated from enum livekit.VideoQuality\n */\nexport enum VideoQuality {\n /**\n * @generated from enum value: LOW = 0;\n */\n LOW = 0,\n\n /**\n * @generated from enum value: MEDIUM = 1;\n */\n MEDIUM = 1,\n\n /**\n * @generated from enum value: HIGH = 2;\n */\n HIGH = 2,\n\n /**\n * @generated from enum value: OFF = 3;\n */\n OFF = 3,\n}\n\n/**\n * Describes the enum livekit.VideoQuality.\n */\nexport const VideoQualitySchema: GenEnum<VideoQuality> = /*@__PURE__*/\n enumDesc(file_livekit_models, 7);\n\n/**\n * @generated from enum livekit.ConnectionQuality\n */\nexport enum ConnectionQuality {\n /**\n * @generated from enum value: POOR = 0;\n */\n POOR = 0,\n\n /**\n * @generated from enum value: GOOD = 1;\n */\n GOOD = 1,\n\n /**\n * @generated from enum value: EXCELLENT = 2;\n */\n EXCELLENT = 2,\n\n /**\n * @generated from enum value: LOST = 3;\n */\n LOST = 3,\n}\n\n/**\n * Describes the enum livekit.ConnectionQuality.\n */\nexport const ConnectionQualitySchema: GenEnum<ConnectionQuality> = /*@__PURE__*/\n enumDesc(file_livekit_models, 8);\n\n/**\n * @generated from enum livekit.ClientConfigSetting\n */\nexport enum ClientConfigSetting {\n /**\n * @generated from enum value: UNSET = 0;\n */\n UNSET = 0,\n\n /**\n * @generated from enum value: DISABLED = 1;\n */\n DISABLED = 1,\n\n /**\n * @generated from enum value: ENABLED = 2;\n */\n ENABLED = 2,\n}\n\n/**\n * Describes the enum livekit.ClientConfigSetting.\n */\nexport const ClientConfigSettingSchema: GenEnum<ClientConfigSetting> = /*@__PURE__*/\n enumDesc(file_livekit_models, 9);\n\n/**\n * @generated from enum livekit.DisconnectReason\n */\nexport enum DisconnectReason {\n /**\n * @generated from enum value: UNKNOWN_REASON = 0;\n */\n UNKNOWN_REASON = 0,\n\n /**\n * the client initiated the disconnect\n *\n * @generated from enum value: CLIENT_INITIATED = 1;\n */\n CLIENT_INITIATED = 1,\n\n /**\n * another participant with the same identity has joined the room\n *\n * @generated from enum value: DUPLICATE_IDENTITY = 2;\n */\n DUPLICATE_IDENTITY = 2,\n\n /**\n * the server instance is shutting down\n *\n * @generated from enum value: SERVER_SHUTDOWN = 3;\n */\n SERVER_SHUTDOWN = 3,\n\n /**\n * RoomService.RemoveParticipant was called\n *\n * @generated from enum value: PARTICIPANT_REMOVED = 4;\n */\n PARTICIPANT_REMOVED = 4,\n\n /**\n * RoomService.DeleteRoom was called\n *\n * @generated from enum value: ROOM_DELETED = 5;\n */\n ROOM_DELETED = 5,\n\n /**\n * the client is attempting to resume a session, but server is not aware of it\n *\n * @generated from enum value: STATE_MISMATCH = 6;\n */\n STATE_MISMATCH = 6,\n\n /**\n * client was unable to connect fully\n *\n * @generated from enum value: JOIN_FAILURE = 7;\n */\n JOIN_FAILURE = 7,\n\n /**\n * Cloud-only, the server requested Participant to migrate the connection elsewhere\n *\n * @generated from enum value: MIGRATION = 8;\n */\n MIGRATION = 8,\n\n /**\n * the signal websocket was closed unexpectedly\n *\n * @generated from enum value: SIGNAL_CLOSE = 9;\n */\n SIGNAL_CLOSE = 9,\n\n /**\n * the room was closed, due to all Standard and Ingress participants having left\n *\n * @generated from enum value: ROOM_CLOSED = 10;\n */\n ROOM_CLOSED = 10,\n\n /**\n * SIP callee did not respond in time\n *\n * @generated from enum value: USER_UNAVAILABLE = 11;\n */\n USER_UNAVAILABLE = 11,\n\n /**\n * SIP callee rejected the call (busy)\n *\n * @generated from enum value: USER_REJECTED = 12;\n */\n USER_REJECTED = 12,\n\n /**\n * SIP protocol failure or unexpected response\n *\n * @generated from enum value: SIP_TRUNK_FAILURE = 13;\n */\n SIP_TRUNK_FAILURE = 13,\n\n /**\n * server timed out a participant session\n *\n * @generated from enum value: CONNECTION_TIMEOUT = 14;\n */\n CONNECTION_TIMEOUT = 14,\n\n /**\n * media stream failure or media timeout\n *\n * @generated from enum value: MEDIA_FAILURE = 15;\n */\n MEDIA_FAILURE = 15,\n}\n\n/**\n * Describes the enum livekit.DisconnectReason.\n */\nexport const DisconnectReasonSchema: GenEnum<DisconnectReason> = /*@__PURE__*/\n enumDesc(file_livekit_models, 10);\n\n/**\n * @generated from enum livekit.ReconnectReason\n */\nexport enum ReconnectReason {\n /**\n * @generated from enum value: RR_UNKNOWN = 0;\n */\n RR_UNKNOWN = 0,\n\n /**\n * @generated from enum value: RR_SIGNAL_DISCONNECTED = 1;\n */\n RR_SIGNAL_DISCONNECTED = 1,\n\n /**\n * @generated from enum value: RR_PUBLISHER_FAILED = 2;\n */\n RR_PUBLISHER_FAILED = 2,\n\n /**\n * @generated from enum value: RR_SUBSCRIBER_FAILED = 3;\n */\n RR_SUBSCRIBER_FAILED = 3,\n\n /**\n * @generated from enum value: RR_SWITCH_CANDIDATE = 4;\n */\n RR_SWITCH_CANDIDATE = 4,\n}\n\n/**\n * Describes the enum livekit.ReconnectReason.\n */\nexport const ReconnectReasonSchema: GenEnum<ReconnectReason> = /*@__PURE__*/\n enumDesc(file_livekit_models, 11);\n\n/**\n * @generated from enum livekit.SubscriptionError\n */\nexport enum SubscriptionError {\n /**\n * @generated from enum value: SE_UNKNOWN = 0;\n */\n SE_UNKNOWN = 0,\n\n /**\n * @generated from enum value: SE_CODEC_UNSUPPORTED = 1;\n */\n SE_CODEC_UNSUPPORTED = 1,\n\n /**\n * @generated from enum value: SE_TRACK_NOTFOUND = 2;\n */\n SE_TRACK_NOTFOUND = 2,\n}\n\n/**\n * Describes the enum livekit.SubscriptionError.\n */\nexport const SubscriptionErrorSchema: GenEnum<SubscriptionError> = /*@__PURE__*/\n enumDesc(file_livekit_models, 12);\n\n/**\n * @generated from enum livekit.AudioTrackFeature\n */\nexport enum AudioTrackFeature {\n /**\n * @generated from enum value: TF_STEREO = 0;\n */\n TF_STEREO = 0,\n\n /**\n * @generated from enum value: TF_NO_DTX = 1;\n */\n TF_NO_DTX = 1,\n\n /**\n * @generated from enum value: TF_AUTO_GAIN_CONTROL = 2;\n */\n TF_AUTO_GAIN_CONTROL = 2,\n\n /**\n * @generated from enum value: TF_ECHO_CANCELLATION = 3;\n */\n TF_ECHO_CANCELLATION = 3,\n\n /**\n * @generated from enum value: TF_NOISE_SUPPRESSION = 4;\n */\n TF_NOISE_SUPPRESSION = 4,\n\n /**\n * @generated from enum value: TF_ENHANCED_NOISE_CANCELLATION = 5;\n */\n TF_ENHANCED_NOISE_CANCELLATION = 5,\n\n /**\n * client will buffer audio once available and send it to the server via bytes stream once connected\n *\n * @generated from enum value: TF_PRECONNECT_BUFFER = 6;\n */\n TF_PRECONNECT_BUFFER = 6,\n}\n\n/**\n * Describes the enum livekit.AudioTrackFeature.\n */\nexport const AudioTrackFeatureSchema: GenEnum<AudioTrackFeature> = /*@__PURE__*/\n enumDesc(file_livekit_models, 13);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file livekit_metrics.proto (package livekit, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file livekit_metrics.proto.\n */\nexport const file_livekit_metrics: GenFile = /*@__PURE__*/\n fileDesc(\"ChVsaXZla2l0X21ldHJpY3MucHJvdG8SB2xpdmVraXQiygEKDE1ldHJpY3NCYXRjaBIYCgx0aW1lc3RhbXBfbXMYASABKANCAjABEjgKFG5vcm1hbGl6ZWRfdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghzdHJfZGF0YRgDIAMoCRIuCgt0aW1lX3NlcmllcxgEIAMoCzIZLmxpdmVraXQuVGltZVNlcmllc01ldHJpYxIkCgZldmVudHMYBSADKAsyFC5saXZla2l0LkV2ZW50TWV0cmljIocBChBUaW1lU2VyaWVzTWV0cmljEg0KBWxhYmVsGAEgASgNEhwKFHBhcnRpY2lwYW50X2lkZW50aXR5GAIgASgNEhEKCXRyYWNrX3NpZBgDIAEoDRImCgdzYW1wbGVzGAQgAygLMhUubGl2ZWtpdC5NZXRyaWNTYW1wbGUSCwoDcmlkGAUgASgNInEKDE1ldHJpY1NhbXBsZRIYCgx0aW1lc3RhbXBfbXMYASABKANCAjABEjgKFG5vcm1hbGl6ZWRfdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV2YWx1ZRgDIAEoAiLkAgoLRXZlbnRNZXRyaWMSDQoFbGFiZWwYASABKA0SHAoUcGFydGljaXBhbnRfaWRlbnRpdHkYAiABKA0SEQoJdHJhY2tfc2lkGAMgASgNEh4KEnN0YXJ0X3RpbWVzdGFtcF9tcxgEIAEoA0ICMAESIQoQZW5kX3RpbWVzdGFtcF9tcxgFIAEoA0ICMAFIAIgBARI+Chpub3JtYWxpemVkX3N0YXJ0X3RpbWVzdGFtcBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASQQoYbm9ybWFsaXplZF9lbmRfdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhAKCG1ldGFkYXRhGAggASgJEgsKA3JpZBgJIAEoDUITChFfZW5kX3RpbWVzdGFtcF9tc0IbChlfbm9ybWFsaXplZF9lbmRfdGltZXN0YW1wIuIBChZNZXRyaWNzUmVjb3JkaW5nSGVhZGVyEg8KB3Jvb21faWQYASABKAkSFAoIZHVyYXRpb24YAyABKARCAjABEi4KCnN0YXJ0X3RpbWUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEkAKCXJvb21fdGFncxgFIAMoCzItLmxpdmVraXQuTWV0cmljc1JlY29yZGluZ0hlYWRlci5Sb29tVGFnc0VudHJ5Gi8KDVJvb21UYWdzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASqBBwoLTWV0cmljTGFiZWwSEwoPQUdFTlRTX0xMTV9UVEZUEAASEwoPQUdFTlRTX1NUVF9UVEZUEAESEwoPQUdFTlRTX1RUU19UVEZCEAISKAokQ0xJRU5UX1ZJREVPX1NVQlNDUklCRVJfRlJFRVpFX0NPVU5UEAMSMQotQ0xJRU5UX1ZJREVPX1NVQlNDUklCRVJfVE9UQUxfRlJFRVpFX0RVUkFUSU9OEAQSJwojQ0xJRU5UX1ZJREVPX1NVQlNDUklCRVJfUEFVU0VfQ09VTlQQBRIxCi1DTElFTlRfVklERU9fU1VCU0NSSUJFUl9UT1RBTF9QQVVTRVNfRFVSQVRJT04QBhItCilDTElFTlRfQVVESU9fU1VCU0NSSUJFUl9DT05DRUFMRURfU0FNUExFUxAHEjQKMENMSUVOVF9BVURJT19TVUJTQ1JJQkVSX1NJTEVOVF9DT05DRUFMRURfU0FNUExFUxAIEi4KKkNMSUVOVF9BVURJT19TVUJTQ1JJQkVSX0NPTkNFQUxNRU5UX0VWRU5UUxAJEi4KKkNMSUVOVF9BVURJT19TVUJTQ1JJQkVSX0lOVEVSUlVQVElPTl9DT1VOVBAKEjcKM0NMSUVOVF9BVURJT19TVUJTQ1JJQkVSX1RPVEFMX0lOVEVSUlVQVElPTl9EVVJBVElPThALEikKJUNMSUVOVF9TVUJTQ1JJQkVSX0pJVFRFUl9CVUZGRVJfREVMQVkQDBIxCi1DTElFTlRfU1VCU0NSSUJFUl9KSVRURVJfQlVGRkVSX0VNSVRURURfQ09VTlQQDRJACjxDTElFTlRfVklERU9fUFVCTElTSEVSX1FVQUxJVFlfTElNSVRBVElPTl9EVVJBVElPTl9CQU5EV0lEVEgQDhI6CjZDTElFTlRfVklERU9fUFVCTElTSEVSX1FVQUxJVFlfTElNSVRBVElPTl9EVVJBVElPTl9DUFUQDxI8CjhDTElFTlRfVklERU9fUFVCTElTSEVSX1FVQUxJVFlfTElNSVRBVElPTl9EVVJBVElPTl9PVEhFUhAQEhEKDVBVQkxJU0hFUl9SVFQQERITCg9TRVJWRVJfTUVTSF9SVFQQEhISCg5TVUJTQ1JJQkVSX1JUVBATEiYKIU1FVFJJQ19MQUJFTF9QUkVERUZJTkVEX01BWF9WQUxVRRCAIEKDAQoLY29tLmxpdmVraXRCE0xpdmVraXRNZXRyaWNzUHJvdG9QAVojZ2l0aHViLmNvbS9saXZla2l0L3Byb3RvY29sL2xpdmVraXSiAgNMWFiqAgdMaXZla2l0ygIHTGl2ZWtpdOICE0xpdmVraXRcR1BCTWV0YWRhdGHqAgdMaXZla2l0YgZwcm90bzM\", [file_google_protobuf_timestamp]);\n\n/**\n * @generated from message livekit.MetricsBatch\n */\nexport type MetricsBatch = Message<\"livekit.MetricsBatch\"> & {\n /**\n * time at which this batch is sent based on a monotonic clock (millisecond resolution)\n *\n * @generated from field: int64 timestamp_ms = 1 [jstype = JS_STRING];\n */\n timestampMs: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp normalized_timestamp = 2;\n */\n normalizedTimestamp?: Timestamp;\n\n /**\n * To avoid repeating string values, we store them in a separate list and reference them by index\n * This is useful for storing participant identities, track names, etc.\n * There is also a predefined list of labels that can be used to reference common metrics.\n * They have reserved indices from 0 to (METRIC_LABEL_PREDEFINED_MAX_VALUE - 1).\n * Indexes pointing at str_data should start from METRIC_LABEL_PREDEFINED_MAX_VALUE,\n * such that str_data[0] == index of METRIC_LABEL_PREDEFINED_MAX_VALUE.\n *\n * @generated from field: repeated string str_data = 3;\n */\n strData: string[];\n\n /**\n * @generated from field: repeated livekit.TimeSeriesMetric time_series = 4;\n */\n timeSeries: TimeSeriesMetric[];\n\n /**\n * @generated from field: repeated livekit.EventMetric events = 5;\n */\n events: EventMetric[];\n};\n\n/**\n * Describes the message livekit.MetricsBatch.\n * Use `create(MetricsBatchSchema)` to create a new message.\n */\nexport const MetricsBatchSchema: GenMessage<MetricsBatch> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 0);\n\n/**\n * @generated from message livekit.TimeSeriesMetric\n */\nexport type TimeSeriesMetric = Message<\"livekit.TimeSeriesMetric\"> & {\n /**\n * Metric name e.g \"speech_probablity\". The string value is not directly stored in the message, but referenced by index\n * in the `str_data` field of `MetricsBatch`\n *\n * @generated from field: uint32 label = 1;\n */\n label: number;\n\n /**\n * index into `str_data`\n *\n * @generated from field: uint32 participant_identity = 2;\n */\n participantIdentity: number;\n\n /**\n * index into `str_data`\n *\n * @generated from field: uint32 track_sid = 3;\n */\n trackSid: number;\n\n /**\n * @generated from field: repeated livekit.MetricSample samples = 4;\n */\n samples: MetricSample[];\n\n /**\n * index into 'str_data'\n *\n * @generated from field: uint32 rid = 5;\n */\n rid: number;\n};\n\n/**\n * Describes the message livekit.TimeSeriesMetric.\n * Use `create(TimeSeriesMetricSchema)` to create a new message.\n */\nexport const TimeSeriesMetricSchema: GenMessage<TimeSeriesMetric> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 1);\n\n/**\n * @generated from message livekit.MetricSample\n */\nexport type MetricSample = Message<\"livekit.MetricSample\"> & {\n /**\n * time of metric based on a monotonic clock (in milliseconds)\n *\n * @generated from field: int64 timestamp_ms = 1 [jstype = JS_STRING];\n */\n timestampMs: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp normalized_timestamp = 2;\n */\n normalizedTimestamp?: Timestamp;\n\n /**\n * @generated from field: float value = 3;\n */\n value: number;\n};\n\n/**\n * Describes the message livekit.MetricSample.\n * Use `create(MetricSampleSchema)` to create a new message.\n */\nexport const MetricSampleSchema: GenMessage<MetricSample> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 2);\n\n/**\n * @generated from message livekit.EventMetric\n */\nexport type EventMetric = Message<\"livekit.EventMetric\"> & {\n /**\n * @generated from field: uint32 label = 1;\n */\n label: number;\n\n /**\n * index into `str_data`\n *\n * @generated from field: uint32 participant_identity = 2;\n */\n participantIdentity: number;\n\n /**\n * index into `str_data`\n *\n * @generated from field: uint32 track_sid = 3;\n */\n trackSid: number;\n\n /**\n * start time of event based on a monotonic clock (in milliseconds)\n *\n * @generated from field: int64 start_timestamp_ms = 4 [jstype = JS_STRING];\n */\n startTimestampMs: string;\n\n /**\n * end time of event based on a monotonic clock (in milliseconds), if needed\n *\n * @generated from field: optional int64 end_timestamp_ms = 5 [jstype = JS_STRING];\n */\n endTimestampMs?: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp normalized_start_timestamp = 6;\n */\n normalizedStartTimestamp?: Timestamp;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp normalized_end_timestamp = 7;\n */\n normalizedEndTimestamp?: Timestamp;\n\n /**\n * @generated from field: string metadata = 8;\n */\n metadata: string;\n\n /**\n * index into 'str_data'\n *\n * @generated from field: uint32 rid = 9;\n */\n rid: number;\n};\n\n/**\n * Describes the message livekit.EventMetric.\n * Use `create(EventMetricSchema)` to create a new message.\n */\nexport const EventMetricSchema: GenMessage<EventMetric> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 3);\n\n/**\n * @generated from message livekit.MetricsRecordingHeader\n */\nexport type MetricsRecordingHeader = Message<\"livekit.MetricsRecordingHeader\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * milliseconds\n *\n * @generated from field: uint64 duration = 3 [jstype = JS_STRING];\n */\n duration: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp start_time = 4;\n */\n startTime?: Timestamp;\n\n /**\n * @generated from field: map<string, string> room_tags = 5;\n */\n roomTags: { [key: string]: string };\n};\n\n/**\n * Describes the message livekit.MetricsRecordingHeader.\n * Use `create(MetricsRecordingHeaderSchema)` to create a new message.\n */\nexport const MetricsRecordingHeaderSchema: GenMessage<MetricsRecordingHeader> = /*@__PURE__*/\n messageDesc(file_livekit_metrics, 4);\n\n/**\n * index from [0: MAX_LABEL_PREDEFINED_MAX_VALUE) are for predefined labels (`MetricLabel`)\n *\n * @generated from enum livekit.MetricLabel\n */\nexport enum MetricLabel {\n /**\n * time to first token from LLM\n *\n * @generated from enum value: AGENTS_LLM_TTFT = 0;\n */\n AGENTS_LLM_TTFT = 0,\n\n /**\n * time to final transcription\n *\n * @generated from enum value: AGENTS_STT_TTFT = 1;\n */\n AGENTS_STT_TTFT = 1,\n\n /**\n * time to first byte\n *\n * @generated from enum value: AGENTS_TTS_TTFB = 2;\n */\n AGENTS_TTS_TTFB = 2,\n\n /**\n * Number of video freezes\n *\n * @generated from enum value: CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT = 3;\n */\n CLIENT_VIDEO_SUBSCRIBER_FREEZE_COUNT = 3,\n\n /**\n * total duration of freezes\n *\n * @generated from enum value: CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION = 4;\n */\n CLIENT_VIDEO_SUBSCRIBER_TOTAL_FREEZE_DURATION = 4,\n\n /**\n * number of video pauses\n *\n * @generated from enum value: CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT = 5;\n */\n CLIENT_VIDEO_SUBSCRIBER_PAUSE_COUNT = 5,\n\n /**\n * total duration of pauses\n *\n * @generated from enum value: CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION = 6;\n */\n CLIENT_VIDEO_SUBSCRIBER_TOTAL_PAUSES_DURATION = 6,\n\n /**\n * number of concealed (synthesized) audio samples\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES = 7;\n */\n CLIENT_AUDIO_SUBSCRIBER_CONCEALED_SAMPLES = 7,\n\n /**\n * number of silent concealed samples\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES = 8;\n */\n CLIENT_AUDIO_SUBSCRIBER_SILENT_CONCEALED_SAMPLES = 8,\n\n /**\n * number of concealment events\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS = 9;\n */\n CLIENT_AUDIO_SUBSCRIBER_CONCEALMENT_EVENTS = 9,\n\n /**\n * number of interruptions\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT = 10;\n */\n CLIENT_AUDIO_SUBSCRIBER_INTERRUPTION_COUNT = 10,\n\n /**\n * total duration of interruptions\n *\n * @generated from enum value: CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION = 11;\n */\n CLIENT_AUDIO_SUBSCRIBER_TOTAL_INTERRUPTION_DURATION = 11,\n\n /**\n * total time spent in jitter buffer\n *\n * @generated from enum value: CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY = 12;\n */\n CLIENT_SUBSCRIBER_JITTER_BUFFER_DELAY = 12,\n\n /**\n * total time spent in jitter buffer\n *\n * @generated from enum value: CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT = 13;\n */\n CLIENT_SUBSCRIBER_JITTER_BUFFER_EMITTED_COUNT = 13,\n\n /**\n * total duration spent in bandwidth quality limitation\n *\n * @generated from enum value: CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH = 14;\n */\n CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_BANDWIDTH = 14,\n\n /**\n * total duration spent in cpu quality limitation\n *\n * @generated from enum value: CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU = 15;\n */\n CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_CPU = 15,\n\n /**\n * total duration spent in other quality limitation\n *\n * @generated from enum value: CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER = 16;\n */\n CLIENT_VIDEO_PUBLISHER_QUALITY_LIMITATION_DURATION_OTHER = 16,\n\n /**\n * Publisher RTT (participant -> server)\n *\n * @generated from enum value: PUBLISHER_RTT = 17;\n */\n PUBLISHER_RTT = 17,\n\n /**\n * RTT between publisher node and subscriber node (could involve intermedia node(s))\n *\n * @generated from enum value: SERVER_MESH_RTT = 18;\n */\n SERVER_MESH_RTT = 18,\n\n /**\n * Subscribe RTT (server -> participant)\n *\n * @generated from enum value: SUBSCRIBER_RTT = 19;\n */\n SUBSCRIBER_RTT = 19,\n\n /**\n * @generated from enum value: METRIC_LABEL_PREDEFINED_MAX_VALUE = 4096;\n */\n METRIC_LABEL_PREDEFINED_MAX_VALUE = 4096,\n}\n\n/**\n * Describes the enum livekit.MetricLabel.\n */\nexport const MetricLabelSchema: GenEnum<MetricLabel> = /*@__PURE__*/\n enumDesc(file_livekit_metrics, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file logger/options.proto (package logger, syntax proto3)\n/* eslint-disable */\n\nimport type { GenExtension, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { extDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { FieldOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Describes the file logger/options.proto.\n */\nexport const file_logger_options: GenFile = /*@__PURE__*/\n fileDesc(\"ChRsb2dnZXIvb3B0aW9ucy5wcm90bxIGbG9nZ2VyOjcKBnJlZGFjdBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYwc0FIAEoCFIGcmVkYWN0OkQKDXJlZGFjdF9mb3JtYXQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGMLNBSABKAlSDHJlZGFjdEZvcm1hdEJ+Cgpjb20ubG9nZ2VyQgxPcHRpb25zUHJvdG9QAVoqZ2l0aHViLmNvbS9saXZla2l0L3Byb3RvY29sL2xpdmVraXQvbG9nZ2VyogIDTFhYqgIGTG9nZ2VyygIGTG9nZ2Vy4gISTG9nZ2VyXEdQQk1ldGFkYXRh6gIGTG9nZ2VyYgZwcm90bzM\", [file_google_protobuf_descriptor]);\n\n/**\n * @generated from extension: bool redact = 91841;\n */\nexport const redact: GenExtension<FieldOptions, boolean> = /*@__PURE__*/\n extDesc(file_logger_options, 0);\n\n/**\n * @generated from extension: string redact_format = 91842;\n */\nexport const redact_format: GenExtension<FieldOptions, string> = /*@__PURE__*/\n extDesc(file_logger_options, 1);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_recording.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { CloudRecordingVariants, RecordingTasks } from \"./plugnmeet_recorder_pb\";\nimport { file_plugnmeet_recorder } from \"./plugnmeet_recorder_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_recording.proto.\n */\nexport const file_plugnmeet_recording: GenFile = /*@__PURE__*/\n fileDesc(\"ChlwbHVnbm1lZXRfcmVjb3JkaW5nLnByb3RvEglwbHVnbm1lZXQimwIKDFJlY29yZGluZ1JlcRInCgR0YXNrGAEgASgOMhkucGx1Z25tZWV0LlJlY29yZGluZ1Rhc2tzEg8KB3Jvb21faWQYAiABKAkSGQoNcm9vbV90YWJsZV9pZBgDIAEoA0ICMAESCwoDc2lkGAQgASgJEhUKCHJ0bXBfdXJsGAUgASgJSACIAQESGgoNY3VzdG9tX2Rlc2lnbhgGIAEoCUgBiAEBEkEKEXJlY29yZGluZ192YXJpYW50GAcgASgOMiEucGx1Z25tZWV0LkNsb3VkUmVjb3JkaW5nVmFyaWFudHNIAogBAUILCglfcnRtcF91cmxCEAoOX2N1c3RvbV9kZXNpZ25CFAoSX3JlY29yZGluZ192YXJpYW50IokCChFSZWNvcmRpbmdJbmZvRmlsZRIZCg1yb29tX3RhYmxlX2lkGAEgASgDQgIwARIPCgdyb29tX2lkGAIgASgJEhIKCnJvb21fdGl0bGUYAyABKAkSEAoIcm9vbV9zaWQYBCABKAkSHgoScm9vbV9jcmVhdGlvbl90aW1lGAUgASgDQgIwARIWCgpyb29tX2VuZGVkGAYgASgDQgIwARIUCgxyZWNvcmRpbmdfaWQYByABKAkSEwoLcmVjb3JkZXJfaWQYCCABKAkSEQoJZmlsZV9wYXRoGAkgASgJEhEKCWZpbGVfc2l6ZRgKIAEoAhIZCg1jcmVhdGlvbl90aW1lGAsgASgDQgIwASIvChFSZWNvcmRpbmdTdWJ0aXRsZRINCgVsYWJlbBgBIAEoCRILCgN1cmwYAiABKAki3gIKEVJlY29yZGluZ01ldGFkYXRhEhIKBXRpdGxlGAEgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAiABKAlIAYgBARI+CglzdWJ0aXRsZXMYAyADKAsyKy5wbHVnbm1lZXQuUmVjb3JkaW5nTWV0YWRhdGEuU3VidGl0bGVzRW50cnkSPwoKZXh0cmFfZGF0YRgEIAMoCzIrLnBsdWdubWVldC5SZWNvcmRpbmdNZXRhZGF0YS5FeHRyYURhdGFFbnRyeRpOCg5TdWJ0aXRsZXNFbnRyeRILCgNrZXkYASABKAkSKwoFdmFsdWUYAiABKAsyHC5wbHVnbm1lZXQuUmVjb3JkaW5nU3VidGl0bGU6AjgBGjAKDkV4dHJhRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCAoGX3RpdGxlQg4KDF9kZXNjcmlwdGlvbkKgAQoNY29tLnBsdWdubWVldEIXUGx1Z25tZWV0UmVjb3JkaW5nUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_plugnmeet_recorder]);\n\n/**\n * @generated from message plugnmeet.RecordingReq\n */\nexport type RecordingReq = Message<\"plugnmeet.RecordingReq\"> & {\n /**\n * @generated from field: plugnmeet.RecordingTasks task = 1;\n */\n task: RecordingTasks;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: int64 room_table_id = 3 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * @generated from field: string sid = 4;\n */\n sid: string;\n\n /**\n * @generated from field: optional string rtmp_url = 5;\n */\n rtmpUrl?: string;\n\n /**\n * @generated from field: optional string custom_design = 6;\n */\n customDesign?: string;\n\n /**\n * @generated from field: optional plugnmeet.CloudRecordingVariants recording_variant = 7;\n */\n recordingVariant?: CloudRecordingVariants;\n};\n\n/**\n * Describes the message plugnmeet.RecordingReq.\n * Use `create(RecordingReqSchema)` to create a new message.\n */\nexport const RecordingReqSchema: GenMessage<RecordingReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recording, 0);\n\n/**\n * @generated from message plugnmeet.RecordingInfoFile\n */\nexport type RecordingInfoFile = Message<\"plugnmeet.RecordingInfoFile\"> & {\n /**\n * @generated from field: int64 room_table_id = 1 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_title = 3;\n */\n roomTitle: string;\n\n /**\n * @generated from field: string room_sid = 4;\n */\n roomSid: string;\n\n /**\n * @generated from field: int64 room_creation_time = 5 [jstype = JS_STRING];\n */\n roomCreationTime: string;\n\n /**\n * @generated from field: int64 room_ended = 6 [jstype = JS_STRING];\n */\n roomEnded: string;\n\n /**\n * @generated from field: string recording_id = 7;\n */\n recordingId: string;\n\n /**\n * @generated from field: string recorder_id = 8;\n */\n recorderId: string;\n\n /**\n * @generated from field: string file_path = 9;\n */\n filePath: string;\n\n /**\n * @generated from field: float file_size = 10;\n */\n fileSize: number;\n\n /**\n * @generated from field: int64 creation_time = 11 [jstype = JS_STRING];\n */\n creationTime: string;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfoFile.\n * Use `create(RecordingInfoFileSchema)` to create a new message.\n */\nexport const RecordingInfoFileSchema: GenMessage<RecordingInfoFile> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recording, 1);\n\n/**\n * @generated from message plugnmeet.RecordingSubtitle\n */\nexport type RecordingSubtitle = Message<\"plugnmeet.RecordingSubtitle\"> & {\n /**\n * @generated from field: string label = 1;\n */\n label: string;\n\n /**\n * @generated from field: string url = 2;\n */\n url: string;\n};\n\n/**\n * Describes the message plugnmeet.RecordingSubtitle.\n * Use `create(RecordingSubtitleSchema)` to create a new message.\n */\nexport const RecordingSubtitleSchema: GenMessage<RecordingSubtitle> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recording, 2);\n\n/**\n * @generated from message plugnmeet.RecordingMetadata\n */\nexport type RecordingMetadata = Message<\"plugnmeet.RecordingMetadata\"> & {\n /**\n * @generated from field: optional string title = 1;\n */\n title?: string;\n\n /**\n * @generated from field: optional string description = 2;\n */\n description?: string;\n\n /**\n * e.g. map<language, RecordingSubtitle>\n *\n * @generated from field: map<string, plugnmeet.RecordingSubtitle> subtitles = 3;\n */\n subtitles: { [key: string]: RecordingSubtitle };\n\n /**\n * @generated from field: map<string, string> extra_data = 4;\n */\n extraData: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.RecordingMetadata.\n * Use `create(RecordingMetadataSchema)` to create a new message.\n */\nexport const RecordingMetadataSchema: GenMessage<RecordingMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recording, 3);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_recorder.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_recorder.proto.\n */\nexport const file_plugnmeet_recorder: GenFile = /*@__PURE__*/\n fileDesc(\"ChhwbHVnbm1lZXRfcmVjb3JkZXIucHJvdG8SCXBsdWdubWVldCLvAQoTUGx1Z05tZWV0VG9SZWNvcmRlchIMCgRmcm9tGAEgASgJEicKBHRhc2sYAiABKA4yGS5wbHVnbm1lZXQuUmVjb3JkaW5nVGFza3MSGQoNcm9vbV90YWJsZV9pZBgDIAEoA0ICMAESDwoHcm9vbV9pZBgEIAEoCRIQCghyb29tX3NpZBgFIAEoCRIUCgxyZWNvcmRpbmdfaWQYBiABKAkSEwoLcmVjb3JkZXJfaWQYByABKAkSFAoMYWNjZXNzX3Rva2VuGAggASgJEhUKCHJ0bXBfdXJsGAkgASgJSACIAQFCCwoJX3J0bXBfdXJsItECChNSZWNvcmRlclRvUGx1Z05tZWV0EgwKBGZyb20YASABKAkSJwoEdGFzaxgCIAEoDjIZLnBsdWdubWVldC5SZWNvcmRpbmdUYXNrcxIOCgZzdGF0dXMYAyABKAgSCwoDbXNnGAQgASgJEhQKDHJlY29yZGluZ19pZBgFIAEoCRIZCg1yb29tX3RhYmxlX2lkGAsgASgDQgIwARIPCgdyb29tX2lkGAYgASgJEhAKCHJvb21fc2lkGAcgASgJEhMKC3JlY29yZGVyX2lkGAggASgJEhEKCWZpbGVfcGF0aBgJIAEoCRIRCglmaWxlX3NpemUYCiABKAISQQoRcmVjb3JkaW5nX3ZhcmlhbnQYDCABKA4yIS5wbHVnbm1lZXQuQ2xvdWRSZWNvcmRpbmdWYXJpYW50c0gAiAEBQhQKEl9yZWNvcmRpbmdfdmFyaWFudCLeAQoPVHJhbnNjb2RpbmdUYXNrEhQKDHJlY29yZGluZ19pZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEhAKCHJvb21fc2lkGAMgASgJEhEKCWZpbGVfcGF0aBgEIAEoCRIRCglmaWxlX25hbWUYBSABKAkSGQoNcm9vbV90YWJsZV9pZBgGIAEoA0ICMAESEwoLcmVjb3JkZXJfaWQYByABKAkSPAoRcmVjb3JkaW5nX3ZhcmlhbnQYCCABKA4yIS5wbHVnbm1lZXQuQ2xvdWRSZWNvcmRpbmdWYXJpYW50cyqcAQoOUmVjb3JkaW5nVGFza3MSEwoPU1RBUlRfUkVDT1JESU5HEAASEgoOU1RPUF9SRUNPUkRJTkcQARIOCgpTVEFSVF9SVE1QEAISDQoJU1RPUF9SVE1QEAMSEQoNRU5EX1JFQ09SRElORxAEEgwKCEVORF9SVE1QEAUSFwoTUkVDT1JESU5HX1BST0NFRURFRBAGEggKBFNUT1AQBypwChBSZWNvcmRlckluZm9LZXlzEhsKF1JFQ09SREVSX0lORk9fTUFYX0xJTUlUEAASGwoXUkVDT1JERVJfSU5GT19MQVNUX1BJTkcQARIiCh5SRUNPUkRFUl9JTkZPX0NVUlJFTlRfUFJPR1JFU1MQAypZChZDbG91ZFJlY29yZGluZ1ZhcmlhbnRzEh8KG0ZVTExfU0NSRUVOX0NMT1VEX1JFQ09SRElORxAAEh4KGk1FRElBX09OTFlfQ0xPVURfUkVDT1JESU5HEAFCnwEKDWNvbS5wbHVnbm1lZXRCFlBsdWdubWVldFJlY29yZGVyUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * @generated from message plugnmeet.PlugNmeetToRecorder\n */\nexport type PlugNmeetToRecorder = Message<\"plugnmeet.PlugNmeetToRecorder\"> & {\n /**\n * @generated from field: string from = 1;\n */\n from: string;\n\n /**\n * @generated from field: plugnmeet.RecordingTasks task = 2;\n */\n task: RecordingTasks;\n\n /**\n * @generated from field: int64 room_table_id = 3 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 5;\n */\n roomSid: string;\n\n /**\n * @generated from field: string recording_id = 6;\n */\n recordingId: string;\n\n /**\n * @generated from field: string recorder_id = 7;\n */\n recorderId: string;\n\n /**\n * @generated from field: string access_token = 8;\n */\n accessToken: string;\n\n /**\n * @generated from field: optional string rtmp_url = 9;\n */\n rtmpUrl?: string;\n};\n\n/**\n * Describes the message plugnmeet.PlugNmeetToRecorder.\n * Use `create(PlugNmeetToRecorderSchema)` to create a new message.\n */\nexport const PlugNmeetToRecorderSchema: GenMessage<PlugNmeetToRecorder> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recorder, 0);\n\n/**\n * @generated from message plugnmeet.RecorderToPlugNmeet\n */\nexport type RecorderToPlugNmeet = Message<\"plugnmeet.RecorderToPlugNmeet\"> & {\n /**\n * @generated from field: string from = 1;\n */\n from: string;\n\n /**\n * @generated from field: plugnmeet.RecordingTasks task = 2;\n */\n task: RecordingTasks;\n\n /**\n * @generated from field: bool status = 3;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 4;\n */\n msg: string;\n\n /**\n * @generated from field: string recording_id = 5;\n */\n recordingId: string;\n\n /**\n * @generated from field: int64 room_table_id = 11 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * @generated from field: string room_id = 6;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 7;\n */\n roomSid: string;\n\n /**\n * @generated from field: string recorder_id = 8;\n */\n recorderId: string;\n\n /**\n * @generated from field: string file_path = 9;\n */\n filePath: string;\n\n /**\n * @generated from field: float file_size = 10;\n */\n fileSize: number;\n\n /**\n * next key 13\n *\n * @generated from field: optional plugnmeet.CloudRecordingVariants recording_variant = 12;\n */\n recordingVariant?: CloudRecordingVariants;\n};\n\n/**\n * Describes the message plugnmeet.RecorderToPlugNmeet.\n * Use `create(RecorderToPlugNmeetSchema)` to create a new message.\n */\nexport const RecorderToPlugNmeetSchema: GenMessage<RecorderToPlugNmeet> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recorder, 1);\n\n/**\n * TranscodingTask will be the job for the transcoding worker.\n *\n * @generated from message plugnmeet.TranscodingTask\n */\nexport type TranscodingTask = Message<\"plugnmeet.TranscodingTask\"> & {\n /**\n * @generated from field: string recording_id = 1;\n */\n recordingId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 3;\n */\n roomSid: string;\n\n /**\n * directory where raw file is stored\n *\n * @generated from field: string file_path = 4;\n */\n filePath: string;\n\n /**\n * raw file name e.g. rec-xxx_raw.mp4\n *\n * @generated from field: string file_name = 5;\n */\n fileName: string;\n\n /**\n * @generated from field: int64 room_table_id = 6 [jstype = JS_STRING];\n */\n roomTableId: string;\n\n /**\n * ID of the original recorder that captured the file\n *\n * @generated from field: string recorder_id = 7;\n */\n recorderId: string;\n\n /**\n * The variant of the recording\n *\n * @generated from field: plugnmeet.CloudRecordingVariants recording_variant = 8;\n */\n recordingVariant: CloudRecordingVariants;\n};\n\n/**\n * Describes the message plugnmeet.TranscodingTask.\n * Use `create(TranscodingTaskSchema)` to create a new message.\n */\nexport const TranscodingTaskSchema: GenMessage<TranscodingTask> = /*@__PURE__*/\n messageDesc(file_plugnmeet_recorder, 2);\n\n/**\n * @generated from enum plugnmeet.RecordingTasks\n */\nexport enum RecordingTasks {\n /**\n * @generated from enum value: START_RECORDING = 0;\n */\n START_RECORDING = 0,\n\n /**\n * @generated from enum value: STOP_RECORDING = 1;\n */\n STOP_RECORDING = 1,\n\n /**\n * @generated from enum value: START_RTMP = 2;\n */\n START_RTMP = 2,\n\n /**\n * @generated from enum value: STOP_RTMP = 3;\n */\n STOP_RTMP = 3,\n\n /**\n * @generated from enum value: END_RECORDING = 4;\n */\n END_RECORDING = 4,\n\n /**\n * @generated from enum value: END_RTMP = 5;\n */\n END_RTMP = 5,\n\n /**\n * @generated from enum value: RECORDING_PROCEEDED = 6;\n */\n RECORDING_PROCEEDED = 6,\n\n /**\n * @generated from enum value: STOP = 7;\n */\n STOP = 7,\n}\n\n/**\n * Describes the enum plugnmeet.RecordingTasks.\n */\nexport const RecordingTasksSchema: GenEnum<RecordingTasks> = /*@__PURE__*/\n enumDesc(file_plugnmeet_recorder, 0);\n\n/**\n * @generated from enum plugnmeet.RecorderInfoKeys\n */\nexport enum RecorderInfoKeys {\n /**\n * @generated from enum value: RECORDER_INFO_MAX_LIMIT = 0;\n */\n RECORDER_INFO_MAX_LIMIT = 0,\n\n /**\n * @generated from enum value: RECORDER_INFO_LAST_PING = 1;\n */\n RECORDER_INFO_LAST_PING = 1,\n\n /**\n * @generated from enum value: RECORDER_INFO_CURRENT_PROGRESS = 3;\n */\n RECORDER_INFO_CURRENT_PROGRESS = 3,\n}\n\n/**\n * Describes the enum plugnmeet.RecorderInfoKeys.\n */\nexport const RecorderInfoKeysSchema: GenEnum<RecorderInfoKeys> = /*@__PURE__*/\n enumDesc(file_plugnmeet_recorder, 1);\n\n/**\n * @generated from enum plugnmeet.CloudRecordingVariants\n */\nexport enum CloudRecordingVariants {\n /**\n * @generated from enum value: FULL_SCREEN_CLOUD_RECORDING = 0;\n */\n FULL_SCREEN_CLOUD_RECORDING = 0,\n\n /**\n * @generated from enum value: MEDIA_ONLY_CLOUD_RECORDING = 1;\n */\n MEDIA_ONLY_CLOUD_RECORDING = 1,\n}\n\n/**\n * Describes the enum plugnmeet.CloudRecordingVariants.\n */\nexport const CloudRecordingVariantsSchema: GenEnum<CloudRecordingVariants> = /*@__PURE__*/\n enumDesc(file_plugnmeet_recorder, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_breakout_room.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_breakout_room.proto.\n */\nexport const file_plugnmeet_breakout_room: GenFile = /*@__PURE__*/\n fileDesc(\"Ch1wbHVnbm1lZXRfYnJlYWtvdXRfcm9vbS5wcm90bxIJcGx1Z25tZWV0IqwBChZDcmVhdGVCcmVha291dFJvb21zUmVxEg8KB3Jvb21faWQYASABKAkSGQoRcmVxdWVzdGVkX3VzZXJfaWQYAiABKAkSFAoIZHVyYXRpb24YAyABKARCAjABEhgKC3dlbGNvbWVfbXNnGAQgASgJSACIAQESJgoFcm9vbXMYBSADKAsyFy5wbHVnbm1lZXQuQnJlYWtvdXRSb29tQg4KDF93ZWxjb21lX21zZyKRAQoMQnJlYWtvdXRSb29tEgoKAmlkGAEgASgJEg0KBXRpdGxlGAIgASgJEhQKCGR1cmF0aW9uGAMgASgEQgIwARIPCgdzdGFydGVkGAQgASgIEhMKB2NyZWF0ZWQYBSABKARCAjABEioKBXVzZXJzGAYgAygLMhsucGx1Z25tZWV0LkJyZWFrb3V0Um9vbVVzZXIiPAoQQnJlYWtvdXRSb29tVXNlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEg4KBmpvaW5lZBgDIAEoCCJiCh9JbmNyZWFzZUJyZWFrb3V0Um9vbUR1cmF0aW9uUmVxEhgKEGJyZWFrb3V0X3Jvb21faWQYASABKAkSFAoIZHVyYXRpb24YAiABKARCAjABEg8KB3Jvb21faWQYAyABKAkiOwobQnJvYWRjYXN0QnJlYWtvdXRSb29tTXNnUmVxEgsKA21zZxgBIAEoCRIPCgdyb29tX2lkGAMgASgJImMKE0pvaW5CcmVha291dFJvb21SZXESGAoQYnJlYWtvdXRfcm9vbV9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEg8KB3Jvb21faWQYAyABKAkSEAoIaXNfYWRtaW4YBCABKAgiPwoSRW5kQnJlYWtvdXRSb29tUmVxEhgKEGJyZWFrb3V0X3Jvb21faWQYASABKAkSDwoHcm9vbV9pZBgDIAEoCSKpAQoPQnJlYWtvdXRSb29tUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSEgoFdG9rZW4YAyABKAlIAIgBARIqCgRyb29tGAQgASgLMhcucGx1Z25tZWV0LkJyZWFrb3V0Um9vbUgBiAEBEiYKBXJvb21zGAUgAygLMhcucGx1Z25tZWV0LkJyZWFrb3V0Um9vbUIICgZfdG9rZW5CBwoFX3Jvb21CowEKDWNvbS5wbHVnbm1lZXRCGlBsdWdubWVldEJyZWFrb3V0Um9vbVByb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\");\n\n/**\n * @generated from message plugnmeet.CreateBreakoutRoomsReq\n */\nexport type CreateBreakoutRoomsReq = Message<\"plugnmeet.CreateBreakoutRoomsReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string requested_user_id = 2;\n */\n requestedUserId: string;\n\n /**\n * @generated from field: uint64 duration = 3 [jstype = JS_STRING];\n */\n duration: string;\n\n /**\n * @generated from field: optional string welcome_msg = 4;\n */\n welcomeMsg?: string;\n\n /**\n * @generated from field: repeated plugnmeet.BreakoutRoom rooms = 5;\n */\n rooms: BreakoutRoom[];\n};\n\n/**\n * Describes the message plugnmeet.CreateBreakoutRoomsReq.\n * Use `create(CreateBreakoutRoomsReqSchema)` to create a new message.\n */\nexport const CreateBreakoutRoomsReqSchema: GenMessage<CreateBreakoutRoomsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 0);\n\n/**\n * @generated from message plugnmeet.BreakoutRoom\n */\nexport type BreakoutRoom = Message<\"plugnmeet.BreakoutRoom\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string title = 2;\n */\n title: string;\n\n /**\n * @generated from field: uint64 duration = 3 [jstype = JS_STRING];\n */\n duration: string;\n\n /**\n * @generated from field: bool started = 4;\n */\n started: boolean;\n\n /**\n * @generated from field: uint64 created = 5 [jstype = JS_STRING];\n */\n created: string;\n\n /**\n * @generated from field: repeated plugnmeet.BreakoutRoomUser users = 6;\n */\n users: BreakoutRoomUser[];\n};\n\n/**\n * Describes the message plugnmeet.BreakoutRoom.\n * Use `create(BreakoutRoomSchema)` to create a new message.\n */\nexport const BreakoutRoomSchema: GenMessage<BreakoutRoom> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 1);\n\n/**\n * @generated from message plugnmeet.BreakoutRoomUser\n */\nexport type BreakoutRoomUser = Message<\"plugnmeet.BreakoutRoomUser\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: bool joined = 3;\n */\n joined: boolean;\n};\n\n/**\n * Describes the message plugnmeet.BreakoutRoomUser.\n * Use `create(BreakoutRoomUserSchema)` to create a new message.\n */\nexport const BreakoutRoomUserSchema: GenMessage<BreakoutRoomUser> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 2);\n\n/**\n * @generated from message plugnmeet.IncreaseBreakoutRoomDurationReq\n */\nexport type IncreaseBreakoutRoomDurationReq = Message<\"plugnmeet.IncreaseBreakoutRoomDurationReq\"> & {\n /**\n * @generated from field: string breakout_room_id = 1;\n */\n breakoutRoomId: string;\n\n /**\n * @generated from field: uint64 duration = 2 [jstype = JS_STRING];\n */\n duration: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.IncreaseBreakoutRoomDurationReq.\n * Use `create(IncreaseBreakoutRoomDurationReqSchema)` to create a new message.\n */\nexport const IncreaseBreakoutRoomDurationReqSchema: GenMessage<IncreaseBreakoutRoomDurationReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 3);\n\n/**\n * @generated from message plugnmeet.BroadcastBreakoutRoomMsgReq\n */\nexport type BroadcastBreakoutRoomMsgReq = Message<\"plugnmeet.BroadcastBreakoutRoomMsgReq\"> & {\n /**\n * @generated from field: string msg = 1;\n */\n msg: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.BroadcastBreakoutRoomMsgReq.\n * Use `create(BroadcastBreakoutRoomMsgReqSchema)` to create a new message.\n */\nexport const BroadcastBreakoutRoomMsgReqSchema: GenMessage<BroadcastBreakoutRoomMsgReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 4);\n\n/**\n * @generated from message plugnmeet.JoinBreakoutRoomReq\n */\nexport type JoinBreakoutRoomReq = Message<\"plugnmeet.JoinBreakoutRoomReq\"> & {\n /**\n * @generated from field: string breakout_room_id = 1;\n */\n breakoutRoomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_admin = 4;\n */\n isAdmin: boolean;\n};\n\n/**\n * Describes the message plugnmeet.JoinBreakoutRoomReq.\n * Use `create(JoinBreakoutRoomReqSchema)` to create a new message.\n */\nexport const JoinBreakoutRoomReqSchema: GenMessage<JoinBreakoutRoomReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 5);\n\n/**\n * @generated from message plugnmeet.EndBreakoutRoomReq\n */\nexport type EndBreakoutRoomReq = Message<\"plugnmeet.EndBreakoutRoomReq\"> & {\n /**\n * @generated from field: string breakout_room_id = 1;\n */\n breakoutRoomId: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.EndBreakoutRoomReq.\n * Use `create(EndBreakoutRoomReqSchema)` to create a new message.\n */\nexport const EndBreakoutRoomReqSchema: GenMessage<EndBreakoutRoomReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 6);\n\n/**\n * @generated from message plugnmeet.BreakoutRoomRes\n */\nexport type BreakoutRoomRes = Message<\"plugnmeet.BreakoutRoomRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * join token\n *\n * @generated from field: optional string token = 3;\n */\n token?: string;\n\n /**\n * for my breakout room\n *\n * @generated from field: optional plugnmeet.BreakoutRoom room = 4;\n */\n room?: BreakoutRoom;\n\n /**\n * rooms list\n *\n * @generated from field: repeated plugnmeet.BreakoutRoom rooms = 5;\n */\n rooms: BreakoutRoom[];\n};\n\n/**\n * Describes the message plugnmeet.BreakoutRoomRes.\n * Use `create(BreakoutRoomResSchema)` to create a new message.\n */\nexport const BreakoutRoomResSchema: GenMessage<BreakoutRoomRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_breakout_room, 7);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_common_api.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { DataMsgBodyType } from \"./plugnmeet_datamessage_pb\";\nimport { file_plugnmeet_datamessage } from \"./plugnmeet_datamessage_pb\";\nimport type { NatsSubjects } from \"./plugnmeet_nats_msg_pb\";\nimport { file_plugnmeet_nats_msg } from \"./plugnmeet_nats_msg_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_common_api.proto.\n */\nexport const file_plugnmeet_common_api: GenFile = /*@__PURE__*/\n fileDesc(\"ChpwbHVnbm1lZXRfY29tbW9uX2FwaS5wcm90bxIJcGx1Z25tZWV0Ii0KDkNvbW1vblJlc3BvbnNlEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkiPgoOVmVyaWZ5VG9rZW5SZXESGgoNaXNfcHJvZHVjdGlvbhgBIAEoCEgAiAEBQhAKDl9pc19wcm9kdWN0aW9uIq4DCg5WZXJpZnlUb2tlblJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhQKDG5hdHNfd3NfdXJscxgDIAMoCRIbCg5zZXJ2ZXJfdmVyc2lvbhgEIAEoCUgAiAEBEhQKB3Jvb21faWQYBSABKAlIAYgBARIUCgd1c2VyX2lkGAYgASgJSAKIAQESHQoQcm9vbV9zdHJlYW1fbmFtZRgHIAEoCUgDiAEBEjMKDW5hdHNfc3ViamVjdHMYCCABKAsyFy5wbHVnbm1lZXQuTmF0c1N1YmplY3RzSASIAQESLwoiZW5hYmxlZF9zZWxmX2luc2VydF9lbmNyeXB0aW9uX2tleRgJIAEoCEgFiAEBEhUKCGlzX2Nsb3VkGAogASgISAaIAQFCEQoPX3NlcnZlcl92ZXJzaW9uQgoKCF9yb29tX2lkQgoKCF91c2VyX2lkQhMKEV9yb29tX3N0cmVhbV9uYW1lQhAKDl9uYXRzX3N1YmplY3RzQiUKI19lbmFibGVkX3NlbGZfaW5zZXJ0X2VuY3J5cHRpb25fa2V5QgsKCV9pc19jbG91ZCKAAQoSTXV0ZVVuTXV0ZVRyYWNrUmVxEgsKA3NpZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSEQoJdHJhY2tfc2lkGAQgASgJEg0KBW11dGVkGAUgASgIEhkKEVJlcXVlc3RlZF91c2VyX2lkGAYgASgJImYKFFJlbW92ZVBhcnRpY2lwYW50UmVxEgsKA3NpZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSCwoDbXNnGAQgASgJEhIKCmJsb2NrX3VzZXIYBSABKAgi1AEKDkRhdGFNZXNzYWdlUmVxEg8KB3Jvb21faWQYASABKAkSEAoIcm9vbV9zaWQYAiABKAkSDwoHdXNlcl9pZBgDIAEoCRIQCgh1c2VyX3NpZBgEIAEoCRIxCg1tc2dfYm9keV90eXBlGAUgASgOMhoucGx1Z25tZWV0LkRhdGFNc2dCb2R5VHlwZRILCgNtc2cYBiABKAkSGQoRUmVxdWVzdGVkX3VzZXJfaWQYByABKAkSDwoHc2VuZF90bxgIIAMoCRIQCghpc19hZG1pbhgJIAEoCCIgCg1Sb29tRW5kQVBJUmVxEg8KB3Jvb21faWQYASABKAkikgEKE0NoYW5nZVZpc2liaWxpdHlSZXMSDwoHcm9vbV9pZBgBIAEoCRIcCg92aXNpYmxlX25vdGVwYWQYAiABKAhIAIgBARIgChN2aXNpYmxlX3doaXRlX2JvYXJkGAMgASgISAGIAQFCEgoQX3Zpc2libGVfbm90ZXBhZEIWChRfdmlzaWJsZV93aGl0ZV9ib2FyZCJ/ChJTd2l0Y2hQcmVzZW50ZXJSZXESLAoEdGFzaxgBIAEoDjIeLnBsdWdubWVldC5Td2l0Y2hQcmVzZW50ZXJUYXNrEg8KB3VzZXJfaWQYAiABKAkSDwoHcm9vbV9pZBgDIAEoCRIZChFSZXF1ZXN0ZWRfdXNlcl9pZBgEIAEoCSKoAQoWRXh0ZXJuYWxNZWRpYVBsYXllclJlcRIwCgR0YXNrGAEgASgOMiIucGx1Z25tZWV0LkV4dGVybmFsTWVkaWFQbGF5ZXJUYXNrEhAKA3VybBgCIAEoCUgAiAEBEhQKB3NlZWtfdG8YAyABKAFIAYgBARIPCgdyb29tX2lkGAQgASgJEg8KB3VzZXJfaWQYBSABKAlCBgoEX3VybEIKCghfc2Vla190byKGAQoWRXh0ZXJuYWxEaXNwbGF5TGlua1JlcRIwCgR0YXNrGAEgASgOMiIucGx1Z25tZWV0LkV4dGVybmFsRGlzcGxheUxpbmtUYXNrEhAKA3VybBgCIAEoCUgAiAEBEg8KB3Jvb21faWQYBCABKAkSDwoHdXNlcl9pZBgFIAEoCUIGCgRfdXJsIokBChhDcmVhdGVFdGhlcnBhZFNlc3Npb25SZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRITCgZwYWRfaWQYAyABKAlIAIgBARIcCg9yZWFkb25seV9wYWRfaWQYBCABKAlIAYgBAUIJCgdfcGFkX2lkQhIKEF9yZWFkb25seV9wYWRfaWQiRAoQQ2xlYW5FdGhlcnBhZFJlcRIPCgdyb29tX2lkGAEgASgJEg8KB25vZGVfaWQYAiABKAkSDgoGcGFkX2lkGAMgASgJIj0KF0NoYW5nZUV0aGVycGFkU3RhdHVzUmVxEg8KB3Jvb21faWQYASABKAkSEQoJaXNfYWN0aXZlGAIgASgIIjoKFkFwcHJvdmVXYWl0aW5nVXNlcnNSZXESDwoHcm9vbV9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJIjsKG1VwZGF0ZVdhaXRpbmdSb29tTWVzc2FnZVJlcRIPCgdyb29tX2lkGAEgASgJEgsKA21zZxgCIAEoCSKOAQoZVXBkYXRlVXNlckxvY2tTZXR0aW5nc1JlcRIQCghyb29tX3NpZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEg8KB3VzZXJfaWQYAyABKAkSDwoHc2VydmljZRgEIAEoCRIRCglkaXJlY3Rpb24YBSABKAkSGQoRUmVxdWVzdGVkX3VzZXJfaWQYBiABKAkiggEKGlVwbG9hZEJhc2U2NEVuY29kZWREYXRhUmVxEg8KB3Jvb21faWQYASABKAkSDAoEZGF0YRgDIAEoCRIRCglmaWxlX25hbWUYBCABKAkSMgoJZmlsZV90eXBlGAUgASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlIo8BChpVcGxvYWRCYXNlNjRFbmNvZGVkRGF0YVJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhEKCWZpbGVfcGF0aBgDIAEoCRIRCglmaWxlX25hbWUYBCABKAkSFgoOZmlsZV9leHRlbnNpb24YBSABKAkSFgoOZmlsZV9taW1lX3R5cGUYBiABKAkixwEKFFVwbG9hZGVkRmlsZU1lcmdlUmVxEhAKCHJvb21fc2lkGAEgASgJEg8KB3Jvb21faWQYAiABKAkSMgoJZmlsZV90eXBlGAMgASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlEhwKFHJlc3VtYWJsZV9pZGVudGlmaWVyGAQgASgJEhoKEnJlc3VtYWJsZV9maWxlbmFtZRgFIAEoCRIeChZyZXN1bWFibGVfdG90YWxfY2h1bmtzGAYgASgFIskBCg9VcGxvYWRlZEZpbGVSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIPCgdmaWxlX2lkGAMgASgJEhEKCWZpbGVfcGF0aBgEIAEoCRIRCglmaWxlX25hbWUYBSABKAkSFgoOZmlsZV9leHRlbnNpb24YBiABKAkSFgoOZmlsZV9taW1lX3R5cGUYByABKAkSMgoJZmlsZV90eXBlGAggASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlIvkBChhSb29tVXBsb2FkZWRGaWxlTWV0YWRhdGESDwoHZmlsZV9pZBgBIAEoCRIRCglmaWxlX25hbWUYAiABKAkSEQoJZmlsZV9wYXRoGAMgASgJEhEKCW1pbWVfdHlwZRgEIAEoCRIbChN1cGxvYWRlZF9ieV91c2VyX2lkGAUgASgJEhgKEHVwbG9hZGVkX2J5X25hbWUYBiABKAkSMgoJZmlsZV90eXBlGAcgASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlEhgKC3RvdGFsX3BhZ2VzGAggASgFSACIAQFCDgoMX3RvdGFsX3BhZ2VzIl4KF0dldFJvb21VcGxvYWRlZEZpbGVzUmVxEg8KB3Jvb21faWQYASABKAkSMgoJZmlsZV90eXBlGAIgASgOMh8ucGx1Z25tZWV0LlJvb21VcGxvYWRlZEZpbGVUeXBlImoKF0dldFJvb21VcGxvYWRlZEZpbGVzUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSMgoFZmlsZXMYAyADKAsyIy5wbHVnbm1lZXQuUm9vbVVwbG9hZGVkRmlsZU1ldGFkYXRhIkAKEkVuYWJsZVNpcERpYWxJblJlcRIPCgdyb29tX2lkGAEgASgJEhkKEWhpZGVfcGhvbmVfbnVtYmVyGAIgASgIKi4KE1N3aXRjaFByZXNlbnRlclRhc2sSCwoHUFJPTU9URRAAEgoKBkRFTU9URRABKj8KF0V4dGVybmFsTWVkaWFQbGF5ZXJUYXNrEhIKDlNUQVJUX1BMQVlCQUNLEAASEAoMRU5EX1BMQVlCQUNLEAEqSgoXRXh0ZXJuYWxEaXNwbGF5TGlua1Rhc2sSFwoTU1RBUlRfRVhURVJOQUxfTElOSxAAEhYKElNUT1BfRVhURVJOQUxfTElOSxABKpcBChRSb29tVXBsb2FkZWRGaWxlVHlwZRINCglDSEFUX0ZJTEUQABIZChVXSElURUJPQVJEX0lNQUdFX0ZJTEUQARIdChlXSElURUJPQVJEX0NPTlZFUlRFRF9GSUxFEAISHgoaRVhURVJOQUxfTUVESUFfUExBWUVSX0ZJTEUQAxIWChJWSVJUVUFMX0JBQ0tHUk9VTkQQBEKgAQoNY29tLnBsdWdubWVldEIXUGx1Z25tZWV0Q29tbW9uQXBpUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_plugnmeet_datamessage, file_plugnmeet_nats_msg]);\n\n/**\n * @generated from message plugnmeet.CommonResponse\n */\nexport type CommonResponse = Message<\"plugnmeet.CommonResponse\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.CommonResponse.\n * Use `create(CommonResponseSchema)` to create a new message.\n */\nexport const CommonResponseSchema: GenMessage<CommonResponse> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 0);\n\n/**\n * @generated from message plugnmeet.VerifyTokenReq\n */\nexport type VerifyTokenReq = Message<\"plugnmeet.VerifyTokenReq\"> & {\n /**\n * @generated from field: optional bool is_production = 1;\n */\n isProduction?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.VerifyTokenReq.\n * Use `create(VerifyTokenReqSchema)` to create a new message.\n */\nexport const VerifyTokenReqSchema: GenMessage<VerifyTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 1);\n\n/**\n * @generated from message plugnmeet.VerifyTokenRes\n */\nexport type VerifyTokenRes = Message<\"plugnmeet.VerifyTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated string nats_ws_urls = 3;\n */\n natsWsUrls: string[];\n\n /**\n * @generated from field: optional string server_version = 4;\n */\n serverVersion?: string;\n\n /**\n * @generated from field: optional string room_id = 5;\n */\n roomId?: string;\n\n /**\n * @generated from field: optional string user_id = 6;\n */\n userId?: string;\n\n /**\n * @generated from field: optional string room_stream_name = 7;\n */\n roomStreamName?: string;\n\n /**\n * @generated from field: optional plugnmeet.NatsSubjects nats_subjects = 8;\n */\n natsSubjects?: NatsSubjects;\n\n /**\n * @generated from field: optional bool enabled_self_insert_encryption_key = 9;\n */\n enabledSelfInsertEncryptionKey?: boolean;\n\n /**\n * @generated from field: optional bool is_cloud = 10;\n */\n isCloud?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.VerifyTokenRes.\n * Use `create(VerifyTokenResSchema)` to create a new message.\n */\nexport const VerifyTokenResSchema: GenMessage<VerifyTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 2);\n\n/**\n * @generated from message plugnmeet.MuteUnMuteTrackReq\n */\nexport type MuteUnMuteTrackReq = Message<\"plugnmeet.MuteUnMuteTrackReq\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId: string;\n\n /**\n * @generated from field: string track_sid = 4;\n */\n trackSid: string;\n\n /**\n * @generated from field: bool muted = 5;\n */\n muted: boolean;\n\n /**\n * @generated from field: string Requested_user_id = 6;\n */\n RequestedUserId: string;\n};\n\n/**\n * Describes the message plugnmeet.MuteUnMuteTrackReq.\n * Use `create(MuteUnMuteTrackReqSchema)` to create a new message.\n */\nexport const MuteUnMuteTrackReqSchema: GenMessage<MuteUnMuteTrackReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 3);\n\n/**\n * @generated from message plugnmeet.RemoveParticipantReq\n */\nexport type RemoveParticipantReq = Message<\"plugnmeet.RemoveParticipantReq\"> & {\n /**\n * @generated from field: string sid = 1;\n */\n sid: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId: string;\n\n /**\n * @generated from field: string msg = 4;\n */\n msg: string;\n\n /**\n * @generated from field: bool block_user = 5;\n */\n blockUser: boolean;\n};\n\n/**\n * Describes the message plugnmeet.RemoveParticipantReq.\n * Use `create(RemoveParticipantReqSchema)` to create a new message.\n */\nexport const RemoveParticipantReqSchema: GenMessage<RemoveParticipantReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 4);\n\n/**\n * @generated from message plugnmeet.DataMessageReq\n */\nexport type DataMessageReq = Message<\"plugnmeet.DataMessageReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 2;\n */\n roomSid: string;\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId: string;\n\n /**\n * @generated from field: string user_sid = 4;\n */\n userSid: string;\n\n /**\n * @generated from field: plugnmeet.DataMsgBodyType msg_body_type = 5;\n */\n msgBodyType: DataMsgBodyType;\n\n /**\n * @generated from field: string msg = 6;\n */\n msg: string;\n\n /**\n * @generated from field: string Requested_user_id = 7;\n */\n RequestedUserId: string;\n\n /**\n * @generated from field: repeated string send_to = 8;\n */\n sendTo: string[];\n\n /**\n * @generated from field: bool is_admin = 9;\n */\n isAdmin: boolean;\n};\n\n/**\n * Describes the message plugnmeet.DataMessageReq.\n * Use `create(DataMessageReqSchema)` to create a new message.\n */\nexport const DataMessageReqSchema: GenMessage<DataMessageReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 5);\n\n/**\n * @generated from message plugnmeet.RoomEndAPIReq\n */\nexport type RoomEndAPIReq = Message<\"plugnmeet.RoomEndAPIReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomEndAPIReq.\n * Use `create(RoomEndAPIReqSchema)` to create a new message.\n */\nexport const RoomEndAPIReqSchema: GenMessage<RoomEndAPIReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 6);\n\n/**\n * @generated from message plugnmeet.ChangeVisibilityRes\n */\nexport type ChangeVisibilityRes = Message<\"plugnmeet.ChangeVisibilityRes\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: optional bool visible_notepad = 2;\n */\n visibleNotepad?: boolean;\n\n /**\n * @generated from field: optional bool visible_white_board = 3;\n */\n visibleWhiteBoard?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.ChangeVisibilityRes.\n * Use `create(ChangeVisibilityResSchema)` to create a new message.\n */\nexport const ChangeVisibilityResSchema: GenMessage<ChangeVisibilityRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 7);\n\n/**\n * @generated from message plugnmeet.SwitchPresenterReq\n */\nexport type SwitchPresenterReq = Message<\"plugnmeet.SwitchPresenterReq\"> & {\n /**\n * @generated from field: plugnmeet.SwitchPresenterTask task = 1;\n */\n task: SwitchPresenterTask;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n\n /**\n * @generated from field: string Requested_user_id = 4;\n */\n RequestedUserId: string;\n};\n\n/**\n * Describes the message plugnmeet.SwitchPresenterReq.\n * Use `create(SwitchPresenterReqSchema)` to create a new message.\n */\nexport const SwitchPresenterReqSchema: GenMessage<SwitchPresenterReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 8);\n\n/**\n * @generated from message plugnmeet.ExternalMediaPlayerReq\n */\nexport type ExternalMediaPlayerReq = Message<\"plugnmeet.ExternalMediaPlayerReq\"> & {\n /**\n * @generated from field: plugnmeet.ExternalMediaPlayerTask task = 1;\n */\n task: ExternalMediaPlayerTask;\n\n /**\n * @generated from field: optional string url = 2;\n */\n url?: string;\n\n /**\n * @generated from field: optional double seek_to = 3;\n */\n seekTo?: number;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 5;\n */\n userId: string;\n};\n\n/**\n * Describes the message plugnmeet.ExternalMediaPlayerReq.\n * Use `create(ExternalMediaPlayerReqSchema)` to create a new message.\n */\nexport const ExternalMediaPlayerReqSchema: GenMessage<ExternalMediaPlayerReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 9);\n\n/**\n * @generated from message plugnmeet.ExternalDisplayLinkReq\n */\nexport type ExternalDisplayLinkReq = Message<\"plugnmeet.ExternalDisplayLinkReq\"> & {\n /**\n * @generated from field: plugnmeet.ExternalDisplayLinkTask task = 1;\n */\n task: ExternalDisplayLinkTask;\n\n /**\n * @generated from field: optional string url = 2;\n */\n url?: string;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 5;\n */\n userId: string;\n};\n\n/**\n * Describes the message plugnmeet.ExternalDisplayLinkReq.\n * Use `create(ExternalDisplayLinkReqSchema)` to create a new message.\n */\nexport const ExternalDisplayLinkReqSchema: GenMessage<ExternalDisplayLinkReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 10);\n\n/**\n * @generated from message plugnmeet.CreateEtherpadSessionRes\n */\nexport type CreateEtherpadSessionRes = Message<\"plugnmeet.CreateEtherpadSessionRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string pad_id = 3;\n */\n padId?: string;\n\n /**\n * @generated from field: optional string readonly_pad_id = 4;\n */\n readonlyPadId?: string;\n};\n\n/**\n * Describes the message plugnmeet.CreateEtherpadSessionRes.\n * Use `create(CreateEtherpadSessionResSchema)` to create a new message.\n */\nexport const CreateEtherpadSessionResSchema: GenMessage<CreateEtherpadSessionRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 11);\n\n/**\n * @generated from message plugnmeet.CleanEtherpadReq\n */\nexport type CleanEtherpadReq = Message<\"plugnmeet.CleanEtherpadReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string node_id = 2;\n */\n nodeId: string;\n\n /**\n * @generated from field: string pad_id = 3;\n */\n padId: string;\n};\n\n/**\n * Describes the message plugnmeet.CleanEtherpadReq.\n * Use `create(CleanEtherpadReqSchema)` to create a new message.\n */\nexport const CleanEtherpadReqSchema: GenMessage<CleanEtherpadReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 12);\n\n/**\n * @generated from message plugnmeet.ChangeEtherpadStatusReq\n */\nexport type ChangeEtherpadStatusReq = Message<\"plugnmeet.ChangeEtherpadStatusReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n};\n\n/**\n * Describes the message plugnmeet.ChangeEtherpadStatusReq.\n * Use `create(ChangeEtherpadStatusReqSchema)` to create a new message.\n */\nexport const ChangeEtherpadStatusReqSchema: GenMessage<ChangeEtherpadStatusReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 13);\n\n/**\n * @generated from message plugnmeet.ApproveWaitingUsersReq\n */\nexport type ApproveWaitingUsersReq = Message<\"plugnmeet.ApproveWaitingUsersReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n};\n\n/**\n * Describes the message plugnmeet.ApproveWaitingUsersReq.\n * Use `create(ApproveWaitingUsersReqSchema)` to create a new message.\n */\nexport const ApproveWaitingUsersReqSchema: GenMessage<ApproveWaitingUsersReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 14);\n\n/**\n * @generated from message plugnmeet.UpdateWaitingRoomMessageReq\n */\nexport type UpdateWaitingRoomMessageReq = Message<\"plugnmeet.UpdateWaitingRoomMessageReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.UpdateWaitingRoomMessageReq.\n * Use `create(UpdateWaitingRoomMessageReqSchema)` to create a new message.\n */\nexport const UpdateWaitingRoomMessageReqSchema: GenMessage<UpdateWaitingRoomMessageReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 15);\n\n/**\n * @generated from message plugnmeet.UpdateUserLockSettingsReq\n */\nexport type UpdateUserLockSettingsReq = Message<\"plugnmeet.UpdateUserLockSettingsReq\"> & {\n /**\n * @generated from field: string room_sid = 1;\n */\n roomSid: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 3;\n */\n userId: string;\n\n /**\n * @generated from field: string service = 4;\n */\n service: string;\n\n /**\n * @generated from field: string direction = 5;\n */\n direction: string;\n\n /**\n * @generated from field: string Requested_user_id = 6;\n */\n RequestedUserId: string;\n};\n\n/**\n * Describes the message plugnmeet.UpdateUserLockSettingsReq.\n * Use `create(UpdateUserLockSettingsReqSchema)` to create a new message.\n */\nexport const UpdateUserLockSettingsReqSchema: GenMessage<UpdateUserLockSettingsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 16);\n\n/**\n * @generated from message plugnmeet.UploadBase64EncodedDataReq\n */\nexport type UploadBase64EncodedDataReq = Message<\"plugnmeet.UploadBase64EncodedDataReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string data = 3;\n */\n data: string;\n\n /**\n * @generated from field: string file_name = 4;\n */\n fileName: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 5;\n */\n fileType: RoomUploadedFileType;\n};\n\n/**\n * Describes the message plugnmeet.UploadBase64EncodedDataReq.\n * Use `create(UploadBase64EncodedDataReqSchema)` to create a new message.\n */\nexport const UploadBase64EncodedDataReqSchema: GenMessage<UploadBase64EncodedDataReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 17);\n\n/**\n * @generated from message plugnmeet.UploadBase64EncodedDataRes\n */\nexport type UploadBase64EncodedDataRes = Message<\"plugnmeet.UploadBase64EncodedDataRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: string file_path = 3;\n */\n filePath: string;\n\n /**\n * @generated from field: string file_name = 4;\n */\n fileName: string;\n\n /**\n * @generated from field: string file_extension = 5;\n */\n fileExtension: string;\n\n /**\n * @generated from field: string file_mime_type = 6;\n */\n fileMimeType: string;\n};\n\n/**\n * Describes the message plugnmeet.UploadBase64EncodedDataRes.\n * Use `create(UploadBase64EncodedDataResSchema)` to create a new message.\n */\nexport const UploadBase64EncodedDataResSchema: GenMessage<UploadBase64EncodedDataRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 18);\n\n/**\n * @generated from message plugnmeet.UploadedFileMergeReq\n */\nexport type UploadedFileMergeReq = Message<\"plugnmeet.UploadedFileMergeReq\"> & {\n /**\n * @generated from field: string room_sid = 1;\n */\n roomSid: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 3;\n */\n fileType: RoomUploadedFileType;\n\n /**\n * @generated from field: string resumable_identifier = 4;\n */\n resumableIdentifier: string;\n\n /**\n * @generated from field: string resumable_filename = 5;\n */\n resumableFilename: string;\n\n /**\n * @generated from field: int32 resumable_total_chunks = 6;\n */\n resumableTotalChunks: number;\n};\n\n/**\n * Describes the message plugnmeet.UploadedFileMergeReq.\n * Use `create(UploadedFileMergeReqSchema)` to create a new message.\n */\nexport const UploadedFileMergeReqSchema: GenMessage<UploadedFileMergeReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 19);\n\n/**\n * @generated from message plugnmeet.UploadedFileRes\n */\nexport type UploadedFileRes = Message<\"plugnmeet.UploadedFileRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: string file_id = 3;\n */\n fileId: string;\n\n /**\n * @generated from field: string file_path = 4;\n */\n filePath: string;\n\n /**\n * @generated from field: string file_name = 5;\n */\n fileName: string;\n\n /**\n * @generated from field: string file_extension = 6;\n */\n fileExtension: string;\n\n /**\n * @generated from field: string file_mime_type = 7;\n */\n fileMimeType: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 8;\n */\n fileType: RoomUploadedFileType;\n};\n\n/**\n * Describes the message plugnmeet.UploadedFileRes.\n * Use `create(UploadedFileResSchema)` to create a new message.\n */\nexport const UploadedFileResSchema: GenMessage<UploadedFileRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 20);\n\n/**\n * @generated from message plugnmeet.RoomUploadedFileMetadata\n */\nexport type RoomUploadedFileMetadata = Message<\"plugnmeet.RoomUploadedFileMetadata\"> & {\n /**\n * @generated from field: string file_id = 1;\n */\n fileId: string;\n\n /**\n * @generated from field: string file_name = 2;\n */\n fileName: string;\n\n /**\n * @generated from field: string file_path = 3;\n */\n filePath: string;\n\n /**\n * @generated from field: string mime_type = 4;\n */\n mimeType: string;\n\n /**\n * @generated from field: string uploaded_by_user_id = 5;\n */\n uploadedByUserId: string;\n\n /**\n * @generated from field: string uploaded_by_name = 6;\n */\n uploadedByName: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 7;\n */\n fileType: RoomUploadedFileType;\n\n /**\n * @generated from field: optional int32 total_pages = 8;\n */\n totalPages?: number;\n};\n\n/**\n * Describes the message plugnmeet.RoomUploadedFileMetadata.\n * Use `create(RoomUploadedFileMetadataSchema)` to create a new message.\n */\nexport const RoomUploadedFileMetadataSchema: GenMessage<RoomUploadedFileMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 21);\n\n/**\n * @generated from message plugnmeet.GetRoomUploadedFilesReq\n */\nexport type GetRoomUploadedFilesReq = Message<\"plugnmeet.GetRoomUploadedFilesReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: plugnmeet.RoomUploadedFileType file_type = 2;\n */\n fileType: RoomUploadedFileType;\n};\n\n/**\n * Describes the message plugnmeet.GetRoomUploadedFilesReq.\n * Use `create(GetRoomUploadedFilesReqSchema)` to create a new message.\n */\nexport const GetRoomUploadedFilesReqSchema: GenMessage<GetRoomUploadedFilesReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 22);\n\n/**\n * @generated from message plugnmeet.GetRoomUploadedFilesRes\n */\nexport type GetRoomUploadedFilesRes = Message<\"plugnmeet.GetRoomUploadedFilesRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated plugnmeet.RoomUploadedFileMetadata files = 3;\n */\n files: RoomUploadedFileMetadata[];\n};\n\n/**\n * Describes the message plugnmeet.GetRoomUploadedFilesRes.\n * Use `create(GetRoomUploadedFilesResSchema)` to create a new message.\n */\nexport const GetRoomUploadedFilesResSchema: GenMessage<GetRoomUploadedFilesRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 23);\n\n/**\n * @generated from message plugnmeet.EnableSipDialInReq\n */\nexport type EnableSipDialInReq = Message<\"plugnmeet.EnableSipDialInReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: bool hide_phone_number = 2;\n */\n hidePhoneNumber: boolean;\n};\n\n/**\n * Describes the message plugnmeet.EnableSipDialInReq.\n * Use `create(EnableSipDialInReqSchema)` to create a new message.\n */\nexport const EnableSipDialInReqSchema: GenMessage<EnableSipDialInReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common_api, 24);\n\n/**\n * @generated from enum plugnmeet.SwitchPresenterTask\n */\nexport enum SwitchPresenterTask {\n /**\n * @generated from enum value: PROMOTE = 0;\n */\n PROMOTE = 0,\n\n /**\n * @generated from enum value: DEMOTE = 1;\n */\n DEMOTE = 1,\n}\n\n/**\n * Describes the enum plugnmeet.SwitchPresenterTask.\n */\nexport const SwitchPresenterTaskSchema: GenEnum<SwitchPresenterTask> = /*@__PURE__*/\n enumDesc(file_plugnmeet_common_api, 0);\n\n/**\n * @generated from enum plugnmeet.ExternalMediaPlayerTask\n */\nexport enum ExternalMediaPlayerTask {\n /**\n * @generated from enum value: START_PLAYBACK = 0;\n */\n START_PLAYBACK = 0,\n\n /**\n * @generated from enum value: END_PLAYBACK = 1;\n */\n END_PLAYBACK = 1,\n}\n\n/**\n * Describes the enum plugnmeet.ExternalMediaPlayerTask.\n */\nexport const ExternalMediaPlayerTaskSchema: GenEnum<ExternalMediaPlayerTask> = /*@__PURE__*/\n enumDesc(file_plugnmeet_common_api, 1);\n\n/**\n * @generated from enum plugnmeet.ExternalDisplayLinkTask\n */\nexport enum ExternalDisplayLinkTask {\n /**\n * @generated from enum value: START_EXTERNAL_LINK = 0;\n */\n START_EXTERNAL_LINK = 0,\n\n /**\n * @generated from enum value: STOP_EXTERNAL_LINK = 1;\n */\n STOP_EXTERNAL_LINK = 1,\n}\n\n/**\n * Describes the enum plugnmeet.ExternalDisplayLinkTask.\n */\nexport const ExternalDisplayLinkTaskSchema: GenEnum<ExternalDisplayLinkTask> = /*@__PURE__*/\n enumDesc(file_plugnmeet_common_api, 2);\n\n/**\n * @generated from enum plugnmeet.RoomUploadedFileType\n */\nexport enum RoomUploadedFileType {\n /**\n * @generated from enum value: CHAT_FILE = 0;\n */\n CHAT_FILE = 0,\n\n /**\n * @generated from enum value: WHITEBOARD_IMAGE_FILE = 1;\n */\n WHITEBOARD_IMAGE_FILE = 1,\n\n /**\n * @generated from enum value: WHITEBOARD_CONVERTED_FILE = 2;\n */\n WHITEBOARD_CONVERTED_FILE = 2,\n\n /**\n * @generated from enum value: EXTERNAL_MEDIA_PLAYER_FILE = 3;\n */\n EXTERNAL_MEDIA_PLAYER_FILE = 3,\n\n /**\n * @generated from enum value: VIRTUAL_BACKGROUND = 4;\n */\n VIRTUAL_BACKGROUND = 4,\n}\n\n/**\n * Describes the enum plugnmeet.RoomUploadedFileType.\n */\nexport const RoomUploadedFileTypeSchema: GenEnum<RoomUploadedFileType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_common_api, 3);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_datamessage.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_datamessage.proto.\n */\nexport const file_plugnmeet_datamessage: GenFile = /*@__PURE__*/\n fileDesc(\"ChtwbHVnbm1lZXRfZGF0YW1lc3NhZ2UucHJvdG8SCXBsdWdubWVldCKZAQoSRGF0YUNoYW5uZWxNZXNzYWdlEgoKAmlkGAEgASgJEigKBHR5cGUYAiABKA4yGi5wbHVnbm1lZXQuRGF0YU1zZ0JvZHlUeXBlEhQKDGZyb21fdXNlcl9pZBgDIAEoCRIXCgp0b191c2VyX2lkGAQgASgJSACIAQESDwoHbWVzc2FnZRgFIAEoCUINCgtfdG9fdXNlcl9pZCrvAwoPRGF0YU1zZ0JvZHlUeXBlEgsKB1VOS05PV04QABIPCgtGSUxFX1VQTE9BRBABEggKBElORk8QAhIJCgVBTEVSVBADEhoKFlVTRVJfVklTSUJJTElUWV9DSEFOR0UQBBIgChxFWFRFUk5BTF9NRURJQV9QTEFZRVJfRVZFTlRTEAUSFQoRTkVXX1BPTExfUkVTUE9OU0UQBhIbChdQVVNIX0pPSU5fQlJFQUtPVVRfUk9PTRAHEhwKGFJFUV9GVUxMX1dISVRFQk9BUkRfREFUQRAIEhwKGFJFU19GVUxMX1dISVRFQk9BUkRfREFUQRAJEhAKDFNDRU5FX1VQREFURRAKEhIKDlBPSU5URVJfVVBEQVRFEAsSHwobV0hJVEVCT0FSRF9BUFBfU1RBVEVfQ0hBTkdFEAwSDwoLUEFHRV9DSEFOR0UQDRIPCgtGSUxFX0NIQU5HRRAOEiQKIFVQREFURV9DVVJSRU5UX09GRklDRV9GSUxFX1BBR0VTEA8SFAoQV0hJVEVCT0FSRF9SRVNFVBAQEiIKHlVTRVJfQ09OTkVDVElPTl9RVUFMSVRZX0NIQU5HRRAREhgKFFJFUV9QVUJMSUNfQ0hBVF9EQVRBEBISGAoUUkVTX1BVQkxJQ19DSEFUX0RBVEEQE0KiAQoNY29tLnBsdWdubWVldEIZUGx1Z25tZWV0RGF0YW1lc3NhZ2VQcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\");\n\n/**\n * @generated from message plugnmeet.DataChannelMessage\n */\nexport type DataChannelMessage = Message<\"plugnmeet.DataChannelMessage\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: plugnmeet.DataMsgBodyType type = 2;\n */\n type: DataMsgBodyType;\n\n /**\n * @generated from field: string from_user_id = 3;\n */\n fromUserId: string;\n\n /**\n * @generated from field: optional string to_user_id = 4;\n */\n toUserId?: string;\n\n /**\n * @generated from field: string message = 5;\n */\n message: string;\n};\n\n/**\n * Describes the message plugnmeet.DataChannelMessage.\n * Use `create(DataChannelMessageSchema)` to create a new message.\n */\nexport const DataChannelMessageSchema: GenMessage<DataChannelMessage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_datamessage, 0);\n\n/**\n * @generated from enum plugnmeet.DataMsgBodyType\n */\nexport enum DataMsgBodyType {\n /**\n * SYSTEM type\n *\n * @generated from enum value: UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FILE_UPLOAD = 1;\n */\n FILE_UPLOAD = 1,\n\n /**\n * @generated from enum value: INFO = 2;\n */\n INFO = 2,\n\n /**\n * @generated from enum value: ALERT = 3;\n */\n ALERT = 3,\n\n /**\n * @generated from enum value: USER_VISIBILITY_CHANGE = 4;\n */\n USER_VISIBILITY_CHANGE = 4,\n\n /**\n * @generated from enum value: EXTERNAL_MEDIA_PLAYER_EVENTS = 5;\n */\n EXTERNAL_MEDIA_PLAYER_EVENTS = 5,\n\n /**\n * @generated from enum value: NEW_POLL_RESPONSE = 6;\n */\n NEW_POLL_RESPONSE = 6,\n\n /**\n * @generated from enum value: PUSH_JOIN_BREAKOUT_ROOM = 7;\n */\n PUSH_JOIN_BREAKOUT_ROOM = 7,\n\n /**\n * WHITEBOARD type\n *\n * @generated from enum value: REQ_FULL_WHITEBOARD_DATA = 8;\n */\n REQ_FULL_WHITEBOARD_DATA = 8,\n\n /**\n * @generated from enum value: RES_FULL_WHITEBOARD_DATA = 9;\n */\n RES_FULL_WHITEBOARD_DATA = 9,\n\n /**\n * @generated from enum value: SCENE_UPDATE = 10;\n */\n SCENE_UPDATE = 10,\n\n /**\n * @generated from enum value: POINTER_UPDATE = 11;\n */\n POINTER_UPDATE = 11,\n\n /**\n * @generated from enum value: WHITEBOARD_APP_STATE_CHANGE = 12;\n */\n WHITEBOARD_APP_STATE_CHANGE = 12,\n\n /**\n * @generated from enum value: PAGE_CHANGE = 13;\n */\n PAGE_CHANGE = 13,\n\n /**\n * @generated from enum value: FILE_CHANGE = 14;\n */\n FILE_CHANGE = 14,\n\n /**\n * @generated from enum value: UPDATE_CURRENT_OFFICE_FILE_PAGES = 15;\n */\n UPDATE_CURRENT_OFFICE_FILE_PAGES = 15,\n\n /**\n * @generated from enum value: WHITEBOARD_RESET = 16;\n */\n WHITEBOARD_RESET = 16,\n\n /**\n * @generated from enum value: USER_CONNECTION_QUALITY_CHANGE = 17;\n */\n USER_CONNECTION_QUALITY_CHANGE = 17,\n\n /**\n * @generated from enum value: REQ_PUBLIC_CHAT_DATA = 18;\n */\n REQ_PUBLIC_CHAT_DATA = 18,\n\n /**\n * @generated from enum value: RES_PUBLIC_CHAT_DATA = 19;\n */\n RES_PUBLIC_CHAT_DATA = 19,\n}\n\n/**\n * Describes the enum plugnmeet.DataMsgBodyType.\n */\nexport const DataMsgBodyTypeSchema: GenEnum<DataMsgBodyType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_datamessage, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_nats_msg.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_nats_msg.proto.\n */\nexport const file_plugnmeet_nats_msg: GenFile = /*@__PURE__*/\n fileDesc(\"ChhwbHVnbm1lZXRfbmF0c19tc2cucHJvdG8SCXBsdWdubWVldCKqAQoMTmF0c1N1YmplY3RzEhkKEXN5c3RlbV9hcGlfd29ya2VyGAEgASgJEhgKEHN5c3RlbV9qc193b3JrZXIYAiABKAkSFQoNc3lzdGVtX3B1YmxpYxgDIAEoCRIWCg5zeXN0ZW1fcHJpdmF0ZRgEIAEoCRIMCgRjaGF0GAUgASgJEhIKCndoaXRlYm9hcmQYBiABKAkSFAoMZGF0YV9jaGFubmVsGAcgASgJIk8KE1ByaXZhdGVEYXRhRGVsaXZlcnkSEgoKdG9fdXNlcl9pZBgBIAEoCRIWCg5lY2hvX3RvX3NlbmRlchgCIAEoCBIMCgR0eXBlGAMgASgJIngKFU5hdHNNc2dTZXJ2ZXJUb0NsaWVudBIKCgJpZBgBIAEoCRI1CgVldmVudBgCIAEoDjImLnBsdWdubWVldC5OYXRzTXNnU2VydmVyVG9DbGllbnRFdmVudHMSCwoDbXNnGAMgASgJEg8KB2Jpbl9tc2cYBCABKAwieAoVTmF0c01zZ0NsaWVudFRvU2VydmVyEgoKAmlkGAEgASgJEjUKBWV2ZW50GAIgASgOMiYucGx1Z25tZWV0Lk5hdHNNc2dDbGllbnRUb1NlcnZlckV2ZW50cxILCgNtc2cYAyABKAkSDwoHYmluX21zZxgEIAEoDCK/AQoOTmF0c0t2Um9vbUluZm8SFwoLZGJfdGFibGVfaWQYASABKARCAjABEg8KB3Jvb21faWQYAiABKAkSEAoIcm9vbV9zaWQYAyABKAkSDgoGc3RhdHVzGAQgASgJEhkKDWVtcHR5X3RpbWVvdXQYBSABKARCAjABEhwKEG1heF9wYXJ0aWNpcGFudHMYBiABKARCAjABEhAKCG1ldGFkYXRhGAcgASgJEhYKCmNyZWF0ZWRfYXQYCCABKARCAjABItwBCg5OYXRzS3ZVc2VySW5mbxIPCgd1c2VyX2lkGAEgASgJEhAKCHVzZXJfc2lkGAIgASgJEgwKBG5hbWUYAyABKAkSDwoHcm9vbV9pZBgEIAEoCRIQCghpc19hZG1pbhgFIAEoCBIUCgxpc19wcmVzZW50ZXIYBiABKAgSEAoIbWV0YWRhdGEYByABKAkSFQoJam9pbmVkX2F0GAggASgEQgIwARIaCg5yZWNvbm5lY3RlZF9hdBgJIAEoBEICMAESGwoPZGlzY29ubmVjdGVkX2F0GAogASgEQgIwASKTAQoPVHVybkNyZWRlbnRpYWxzEhAKCHVzZXJuYW1lGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEgwKBHVyaXMYAyADKAkSEgoKZm9yY2VfdHVybhgEIAEoCBIVCg1mYWxsYmFja190dXJuGAUgASgIEiMKF2ZhbGxiYWNrX3RpbWVyX2R1cmF0aW9uGAYgASgDQgIwASKXAQoTTWVkaWFTZXJ2ZXJDb25uSW5mbxILCgN1cmwYASABKAkSDQoFdG9rZW4YAiABKAkSFAoMZW5hYmxlZF9lMmVlGAMgASgIEjkKEHR1cm5fY3JlZGVudGlhbHMYBCABKAsyGi5wbHVnbm1lZXQuVHVybkNyZWRlbnRpYWxzSACIAQFCEwoRX3R1cm5fY3JlZGVudGlhbHMiaQoPTmF0c0luaXRpYWxEYXRhEicKBHJvb20YASABKAsyGS5wbHVnbm1lZXQuTmF0c0t2Um9vbUluZm8SLQoKbG9jYWxfdXNlchgCIAEoCzIZLnBsdWdubWVldC5OYXRzS3ZVc2VySW5mbyKQAQoWTmF0c1N5c3RlbU5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRI0CgR0eXBlGAIgASgOMiYucGx1Z25tZWV0Lk5hdHNTeXN0ZW1Ob3RpZmljYXRpb25UeXBlcxILCgNtc2cYAyABKAkSEwoHc2VudF9hdBgEIAEoA0ICMAESEgoKd2l0aF9zb3VuZBgFIAEoCCI7ChZOYXRzVXNlck1ldGFkYXRhVXBkYXRlEg8KB3VzZXJfaWQYASABKAkSEAoIbWV0YWRhdGEYAiABKAki1wIKC0NoYXRNZXNzYWdlEgoKAmlkGAEgASgJEhEKCWZyb21fbmFtZRgCIAEoCRIUCgxmcm9tX3VzZXJfaWQYAyABKAkSEwoHc2VudF9hdBgEIAEoA0ICMAESFwoKdG9fdXNlcl9pZBgFIAEoCUgAiAEBEhIKCmlzX3ByaXZhdGUYBiABKAgSDwoHbWVzc2FnZRgHIAEoCRISCgpmcm9tX2FkbWluGAggASgIEhgKC3NvdXJjZV9sYW5nGAkgASgJSAGIAQESPgoMdHJhbnNsYXRpb25zGAogAygLMigucGx1Z25tZWV0LkNoYXRNZXNzYWdlLlRyYW5zbGF0aW9uc0VudHJ5GjMKEVRyYW5zbGF0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDQoLX3RvX3VzZXJfaWRCDgoMX3NvdXJjZV9sYW5nKoYEChtOYXRzTXNnU2VydmVyVG9DbGllbnRFdmVudHMSFAoQUkVTX0lOSVRJQUxfREFUQRAAEhkKFVJFU19KT0lORURfVVNFUlNfTElTVBABEhkKFVJFU19NRURJQV9TRVJWRVJfREFUQRACEhgKFFJPT01fTUVUQURBVEFfVVBEQVRFEAMSGAoUVVNFUl9NRVRBREFUQV9VUERBVEUQBBIPCgtVU0VSX0pPSU5FRBAFEhUKEVVTRVJfRElTQ09OTkVDVEVEEAYSEAoMVVNFUl9PRkZMSU5FEAcSGAoUUkVTUF9SRU5FV19QTk1fVE9LRU4QCBIXChNTWVNURU1fTk9USUZJQ0FUSU9OEAkSEQoNU0VTU0lPTl9FTkRFRBAKEg8KC1BPTExfQ0xPU0VEEAsSEAoMUE9MTF9DUkVBVEVEEAwSFgoSSk9JTl9CUkVBS09VVF9ST09NEA0SFwoTQlJFQUtPVVRfUk9PTV9FTkRFRBAOEhMKD1NZU1RFTV9DSEFUX01TRxAPEh0KGVRSQU5TQ1JJUFRJT05fT1VUUFVUX1RFWFQQEBIeChpSRVNQX0lOU0lHSFRTX0FJX1RFWFRfQ0hBVBAREhoKFlJFU1BfT05MSU5FX1VTRVJTX0xJU1QQEhIZChVERUxJVkVSWV9QUklWQVRFX0RBVEEQExIICgRQT05HEBQqpgIKG05hdHNNc2dDbGllbnRUb1NlcnZlckV2ZW50cxIUChBSRVFfSU5JVElBTF9EQVRBEAASGQoVUkVRX01FRElBX1NFUlZFUl9EQVRBEAESGQoVUkVRX0pPSU5FRF9VU0VSU19MSVNUEAISFwoTUkVRX1JFTkVXX1BOTV9UT0tFThADEggKBFBJTkcQBBISCg5SRVFfUkFJU0VfSEFORBAFEhIKDlJFUV9MT1dFUl9IQU5EEAYSHQoZUkVRX0xPV0VSX09USEVSX1VTRVJfSEFORBAHEhcKE1BVU0hfQU5BTFlUSUNTX0RBVEEQCBIZChVSRVFfT05MSU5FX1VTRVJTX0xJU1QQCRIdChlSRVFfUFJJVkFURV9EQVRBX0RFTElWRVJZEAoqigEKG05hdHNTeXN0ZW1Ob3RpZmljYXRpb25UeXBlcxIhCh1OQVRTX1NZU1RFTV9OT1RJRklDQVRJT05fSU5GTxAAEiQKIE5BVFNfU1lTVEVNX05PVElGSUNBVElPTl9XQVJOSU5HEAESIgoeTkFUU19TWVNURU1fTk9USUZJQ0FUSU9OX0VSUk9SEAJCngEKDWNvbS5wbHVnbm1lZXRCFVBsdWdubWVldE5hdHNNc2dQcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\");\n\n/**\n * @generated from message plugnmeet.NatsSubjects\n */\nexport type NatsSubjects = Message<\"plugnmeet.NatsSubjects\"> & {\n /**\n * @generated from field: string system_api_worker = 1;\n */\n systemApiWorker: string;\n\n /**\n * @generated from field: string system_js_worker = 2;\n */\n systemJsWorker: string;\n\n /**\n * @generated from field: string system_public = 3;\n */\n systemPublic: string;\n\n /**\n * @generated from field: string system_private = 4;\n */\n systemPrivate: string;\n\n /**\n * @generated from field: string chat = 5;\n */\n chat: string;\n\n /**\n * @generated from field: string whiteboard = 6;\n */\n whiteboard: string;\n\n /**\n * @generated from field: string data_channel = 7;\n */\n dataChannel: string;\n};\n\n/**\n * Describes the message plugnmeet.NatsSubjects.\n * Use `create(NatsSubjectsSchema)` to create a new message.\n */\nexport const NatsSubjectsSchema: GenMessage<NatsSubjects> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 0);\n\n/**\n * @generated from message plugnmeet.PrivateDataDelivery\n */\nexport type PrivateDataDelivery = Message<\"plugnmeet.PrivateDataDelivery\"> & {\n /**\n * @generated from field: string to_user_id = 1;\n */\n toUserId: string;\n\n /**\n * @generated from field: bool echo_to_sender = 2;\n */\n echoToSender: boolean;\n\n /**\n * @generated from field: string type = 3;\n */\n type: string;\n};\n\n/**\n * Describes the message plugnmeet.PrivateDataDelivery.\n * Use `create(PrivateDataDeliverySchema)` to create a new message.\n */\nexport const PrivateDataDeliverySchema: GenMessage<PrivateDataDelivery> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 1);\n\n/**\n * @generated from message plugnmeet.NatsMsgServerToClient\n */\nexport type NatsMsgServerToClient = Message<\"plugnmeet.NatsMsgServerToClient\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: plugnmeet.NatsMsgServerToClientEvents event = 2;\n */\n event: NatsMsgServerToClientEvents;\n\n /**\n * @generated from field: string msg = 3;\n */\n msg: string;\n\n /**\n * @generated from field: bytes bin_msg = 4;\n */\n binMsg: Uint8Array;\n};\n\n/**\n * Describes the message plugnmeet.NatsMsgServerToClient.\n * Use `create(NatsMsgServerToClientSchema)` to create a new message.\n */\nexport const NatsMsgServerToClientSchema: GenMessage<NatsMsgServerToClient> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 2);\n\n/**\n * @generated from message plugnmeet.NatsMsgClientToServer\n */\nexport type NatsMsgClientToServer = Message<\"plugnmeet.NatsMsgClientToServer\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: plugnmeet.NatsMsgClientToServerEvents event = 2;\n */\n event: NatsMsgClientToServerEvents;\n\n /**\n * @generated from field: string msg = 3;\n */\n msg: string;\n\n /**\n * @generated from field: bytes bin_msg = 4;\n */\n binMsg: Uint8Array;\n};\n\n/**\n * Describes the message plugnmeet.NatsMsgClientToServer.\n * Use `create(NatsMsgClientToServerSchema)` to create a new message.\n */\nexport const NatsMsgClientToServerSchema: GenMessage<NatsMsgClientToServer> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 3);\n\n/**\n * @generated from message plugnmeet.NatsKvRoomInfo\n */\nexport type NatsKvRoomInfo = Message<\"plugnmeet.NatsKvRoomInfo\"> & {\n /**\n * @generated from field: uint64 db_table_id = 1 [jstype = JS_STRING];\n */\n dbTableId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_sid = 3;\n */\n roomSid: string;\n\n /**\n * @generated from field: string status = 4;\n */\n status: string;\n\n /**\n * @generated from field: uint64 empty_timeout = 5 [jstype = JS_STRING];\n */\n emptyTimeout: string;\n\n /**\n * @generated from field: uint64 max_participants = 6 [jstype = JS_STRING];\n */\n maxParticipants: string;\n\n /**\n * @generated from field: string metadata = 7;\n */\n metadata: string;\n\n /**\n * @generated from field: uint64 created_at = 8 [jstype = JS_STRING];\n */\n createdAt: string;\n};\n\n/**\n * Describes the message plugnmeet.NatsKvRoomInfo.\n * Use `create(NatsKvRoomInfoSchema)` to create a new message.\n */\nexport const NatsKvRoomInfoSchema: GenMessage<NatsKvRoomInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 4);\n\n/**\n * @generated from message plugnmeet.NatsKvUserInfo\n */\nexport type NatsKvUserInfo = Message<\"plugnmeet.NatsKvUserInfo\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string user_sid = 2;\n */\n userSid: string;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_admin = 5;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: bool is_presenter = 6;\n */\n isPresenter: boolean;\n\n /**\n * @generated from field: string metadata = 7;\n */\n metadata: string;\n\n /**\n * @generated from field: uint64 joined_at = 8 [jstype = JS_STRING];\n */\n joinedAt: string;\n\n /**\n * @generated from field: uint64 reconnected_at = 9 [jstype = JS_STRING];\n */\n reconnectedAt: string;\n\n /**\n * @generated from field: uint64 disconnected_at = 10 [jstype = JS_STRING];\n */\n disconnectedAt: string;\n};\n\n/**\n * Describes the message plugnmeet.NatsKvUserInfo.\n * Use `create(NatsKvUserInfoSchema)` to create a new message.\n */\nexport const NatsKvUserInfoSchema: GenMessage<NatsKvUserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 5);\n\n/**\n * @generated from message plugnmeet.TurnCredentials\n */\nexport type TurnCredentials = Message<\"plugnmeet.TurnCredentials\"> & {\n /**\n * @generated from field: string username = 1;\n */\n username: string;\n\n /**\n * @generated from field: string password = 2;\n */\n password: string;\n\n /**\n * @generated from field: repeated string uris = 3;\n */\n uris: string[];\n\n /**\n * @generated from field: bool force_turn = 4;\n */\n forceTurn: boolean;\n\n /**\n * @generated from field: bool fallback_turn = 5;\n */\n fallbackTurn: boolean;\n\n /**\n * The duration in MILLISECONDS to wait with a poor connection before triggering the fallback.\n *\n * @generated from field: int64 fallback_timer_duration = 6 [jstype = JS_STRING];\n */\n fallbackTimerDuration: string;\n};\n\n/**\n * Describes the message plugnmeet.TurnCredentials.\n * Use `create(TurnCredentialsSchema)` to create a new message.\n */\nexport const TurnCredentialsSchema: GenMessage<TurnCredentials> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 6);\n\n/**\n * @generated from message plugnmeet.MediaServerConnInfo\n */\nexport type MediaServerConnInfo = Message<\"plugnmeet.MediaServerConnInfo\"> & {\n /**\n * @generated from field: string url = 1;\n */\n url: string;\n\n /**\n * @generated from field: string token = 2;\n */\n token: string;\n\n /**\n * @generated from field: bool enabled_e2ee = 3;\n */\n enabledE2ee: boolean;\n\n /**\n * @generated from field: optional plugnmeet.TurnCredentials turn_credentials = 4;\n */\n turnCredentials?: TurnCredentials;\n};\n\n/**\n * Describes the message plugnmeet.MediaServerConnInfo.\n * Use `create(MediaServerConnInfoSchema)` to create a new message.\n */\nexport const MediaServerConnInfoSchema: GenMessage<MediaServerConnInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 7);\n\n/**\n * @generated from message plugnmeet.NatsInitialData\n */\nexport type NatsInitialData = Message<\"plugnmeet.NatsInitialData\"> & {\n /**\n * @generated from field: plugnmeet.NatsKvRoomInfo room = 1;\n */\n room?: NatsKvRoomInfo;\n\n /**\n * @generated from field: plugnmeet.NatsKvUserInfo local_user = 2;\n */\n localUser?: NatsKvUserInfo;\n};\n\n/**\n * Describes the message plugnmeet.NatsInitialData.\n * Use `create(NatsInitialDataSchema)` to create a new message.\n */\nexport const NatsInitialDataSchema: GenMessage<NatsInitialData> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 8);\n\n/**\n * @generated from message plugnmeet.NatsSystemNotification\n */\nexport type NatsSystemNotification = Message<\"plugnmeet.NatsSystemNotification\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: plugnmeet.NatsSystemNotificationTypes type = 2;\n */\n type: NatsSystemNotificationTypes;\n\n /**\n * @generated from field: string msg = 3;\n */\n msg: string;\n\n /**\n * @generated from field: int64 sent_at = 4 [jstype = JS_STRING];\n */\n sentAt: string;\n\n /**\n * @generated from field: bool with_sound = 5;\n */\n withSound: boolean;\n};\n\n/**\n * Describes the message plugnmeet.NatsSystemNotification.\n * Use `create(NatsSystemNotificationSchema)` to create a new message.\n */\nexport const NatsSystemNotificationSchema: GenMessage<NatsSystemNotification> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 9);\n\n/**\n * @generated from message plugnmeet.NatsUserMetadataUpdate\n */\nexport type NatsUserMetadataUpdate = Message<\"plugnmeet.NatsUserMetadataUpdate\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string metadata = 2;\n */\n metadata: string;\n};\n\n/**\n * Describes the message plugnmeet.NatsUserMetadataUpdate.\n * Use `create(NatsUserMetadataUpdateSchema)` to create a new message.\n */\nexport const NatsUserMetadataUpdateSchema: GenMessage<NatsUserMetadataUpdate> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 10);\n\n/**\n * @generated from message plugnmeet.ChatMessage\n */\nexport type ChatMessage = Message<\"plugnmeet.ChatMessage\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string from_name = 2;\n */\n fromName: string;\n\n /**\n * @generated from field: string from_user_id = 3;\n */\n fromUserId: string;\n\n /**\n * @generated from field: int64 sent_at = 4 [jstype = JS_STRING];\n */\n sentAt: string;\n\n /**\n * @generated from field: optional string to_user_id = 5;\n */\n toUserId?: string;\n\n /**\n * @generated from field: bool is_private = 6;\n */\n isPrivate: boolean;\n\n /**\n * @generated from field: string message = 7;\n */\n message: string;\n\n /**\n * @generated from field: bool from_admin = 8;\n */\n fromAdmin: boolean;\n\n /**\n * @generated from field: optional string source_lang = 9;\n */\n sourceLang?: string;\n\n /**\n * @generated from field: map<string, string> translations = 10;\n */\n translations: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.ChatMessage.\n * Use `create(ChatMessageSchema)` to create a new message.\n */\nexport const ChatMessageSchema: GenMessage<ChatMessage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_nats_msg, 11);\n\n/**\n * @generated from enum plugnmeet.NatsMsgServerToClientEvents\n */\nexport enum NatsMsgServerToClientEvents {\n /**\n * initial data\n *\n * @generated from enum value: RES_INITIAL_DATA = 0;\n */\n RES_INITIAL_DATA = 0,\n\n /**\n * @generated from enum value: RES_JOINED_USERS_LIST = 1;\n */\n RES_JOINED_USERS_LIST = 1,\n\n /**\n * @generated from enum value: RES_MEDIA_SERVER_DATA = 2;\n */\n RES_MEDIA_SERVER_DATA = 2,\n\n /**\n * @generated from enum value: ROOM_METADATA_UPDATE = 3;\n */\n ROOM_METADATA_UPDATE = 3,\n\n /**\n * @generated from enum value: USER_METADATA_UPDATE = 4;\n */\n USER_METADATA_UPDATE = 4,\n\n /**\n * @generated from enum value: USER_JOINED = 5;\n */\n USER_JOINED = 5,\n\n /**\n * @generated from enum value: USER_DISCONNECTED = 6;\n */\n USER_DISCONNECTED = 6,\n\n /**\n * @generated from enum value: USER_OFFLINE = 7;\n */\n USER_OFFLINE = 7,\n\n /**\n * @generated from enum value: RESP_RENEW_PNM_TOKEN = 8;\n */\n RESP_RENEW_PNM_TOKEN = 8,\n\n /**\n * @generated from enum value: SYSTEM_NOTIFICATION = 9;\n */\n SYSTEM_NOTIFICATION = 9,\n\n /**\n * @generated from enum value: SESSION_ENDED = 10;\n */\n SESSION_ENDED = 10,\n\n /**\n * @generated from enum value: POLL_CLOSED = 11;\n */\n POLL_CLOSED = 11,\n\n /**\n * @generated from enum value: POLL_CREATED = 12;\n */\n POLL_CREATED = 12,\n\n /**\n * @generated from enum value: JOIN_BREAKOUT_ROOM = 13;\n */\n JOIN_BREAKOUT_ROOM = 13,\n\n /**\n * @generated from enum value: BREAKOUT_ROOM_ENDED = 14;\n */\n BREAKOUT_ROOM_ENDED = 14,\n\n /**\n * mostly system message display in chat\n *\n * @generated from enum value: SYSTEM_CHAT_MSG = 15;\n */\n SYSTEM_CHAT_MSG = 15,\n\n /**\n * @generated from enum value: TRANSCRIPTION_OUTPUT_TEXT = 16;\n */\n TRANSCRIPTION_OUTPUT_TEXT = 16,\n\n /**\n * @generated from enum value: RESP_INSIGHTS_AI_TEXT_CHAT = 17;\n */\n RESP_INSIGHTS_AI_TEXT_CHAT = 17,\n\n /**\n * @generated from enum value: RESP_ONLINE_USERS_LIST = 18;\n */\n RESP_ONLINE_USERS_LIST = 18,\n\n /**\n * @generated from enum value: DELIVERY_PRIVATE_DATA = 19;\n */\n DELIVERY_PRIVATE_DATA = 19,\n\n /**\n * next ID: 21\n *\n * @generated from enum value: PONG = 20;\n */\n PONG = 20,\n}\n\n/**\n * Describes the enum plugnmeet.NatsMsgServerToClientEvents.\n */\nexport const NatsMsgServerToClientEventsSchema: GenEnum<NatsMsgServerToClientEvents> = /*@__PURE__*/\n enumDesc(file_plugnmeet_nats_msg, 0);\n\n/**\n * @generated from enum plugnmeet.NatsMsgClientToServerEvents\n */\nexport enum NatsMsgClientToServerEvents {\n /**\n * @generated from enum value: REQ_INITIAL_DATA = 0;\n */\n REQ_INITIAL_DATA = 0,\n\n /**\n * @generated from enum value: REQ_MEDIA_SERVER_DATA = 1;\n */\n REQ_MEDIA_SERVER_DATA = 1,\n\n /**\n * @generated from enum value: REQ_JOINED_USERS_LIST = 2;\n */\n REQ_JOINED_USERS_LIST = 2,\n\n /**\n * @generated from enum value: REQ_RENEW_PNM_TOKEN = 3;\n */\n REQ_RENEW_PNM_TOKEN = 3,\n\n /**\n * @generated from enum value: PING = 4;\n */\n PING = 4,\n\n /**\n * @generated from enum value: REQ_RAISE_HAND = 5;\n */\n REQ_RAISE_HAND = 5,\n\n /**\n * @generated from enum value: REQ_LOWER_HAND = 6;\n */\n REQ_LOWER_HAND = 6,\n\n /**\n * @generated from enum value: REQ_LOWER_OTHER_USER_HAND = 7;\n */\n REQ_LOWER_OTHER_USER_HAND = 7,\n\n /**\n * @generated from enum value: PUSH_ANALYTICS_DATA = 8;\n */\n PUSH_ANALYTICS_DATA = 8,\n\n /**\n * @generated from enum value: REQ_ONLINE_USERS_LIST = 9;\n */\n REQ_ONLINE_USERS_LIST = 9,\n\n /**\n * next ID: 11\n *\n * @generated from enum value: REQ_PRIVATE_DATA_DELIVERY = 10;\n */\n REQ_PRIVATE_DATA_DELIVERY = 10,\n}\n\n/**\n * Describes the enum plugnmeet.NatsMsgClientToServerEvents.\n */\nexport const NatsMsgClientToServerEventsSchema: GenEnum<NatsMsgClientToServerEvents> = /*@__PURE__*/\n enumDesc(file_plugnmeet_nats_msg, 1);\n\n/**\n * @generated from enum plugnmeet.NatsSystemNotificationTypes\n */\nexport enum NatsSystemNotificationTypes {\n /**\n * @generated from enum value: NATS_SYSTEM_NOTIFICATION_INFO = 0;\n */\n NATS_SYSTEM_NOTIFICATION_INFO = 0,\n\n /**\n * @generated from enum value: NATS_SYSTEM_NOTIFICATION_WARNING = 1;\n */\n NATS_SYSTEM_NOTIFICATION_WARNING = 1,\n\n /**\n * @generated from enum value: NATS_SYSTEM_NOTIFICATION_ERROR = 2;\n */\n NATS_SYSTEM_NOTIFICATION_ERROR = 2,\n}\n\n/**\n * Describes the enum plugnmeet.NatsSystemNotificationTypes.\n */\nexport const NatsSystemNotificationTypesSchema: GenEnum<NatsSystemNotificationTypes> = /*@__PURE__*/\n enumDesc(file_plugnmeet_nats_msg, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_common.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Codec, ParticipantInfo, TrackInfo } from \"./livekit_models_pb\";\nimport { file_livekit_models } from \"./livekit_models_pb\";\nimport type { RoomArtifactWebhookEvent } from \"./plugnmeet_room_artifacts_pb\";\nimport { file_plugnmeet_room_artifacts } from \"./plugnmeet_room_artifacts_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_common.proto.\n */\nexport const file_plugnmeet_common: GenFile = /*@__PURE__*/\n fileDesc(\"ChZwbHVnbm1lZXRfY29tbW9uLnByb3RvEglwbHVnbm1lZXQi1QQKEUNvbW1vbk5vdGlmeUV2ZW50EhIKBWV2ZW50GAEgASgJSACIAQESLQoEcm9vbRgCIAEoCzIaLnBsdWdubWVldC5Ob3RpZnlFdmVudFJvb21IAYgBARIyCgtwYXJ0aWNpcGFudBgDIAEoCzIYLmxpdmVraXQuUGFydGljaXBhbnRJbmZvSAKIAQESOgoOcmVjb3JkaW5nX2luZm8YBCABKAsyHS5wbHVnbm1lZXQuUmVjb3JkaW5nSW5mb0V2ZW50SAOIAQESOgoOc3BlZWNoX3NlcnZpY2UYBSABKAsyHS5wbHVnbm1lZXQuU3BlZWNoU2VydmljZUV2ZW50SASIAQESJgoFdHJhY2sYBiABKAsyEi5saXZla2l0LlRyYWNrSW5mb0gFiAEBEjEKCWFuYWx5dGljcxgHIAEoCzIZLnBsdWdubWVldC5BbmFseXRpY3NFdmVudEgGiAEBEj8KDXJvb21fYXJ0aWZhY3QYCCABKAsyIy5wbHVnbm1lZXQuUm9vbUFydGlmYWN0V2ViaG9va0V2ZW50SAeIAQESDwoCaWQYCSABKAlICIgBARIbCgpjcmVhdGVkX2F0GAogASgDQgIwAUgJiAEBQggKBl9ldmVudEIHCgVfcm9vbUIOCgxfcGFydGljaXBhbnRCEQoPX3JlY29yZGluZ19pbmZvQhEKD19zcGVlY2hfc2VydmljZUIICgZfdHJhY2tCDAoKX2FuYWx5dGljc0IQCg5fcm9vbV9hcnRpZmFjdEIFCgNfaWRCDQoLX2NyZWF0ZWRfYXQi4QIKD05vdGlmeUV2ZW50Um9vbRIQCgNzaWQYASABKAlIAIgBARIUCgdyb29tX2lkGAIgASgJSAGIAQESGgoNZW1wdHlfdGltZW91dBgDIAEoDUgCiAEBEh0KEG1heF9wYXJ0aWNpcGFudHMYBCABKA1IA4gBARIeCg1jcmVhdGlvbl90aW1lGAUgASgEQgIwAUgEiAEBEiYKDmVuYWJsZWRfY29kZWNzGAYgAygLMg4ubGl2ZWtpdC5Db2RlYxIVCghtZXRhZGF0YRgHIAEoCUgFiAEBEh0KEG51bV9wYXJ0aWNpcGFudHMYCCABKA1IBogBAUIGCgRfc2lkQgoKCF9yb29tX2lkQhAKDl9lbXB0eV90aW1lb3V0QhMKEV9tYXhfcGFydGljaXBhbnRzQhAKDl9jcmVhdGlvbl90aW1lQgsKCV9tZXRhZGF0YUITChFfbnVtX3BhcnRpY2lwYW50cyKeAQoSUmVjb3JkaW5nSW5mb0V2ZW50EhEKCXJlY29yZF9pZBgBIAEoCRITCgtyZWNvcmRlcl9pZBgCIAEoCRIUCgxyZWNvcmRlcl9tc2cYAyABKAkSFgoJZmlsZV9wYXRoGAQgASgJSACIAQESFgoJZmlsZV9zaXplGAUgASgCSAGIAQFCDAoKX2ZpbGVfcGF0aEIMCgpfZmlsZV9zaXplIk8KElNwZWVjaFNlcnZpY2VFdmVudBIUCgd1c2VyX2lkGAMgASgJSACIAQESFwoLdG90YWxfdXNhZ2UYBCABKANCAjABQgoKCF91c2VyX2lkIjIKDkFuYWx5dGljc0V2ZW50EhQKB2ZpbGVfaWQYASABKAlIAIgBAUIKCghfZmlsZV9pZEKdAQoNY29tLnBsdWdubWVldEIUUGx1Z25tZWV0Q29tbW9uUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_livekit_models, file_plugnmeet_room_artifacts]);\n\n/**\n * @generated from message plugnmeet.CommonNotifyEvent\n */\nexport type CommonNotifyEvent = Message<\"plugnmeet.CommonNotifyEvent\"> & {\n /**\n * @generated from field: optional string event = 1;\n */\n event?: string;\n\n /**\n * @generated from field: optional plugnmeet.NotifyEventRoom room = 2;\n */\n room?: NotifyEventRoom;\n\n /**\n * @generated from field: optional livekit.ParticipantInfo participant = 3;\n */\n participant?: ParticipantInfo;\n\n /**\n * @generated from field: optional plugnmeet.RecordingInfoEvent recording_info = 4;\n */\n recordingInfo?: RecordingInfoEvent;\n\n /**\n * @generated from field: optional plugnmeet.SpeechServiceEvent speech_service = 5;\n */\n speechService?: SpeechServiceEvent;\n\n /**\n * @generated from field: optional livekit.TrackInfo track = 6;\n */\n track?: TrackInfo;\n\n /**\n * @generated from field: optional plugnmeet.AnalyticsEvent analytics = 7;\n */\n analytics?: AnalyticsEvent;\n\n /**\n * @generated from field: optional plugnmeet.RoomArtifactWebhookEvent room_artifact = 8;\n */\n roomArtifact?: RoomArtifactWebhookEvent;\n\n /**\n * @generated from field: optional string id = 9;\n */\n id?: string;\n\n /**\n * @generated from field: optional int64 created_at = 10 [jstype = JS_STRING];\n */\n createdAt?: string;\n};\n\n/**\n * Describes the message plugnmeet.CommonNotifyEvent.\n * Use `create(CommonNotifyEventSchema)` to create a new message.\n */\nexport const CommonNotifyEventSchema: GenMessage<CommonNotifyEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 0);\n\n/**\n * @generated from message plugnmeet.NotifyEventRoom\n */\nexport type NotifyEventRoom = Message<\"plugnmeet.NotifyEventRoom\"> & {\n /**\n * @generated from field: optional string sid = 1;\n */\n sid?: string;\n\n /**\n * @generated from field: optional string room_id = 2;\n */\n roomId?: string;\n\n /**\n * @generated from field: optional uint32 empty_timeout = 3;\n */\n emptyTimeout?: number;\n\n /**\n * @generated from field: optional uint32 max_participants = 4;\n */\n maxParticipants?: number;\n\n /**\n * @generated from field: optional uint64 creation_time = 5 [jstype = JS_STRING];\n */\n creationTime?: string;\n\n /**\n * @generated from field: repeated livekit.Codec enabled_codecs = 6;\n */\n enabledCodecs: Codec[];\n\n /**\n * @generated from field: optional string metadata = 7;\n */\n metadata?: string;\n\n /**\n * @generated from field: optional uint32 num_participants = 8;\n */\n numParticipants?: number;\n};\n\n/**\n * Describes the message plugnmeet.NotifyEventRoom.\n * Use `create(NotifyEventRoomSchema)` to create a new message.\n */\nexport const NotifyEventRoomSchema: GenMessage<NotifyEventRoom> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 1);\n\n/**\n * @generated from message plugnmeet.RecordingInfoEvent\n */\nexport type RecordingInfoEvent = Message<\"plugnmeet.RecordingInfoEvent\"> & {\n /**\n * @generated from field: string record_id = 1;\n */\n recordId: string;\n\n /**\n * @generated from field: string recorder_id = 2;\n */\n recorderId: string;\n\n /**\n * @generated from field: string recorder_msg = 3;\n */\n recorderMsg: string;\n\n /**\n * @generated from field: optional string file_path = 4;\n */\n filePath?: string;\n\n /**\n * @generated from field: optional float file_size = 5;\n */\n fileSize?: number;\n};\n\n/**\n * Describes the message plugnmeet.RecordingInfoEvent.\n * Use `create(RecordingInfoEventSchema)` to create a new message.\n */\nexport const RecordingInfoEventSchema: GenMessage<RecordingInfoEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 2);\n\n/**\n * @generated from message plugnmeet.SpeechServiceEvent\n */\nexport type SpeechServiceEvent = Message<\"plugnmeet.SpeechServiceEvent\"> & {\n /**\n * @generated from field: optional string user_id = 3;\n */\n userId?: string;\n\n /**\n * @generated from field: int64 total_usage = 4 [jstype = JS_STRING];\n */\n totalUsage: string;\n};\n\n/**\n * Describes the message plugnmeet.SpeechServiceEvent.\n * Use `create(SpeechServiceEventSchema)` to create a new message.\n */\nexport const SpeechServiceEventSchema: GenMessage<SpeechServiceEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 3);\n\n/**\n * @generated from message plugnmeet.AnalyticsEvent\n */\nexport type AnalyticsEvent = Message<\"plugnmeet.AnalyticsEvent\"> & {\n /**\n * @generated from field: optional string file_id = 1;\n */\n fileId?: string;\n};\n\n/**\n * Describes the message plugnmeet.AnalyticsEvent.\n * Use `create(AnalyticsEventSchema)` to create a new message.\n */\nexport const AnalyticsEventSchema: GenMessage<AnalyticsEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_common, 4);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_room_artifacts.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_room_artifacts.proto.\n */\nexport const file_plugnmeet_room_artifacts: GenFile = /*@__PURE__*/\n fileDesc(\"Ch5wbHVnbm1lZXRfcm9vbV9hcnRpZmFjdHMucHJvdG8SCXBsdWdubWVldCJTChRSb29tQXJ0aWZhY3RGaWxlSW5mbxIRCglmaWxlX3BhdGgYASABKAkSFQoJZmlsZV9zaXplGAIgASgDQgIwARIRCgltaW1lX3R5cGUYAyABKAkiQAobUm9vbUFydGlmYWN0UHJvdmlkZXJKb2JJbmZvEg4KBmpvYl9pZBgBIAEoCRIRCglmaWxlX25hbWUYAiABKAkiQwoUUm9vbUFydGlmYWN0VXNlckluZm8SDwoHdXNlcl9pZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQFCBwoFX25hbWUixQMKFlJvb21BcnRpZmFjdFRva2VuVXNhZ2USFQoNcHJvbXB0X3Rva2VucxgBIAEoDRIZChFjb21wbGV0aW9uX3Rva2VucxgCIAEoDRIUCgx0b3RhbF90b2tlbnMYAyABKA0SQwoJYnJlYWtkb3duGAQgAygLMjAucGx1Z25tZWV0LlJvb21BcnRpZmFjdFRva2VuVXNhZ2UuQnJlYWtkb3duRW50cnkSKQoccHJvbXB0X3Rva2Vuc19lc3RpbWF0ZWRfY29zdBgFIAEoAUgAiAEBEi0KIGNvbXBsZXRpb25fdG9rZW5zX2VzdGltYXRlZF9jb3N0GAYgASgBSAGIAQESKAobdG90YWxfdG9rZW5zX2VzdGltYXRlZF9jb3N0GAcgASgBSAKIAQEaNAoOQnJlYWtkb3duRW50cnkSCwoDa2V5GAEgASgJEhEKBXZhbHVlGAIgASgDQgIwAToCOAFCHwodX3Byb21wdF90b2tlbnNfZXN0aW1hdGVkX2Nvc3RCIwohX2NvbXBsZXRpb25fdG9rZW5zX2VzdGltYXRlZF9jb3N0Qh4KHF90b3RhbF90b2tlbnNfZXN0aW1hdGVkX2Nvc3Qi+QEKGVJvb21BcnRpZmFjdER1cmF0aW9uVXNhZ2USFAoMZHVyYXRpb25fc2VjGAEgASgNEkYKCWJyZWFrZG93bhgCIAMoCzIzLnBsdWdubWVldC5Sb29tQXJ0aWZhY3REdXJhdGlvblVzYWdlLkJyZWFrZG93bkVudHJ5EigKG2R1cmF0aW9uX3NlY19lc3RpbWF0ZWRfY29zdBgDIAEoAUgAiAEBGjQKDkJyZWFrZG93bkVudHJ5EgsKA2tleRgBIAEoCRIRCgV2YWx1ZRgCIAEoA0ICMAE6AjgBQh4KHF9kdXJhdGlvbl9zZWNfZXN0aW1hdGVkX2Nvc3QikQIKH1Jvb21BcnRpZmFjdENoYXJhY3RlckNvdW50VXNhZ2USGAoQdG90YWxfY2hhcmFjdGVycxgBIAEoDRJMCglicmVha2Rvd24YAiADKAsyOS5wbHVnbm1lZXQuUm9vbUFydGlmYWN0Q2hhcmFjdGVyQ291bnRVc2FnZS5CcmVha2Rvd25FbnRyeRIsCh90b3RhbF9jaGFyYWN0ZXJzX2VzdGltYXRlZF9jb3N0GAMgASgBSACIAQEaNAoOQnJlYWtkb3duRW50cnkSCwoDa2V5GAEgASgJEhEKBXZhbHVlGAIgASgDQgIwAToCOAFCIgogX3RvdGFsX2NoYXJhY3RlcnNfZXN0aW1hdGVkX2Nvc3Qi1wMKFFJvb21BcnRpZmFjdE1ldGFkYXRhEjIKCXVzZXJfaW5mbxgBIAEoCzIfLnBsdWdubWVldC5Sb29tQXJ0aWZhY3RVc2VySW5mbxJBChFwcm92aWRlcl9qb2JfaW5mbxgCIAEoCzImLnBsdWdubWVldC5Sb29tQXJ0aWZhY3RQcm92aWRlckpvYkluZm8SMgoJZmlsZV9pbmZvGAMgASgLMh8ucGx1Z25tZWV0LlJvb21BcnRpZmFjdEZpbGVJbmZvEjgKC3Rva2VuX3VzYWdlGAQgASgLMiEucGx1Z25tZWV0LlJvb21BcnRpZmFjdFRva2VuVXNhZ2VIABI+Cg5kdXJhdGlvbl91c2FnZRgFIAEoCzIkLnBsdWdubWVldC5Sb29tQXJ0aWZhY3REdXJhdGlvblVzYWdlSAASSwoVY2hhcmFjdGVyX2NvdW50X3VzYWdlGAYgASgLMioucGx1Z25tZWV0LlJvb21BcnRpZmFjdENoYXJhY3RlckNvdW50VXNhZ2VIABIiChVyZWZlcmVuY2VfYXJ0aWZhY3RfaWQYCiABKAlIAYgBAUIPCg11c2FnZV9kZXRhaWxzQhgKFl9yZWZlcmVuY2VfYXJ0aWZhY3RfaWQijQEKGFJvb21BcnRpZmFjdFdlYmhvb2tFdmVudBIpCgR0eXBlGAEgASgOMhsucGx1Z25tZWV0LlJvb21BcnRpZmFjdFR5cGUSEwoLYXJ0aWZhY3RfaWQYAiABKAkSMQoIbWV0YWRhdGEYAyABKAsyHy5wbHVnbm1lZXQuUm9vbUFydGlmYWN0TWV0YWRhdGEqrQIKEFJvb21BcnRpZmFjdFR5cGUSFAoQVU5LTk9XTl9BUlRJRkFDVBAAEhUKEU1FRVRJTkdfQU5BTFlUSUNTEAESEwoPTUVFVElOR19TVU1NQVJZEAISGQoVTUVFVElOR19TVU1NQVJZX1VTQUdFEAMSGAoUU1BFRUNIX1RSQU5TQ1JJUFRJT04QBBIeChpTUEVFQ0hfVFJBTlNDUklQVElPTl9VU0FHRRAFEhwKGFNZTlRIRVNJWkVEX1NQRUVDSF9VU0FHRRAGEhoKFkNIQVRfVFJBTlNMQVRJT05fVVNBR0UQBxIiCh5BSV9URVhUX0NIQVRfSU5URVJBQ1RJT05fVVNBR0UQCBIkCiBBSV9URVhUX0NIQVRfU1VNTUFSSVpBVElPTl9VU0FHRRAJQqQBCg1jb20ucGx1Z25tZWV0QhtQbHVnbm1lZXRSb29tQXJ0aWZhY3RzUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * FileInfo contains details about a generated file artifact.\n *\n * @generated from message plugnmeet.RoomArtifactFileInfo\n */\nexport type RoomArtifactFileInfo = Message<\"plugnmeet.RoomArtifactFileInfo\"> & {\n /**\n * @generated from field: string file_path = 1;\n */\n filePath: string;\n\n /**\n * @generated from field: int64 file_size = 2 [jstype = JS_STRING];\n */\n fileSize: string;\n\n /**\n * @generated from field: string mime_type = 3;\n */\n mimeType: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactFileInfo.\n * Use `create(RoomArtifactFileInfoSchema)` to create a new message.\n */\nexport const RoomArtifactFileInfoSchema: GenMessage<RoomArtifactFileInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 0);\n\n/**\n * ProviderJobInfo contains details about an asynchronous job sent to a provider.\n *\n * @generated from message plugnmeet.RoomArtifactProviderJobInfo\n */\nexport type RoomArtifactProviderJobInfo = Message<\"plugnmeet.RoomArtifactProviderJobInfo\"> & {\n /**\n * @generated from field: string job_id = 1;\n */\n jobId: string;\n\n /**\n * @generated from field: string file_name = 2;\n */\n fileName: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactProviderJobInfo.\n * Use `create(RoomArtifactProviderJobInfoSchema)` to create a new message.\n */\nexport const RoomArtifactProviderJobInfoSchema: GenMessage<RoomArtifactProviderJobInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 1);\n\n/**\n * UserInfo contains details about the user associated with an artifact.\n *\n * @generated from message plugnmeet.RoomArtifactUserInfo\n */\nexport type RoomArtifactUserInfo = Message<\"plugnmeet.RoomArtifactUserInfo\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: optional string name = 2;\n */\n name?: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactUserInfo.\n * Use `create(RoomArtifactUserInfoSchema)` to create a new message.\n */\nexport const RoomArtifactUserInfoSchema: GenMessage<RoomArtifactUserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 2);\n\n/**\n * @generated from message plugnmeet.RoomArtifactTokenUsage\n */\nexport type RoomArtifactTokenUsage = Message<\"plugnmeet.RoomArtifactTokenUsage\"> & {\n /**\n * @generated from field: uint32 prompt_tokens = 1;\n */\n promptTokens: number;\n\n /**\n * @generated from field: uint32 completion_tokens = 2;\n */\n completionTokens: number;\n\n /**\n * @generated from field: uint32 total_tokens = 3;\n */\n totalTokens: number;\n\n /**\n * @generated from field: map<string, int64> breakdown = 4;\n */\n breakdown: { [key: string]: bigint };\n\n /**\n * @generated from field: optional double prompt_tokens_estimated_cost = 5;\n */\n promptTokensEstimatedCost?: number;\n\n /**\n * @generated from field: optional double completion_tokens_estimated_cost = 6;\n */\n completionTokensEstimatedCost?: number;\n\n /**\n * @generated from field: optional double total_tokens_estimated_cost = 7;\n */\n totalTokensEstimatedCost?: number;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactTokenUsage.\n * Use `create(RoomArtifactTokenUsageSchema)` to create a new message.\n */\nexport const RoomArtifactTokenUsageSchema: GenMessage<RoomArtifactTokenUsage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 3);\n\n/**\n * @generated from message plugnmeet.RoomArtifactDurationUsage\n */\nexport type RoomArtifactDurationUsage = Message<\"plugnmeet.RoomArtifactDurationUsage\"> & {\n /**\n * @generated from field: uint32 duration_sec = 1;\n */\n durationSec: number;\n\n /**\n * @generated from field: map<string, int64> breakdown = 2;\n */\n breakdown: { [key: string]: bigint };\n\n /**\n * @generated from field: optional double duration_sec_estimated_cost = 3;\n */\n durationSecEstimatedCost?: number;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactDurationUsage.\n * Use `create(RoomArtifactDurationUsageSchema)` to create a new message.\n */\nexport const RoomArtifactDurationUsageSchema: GenMessage<RoomArtifactDurationUsage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 4);\n\n/**\n * @generated from message plugnmeet.RoomArtifactCharacterCountUsage\n */\nexport type RoomArtifactCharacterCountUsage = Message<\"plugnmeet.RoomArtifactCharacterCountUsage\"> & {\n /**\n * @generated from field: uint32 total_characters = 1;\n */\n totalCharacters: number;\n\n /**\n * @generated from field: map<string, int64> breakdown = 2;\n */\n breakdown: { [key: string]: bigint };\n\n /**\n * @generated from field: optional double total_characters_estimated_cost = 3;\n */\n totalCharactersEstimatedCost?: number;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactCharacterCountUsage.\n * Use `create(RoomArtifactCharacterCountUsageSchema)` to create a new message.\n */\nexport const RoomArtifactCharacterCountUsageSchema: GenMessage<RoomArtifactCharacterCountUsage> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 5);\n\n/**\n * RoomArtifactMetadata is the universal structure for the 'metadata' JSON field\n * in the pnm_room_artifacts table. All fields are optional.\n *\n * @generated from message plugnmeet.RoomArtifactMetadata\n */\nexport type RoomArtifactMetadata = Message<\"plugnmeet.RoomArtifactMetadata\"> & {\n /**\n * Optional: Information about the user who initiated or is associated with the artifact.\n *\n * @generated from field: plugnmeet.RoomArtifactUserInfo user_info = 1;\n */\n userInfo?: RoomArtifactUserInfo;\n\n /**\n * Optional: Information about an asynchronous provider job.\n *\n * @generated from field: plugnmeet.RoomArtifactProviderJobInfo provider_job_info = 2;\n */\n providerJobInfo?: RoomArtifactProviderJobInfo;\n\n /**\n * Optional: Information about the final generated file artifact.\n *\n * @generated from field: plugnmeet.RoomArtifactFileInfo file_info = 3;\n */\n fileInfo?: RoomArtifactFileInfo;\n\n /**\n * A field for different types of usage metrics.\n *\n * @generated from oneof plugnmeet.RoomArtifactMetadata.usage_details\n */\n usageDetails: {\n /**\n * @generated from field: plugnmeet.RoomArtifactTokenUsage token_usage = 4;\n */\n value: RoomArtifactTokenUsage;\n case: \"tokenUsage\";\n } | {\n /**\n * @generated from field: plugnmeet.RoomArtifactDurationUsage duration_usage = 5;\n */\n value: RoomArtifactDurationUsage;\n case: \"durationUsage\";\n } | {\n /**\n * @generated from field: plugnmeet.RoomArtifactCharacterCountUsage character_count_usage = 6;\n */\n value: RoomArtifactCharacterCountUsage;\n case: \"characterCountUsage\";\n } | { case: undefined; value?: undefined };\n\n /**\n * A field to link a file artifact back to its usage artifact.\n *\n * @generated from field: optional string reference_artifact_id = 10;\n */\n referenceArtifactId?: string;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactMetadata.\n * Use `create(RoomArtifactMetadataSchema)` to create a new message.\n */\nexport const RoomArtifactMetadataSchema: GenMessage<RoomArtifactMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 6);\n\n/**\n * Webhook-specific Messages\n *\n * @generated from message plugnmeet.RoomArtifactWebhookEvent\n */\nexport type RoomArtifactWebhookEvent = Message<\"plugnmeet.RoomArtifactWebhookEvent\"> & {\n /**\n * @generated from field: plugnmeet.RoomArtifactType type = 1;\n */\n type: RoomArtifactType;\n\n /**\n * @generated from field: string artifact_id = 2;\n */\n artifactId: string;\n\n /**\n * @generated from field: plugnmeet.RoomArtifactMetadata metadata = 3;\n */\n metadata?: RoomArtifactMetadata;\n};\n\n/**\n * Describes the message plugnmeet.RoomArtifactWebhookEvent.\n * Use `create(RoomArtifactWebhookEventSchema)` to create a new message.\n */\nexport const RoomArtifactWebhookEventSchema: GenMessage<RoomArtifactWebhookEvent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_room_artifacts, 7);\n\n/**\n * @generated from enum plugnmeet.RoomArtifactType\n */\nexport enum RoomArtifactType {\n /**\n * @generated from enum value: UNKNOWN_ARTIFACT = 0;\n */\n UNKNOWN_ARTIFACT = 0,\n\n /**\n * @generated from enum value: MEETING_ANALYTICS = 1;\n */\n MEETING_ANALYTICS = 1,\n\n /**\n * @generated from enum value: MEETING_SUMMARY = 2;\n */\n MEETING_SUMMARY = 2,\n\n /**\n * @generated from enum value: MEETING_SUMMARY_USAGE = 3;\n */\n MEETING_SUMMARY_USAGE = 3,\n\n /**\n * @generated from enum value: SPEECH_TRANSCRIPTION = 4;\n */\n SPEECH_TRANSCRIPTION = 4,\n\n /**\n * @generated from enum value: SPEECH_TRANSCRIPTION_USAGE = 5;\n */\n SPEECH_TRANSCRIPTION_USAGE = 5,\n\n /**\n * @generated from enum value: SYNTHESIZED_SPEECH_USAGE = 6;\n */\n SYNTHESIZED_SPEECH_USAGE = 6,\n\n /**\n * @generated from enum value: CHAT_TRANSLATION_USAGE = 7;\n */\n CHAT_TRANSLATION_USAGE = 7,\n\n /**\n * @generated from enum value: AI_TEXT_CHAT_INTERACTION_USAGE = 8;\n */\n AI_TEXT_CHAT_INTERACTION_USAGE = 8,\n\n /**\n * @generated from enum value: AI_TEXT_CHAT_SUMMARIZATION_USAGE = 9;\n */\n AI_TEXT_CHAT_SUMMARIZATION_USAGE = 9,\n}\n\n/**\n * Describes the enum plugnmeet.RoomArtifactType.\n */\nexport const RoomArtifactTypeSchema: GenEnum<RoomArtifactType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_room_artifacts, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_create_room.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { LockSettings } from \"./plugnmeet_gen_token_pb\";\nimport { file_plugnmeet_gen_token } from \"./plugnmeet_gen_token_pb\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { IngressInput } from \"./plugnmeet_ingress_pb\";\nimport { file_plugnmeet_ingress } from \"./plugnmeet_ingress_pb\";\nimport type { ActiveRoomInfo } from \"./plugnmeet_auth_room_pb\";\nimport { file_plugnmeet_auth_room } from \"./plugnmeet_auth_room_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_create_room.proto.\n */\nexport const file_plugnmeet_create_room: GenFile = /*@__PURE__*/\n fileDesc(\"ChtwbHVnbm1lZXRfY3JlYXRlX3Jvb20ucHJvdG8SCXBsdWdubWVldCLMAgoNQ3JlYXRlUm9vbVJlcRKTAQoHcm9vbV9pZBgBIAEoCUKBAbpIfroBewoOcm9vbV9pZF9mb3JtYXQSR3Jvb21faWQgc2hvdWxkIG9ubHkgY29udGFpbiBBU0NJSSBsZXR0ZXJzIChhLXogQS1aKSwgZGlnaXRzICgwLTkpIG9yIC1fGiB0aGlzLm1hdGNoZXMoJ15bYS16QS1aMC05LV9dKyQnKRIjCg1lbXB0eV90aW1lb3V0GAIgASgNQge6SAQqAiAASACIAQESJgoQbWF4X3BhcnRpY2lwYW50cxgDIAEoDUIHukgEKgIgAEgBiAEBEjEKCG1ldGFkYXRhGAQgASgLMhcucGx1Z25tZWV0LlJvb21NZXRhZGF0YUIGukgDyAEBQhAKDl9lbXB0eV90aW1lb3V0QhMKEV9tYXhfcGFydGljaXBhbnRzItYGCgxSb29tTWV0YWRhdGESGgoKcm9vbV90aXRsZRgBIAEoCUIGukgDyAEBEhwKD3dlbGNvbWVfbWVzc2FnZRgCIAEoCUgAiAEBEh0KDGlzX3JlY29yZGluZxgDIAEoCEIHukgEagIIABIfCg5pc19hY3RpdmVfcnRtcBgEIAEoCEIHukgEagIIABJ2Cg5wYXJlbnRfcm9vbV9pZBgFIAEoCUJeukhbugFYChVwYXJlbnRfcm9vbV9pZF9mb3JtYXQSK3BhcmVudF9yb29tX2lkIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKRIhChBpc19icmVha291dF9yb29tGAYgASgIQge6SARqAggAEiIKC3dlYmhvb2tfdXJsGAcgASgJQgi6SAVyA4gBAUgBiAEBEh0KCnN0YXJ0ZWRfYXQYCCABKARCCTABukgEMgIIABIhCgpsb2dvdXRfdXJsGAkgASgJQgi6SAVyA4gBAUgCiAEBEjwKDXJvb21fZmVhdHVyZXMYCiABKAsyHS5wbHVnbm1lZXQuUm9vbUNyZWF0ZUZlYXR1cmVzQga6SAPIAQESNgoVZGVmYXVsdF9sb2NrX3NldHRpbmdzGAsgASgLMhcucGx1Z25tZWV0LkxvY2tTZXR0aW5ncxIwCg5jb3B5cmlnaHRfY29uZhgMIAEoCzIYLnBsdWdubWVldC5Db3B5cmlnaHRDb25mEnIKC21ldGFkYXRhX2lkGA0gASgJQli6SFW6AVIKEm1ldGFkYXRhX2lkX2Zvcm1hdBIobWV0YWRhdGFfaWQgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSAOIAQESOgoKZXh0cmFfZGF0YRgOIAMoCzImLnBsdWdubWVldC5Sb29tTWV0YWRhdGEuRXh0cmFEYXRhRW50cnkaMAoORXh0cmFEYXRhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUISChBfd2VsY29tZV9tZXNzYWdlQg4KDF93ZWJob29rX3VybEINCgtfbG9nb3V0X3VybEIOCgxfbWV0YWRhdGFfaWQi/QoKElJvb21DcmVhdGVGZWF0dXJlcxIVCg1hbGxvd193ZWJjYW1zGAEgASgIEhUKDW11dGVfb25fc3RhcnQYAiABKAgSGgoSYWxsb3dfc2NyZWVuX3NoYXJlGAMgASgIEhIKCmFsbG93X3J0bXAYBCABKAgSIAoYYWxsb3dfdmlld19vdGhlcl93ZWJjYW1zGAUgASgIEiMKG2FsbG93X3ZpZXdfb3RoZXJfdXNlcnNfbGlzdBgGIAEoCBIaChJhZG1pbl9vbmx5X3dlYmNhbXMYByABKAgSHAoLYWxsb3dfcG9sbHMYCCABKAhCAhgBSACIAQESHgoNcm9vbV9kdXJhdGlvbhgJIAEoBEICMAFIAYgBARIYChBlbmFibGVfYW5hbHl0aWNzGAogASgIEh0KEGFsbG93X3ZpcnR1YWxfYmcYCyABKAhIAogBARIdChBhbGxvd19yYWlzZV9oYW5kGAwgASgISAOIAQESHQoQYXV0b19nZW5fdXNlcl9pZBgNIAEoCEgEiAEBEjgKEnJlY29yZGluZ19mZWF0dXJlcxgOIAEoCzIcLnBsdWdubWVldC5SZWNvcmRpbmdGZWF0dXJlcxIuCg1jaGF0X2ZlYXR1cmVzGA8gASgLMhcucGx1Z25tZWV0LkNoYXRGZWF0dXJlcxJCChhzaGFyZWRfbm90ZV9wYWRfZmVhdHVyZXMYECABKAsyIC5wbHVnbm1lZXQuU2hhcmVkTm90ZVBhZEZlYXR1cmVzEjoKE3doaXRlYm9hcmRfZmVhdHVyZXMYESABKAsyHS5wbHVnbm1lZXQuV2hpdGVib2FyZEZlYXR1cmVzEk4KHmV4dGVybmFsX21lZGlhX3BsYXllcl9mZWF0dXJlcxgSIAEoCzImLnBsdWdubWVldC5FeHRlcm5hbE1lZGlhUGxheWVyRmVhdHVyZXMSPQoVd2FpdGluZ19yb29tX2ZlYXR1cmVzGBMgASgLMh4ucGx1Z25tZWV0LldhaXRpbmdSb29tRmVhdHVyZXMSPwoWYnJlYWtvdXRfcm9vbV9mZWF0dXJlcxgUIAEoCzIfLnBsdWdubWVldC5CcmVha291dFJvb21GZWF0dXJlcxJOCh5kaXNwbGF5X2V4dGVybmFsX2xpbmtfZmVhdHVyZXMYFSABKAsyJi5wbHVnbm1lZXQuRGlzcGxheUV4dGVybmFsTGlua0ZlYXR1cmVzEjQKEGluZ3Jlc3NfZmVhdHVyZXMYFiABKAsyGi5wbHVnbm1lZXQuSW5ncmVzc0ZlYXR1cmVzElsKI3NwZWVjaF90b190ZXh0X3RyYW5zbGF0aW9uX2ZlYXR1cmVzGBcgASgLMioucGx1Z25tZWV0LlNwZWVjaFRvVGV4dFRyYW5zbGF0aW9uRmVhdHVyZXNCAhgBEk0KHmVuZF90b19lbmRfZW5jcnlwdGlvbl9mZWF0dXJlcxgYIAEoCzIlLnBsdWdubWVldC5FbmRUb0VuZEVuY3J5cHRpb25GZWF0dXJlcxIwCg5wb2xsc19mZWF0dXJlcxgZIAEoCzIYLnBsdWdubWVldC5Qb2xsc0ZlYXR1cmVzEjYKEWluc2lnaHRzX2ZlYXR1cmVzGBogASgLMhsucGx1Z25tZWV0Lkluc2lnaHRzRmVhdHVyZXMSOgoUc2lwX2RpYWxfaW5fZmVhdHVyZXMYGyABKAsyHC5wbHVnbm1lZXQuU2lwRGlhbEluRmVhdHVyZXNCDgoMX2FsbG93X3BvbGxzQhAKDl9yb29tX2R1cmF0aW9uQhMKEV9hbGxvd192aXJ0dWFsX2JnQhMKEV9hbGxvd19yYWlzZV9oYW5kQhMKEV9hdXRvX2dlbl91c2VyX2lkIvIBCgxDaGF0RmVhdHVyZXMSGwoKYWxsb3dfY2hhdBgBIAEoCEICGAFIAIgBARIiChFhbGxvd19maWxlX3VwbG9hZBgCIAEoCEICGAFIAYgBARIQCghpc19hbGxvdxgFIAEoCBIcChRpc19hbGxvd19maWxlX3VwbG9hZBgGIAEoCBIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYAyADKAkSHgoNbWF4X2ZpbGVfc2l6ZRgEIAEoBEICMAFIAogBAUINCgtfYWxsb3dfY2hhdEIUChJfYWxsb3dfZmlsZV91cGxvYWRCEAoOX21heF9maWxlX3NpemUizwQKFVNoYXJlZE5vdGVQYWRGZWF0dXJlcxIoChdhbGxvd2VkX3NoYXJlZF9ub3RlX3BhZBgBIAEoCEICGAFIAIgBARIQCghpc19hbGxvdxgIIAEoCBIaCglpc19hY3RpdmUYAiABKAhCB7pIBGoCCAASGAoHdmlzaWJsZRgDIAEoCEIHukgEagIIABJhCgdub2RlX2lkGAQgASgJQlC6SE26AUoKDm5vZGVfaWRfZm9ybWF0EiRub2RlX2lkIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKRJYCgRob3N0GAUgASgJQkq6SEe6AUQKC2hvc3RfZm9ybWF0EiFob3N0IHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKRJtCgtub3RlX3BhZF9pZBgGIAEoCUJYukhVugFSChJub3RlX3BhZF9pZF9mb3JtYXQSKG5vdGVfcGFkX2lkIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKRJ8ChByZWFkX29ubHlfcGFkX2lkGAcgASgJQmK6SF+6AVwKF3JlYWRfb25seV9wYWRfaWRfZm9ybWF0Ei1yZWFkX29ubHlfcGFkX2lkIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKUIaChhfYWxsb3dlZF9zaGFyZWRfbm90ZV9wYWQi5wQKEldoaXRlYm9hcmRGZWF0dXJlcxIjChJhbGxvd2VkX3doaXRlYm9hcmQYASABKAhCAhgBSACIAQESEAoIaXNfYWxsb3cYCSABKAgSGAoHdmlzaWJsZRgCIAEoCEIHukgEagIIABIjCgxwcmVsb2FkX2ZpbGUYAyABKAlCCLpIBXIDiAEBSAGIAQESggEKEndoaXRlYm9hcmRfZmlsZV9pZBgEIAEoCUJmukhjugFgChl3aGl0ZWJvYXJkX2ZpbGVfaWRfZm9ybWF0Ei93aGl0ZWJvYXJkX2ZpbGVfaWQgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpEmcKCWZpbGVfbmFtZRgFIAEoCUJUukhRugFOChBmaWxlX25hbWVfZm9ybWF0EiZmaWxlX25hbWUgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpEmcKCWZpbGVfcGF0aBgGIAEoCUJUukhRugFOChBmaWxlX3BhdGhfZm9ybWF0EiZmaWxlX3BhdGggc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpEhMKC3RvdGFsX3BhZ2VzGAcgASgNEi0KFW1heF9hbGxvd2VkX2ZpbGVfc2l6ZRgIIAEoBEIJMAG6SAQyAggASAKIAQFCFQoTX2FsbG93ZWRfd2hpdGVib2FyZEIPCg1fcHJlbG9hZF9maWxlQhgKFl9tYXhfYWxsb3dlZF9maWxlX3NpemUi/QIKG0V4dGVybmFsTWVkaWFQbGF5ZXJGZWF0dXJlcxIuCh1hbGxvd2VkX2V4dGVybmFsX21lZGlhX3BsYXllchgBIAEoCEICGAFIAIgBARIQCghpc19hbGxvdxgFIAEoCBIaCglpc19hY3RpdmUYAiABKAhCB7pIBGoCCAASbAoJc2hhcmVkX2J5GAMgASgJQlS6SFG6AU4KEHNoYXJlZF9ieV9mb3JtYXQSJnNoYXJlZF9ieSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJylIAYgBARJaCgN1cmwYBCABKAlCSLpIRboBQgoKdXJsX2Zvcm1hdBIgdXJsIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKUgCiAEBQiAKHl9hbGxvd2VkX2V4dGVybmFsX21lZGlhX3BsYXllckIMCgpfc2hhcmVkX2J5QgYKBF91cmwiQgoTV2FpdGluZ1Jvb21GZWF0dXJlcxIRCglpc19hY3RpdmUYASABKAgSGAoQd2FpdGluZ19yb29tX21zZxgCIAEoCSJiChRCcmVha291dFJvb21GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIaCglpc19hY3RpdmUYAiABKAhCB7pIBGoCCAASHAoUYWxsb3dlZF9udW1iZXJfcm9vbXMYAyABKA0ijQEKG0Rpc3BsYXlFeHRlcm5hbExpbmtGZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIaCglpc19hY3RpdmUYAiABKAhCB7pIBGoCCAASEQoEbGluaxgDIAEoCUgAiAEBEhYKCXNoYXJlZF9ieRgEIAEoCUgBiAEBQgcKBV9saW5rQgwKCl9zaGFyZWRfYnkinQEKEVJlY29yZGluZ0ZlYXR1cmVzEhAKCGlzX2FsbG93GAEgASgIEhYKDmlzX2FsbG93X2Nsb3VkGAIgASgIEiMKG2VuYWJsZV9hdXRvX2Nsb3VkX3JlY29yZGluZxgDIAEoCBIWCg5pc19hbGxvd19sb2NhbBgEIAEoCBIhChlvbmx5X3JlY29yZF9hZG1pbl93ZWJjYW1zGAUgASgIIpMCCg9JbmdyZXNzRmVhdHVyZXMSEAoIaXNfYWxsb3cYASABKAgSKwoKaW5wdXRfdHlwZRgCIAEoDjIXLnBsdWdubWVldC5JbmdyZXNzSW5wdXQSVQoDdXJsGAMgASgJQki6SEW6AUIKCnVybF9mb3JtYXQSIHVybCBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJykSagoKc3RyZWFtX2tleRgEIAEoCUJWukhTugFQChFzdHJlYW1fa2V5X2Zvcm1hdBInc3RyZWFtX2tleSBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJyki5wMKH1NwZWVjaFRvVGV4dFRyYW5zbGF0aW9uRmVhdHVyZXMSEAoIaXNfYWxsb3cYASABKAgSHAoUaXNfYWxsb3dfdHJhbnNsYXRpb24YAiABKAgSGwoKaXNfZW5hYmxlZBgDIAEoCEIHukgEagIIABInChZpc19lbmFibGVkX3RyYW5zbGF0aW9uGAQgASgIQge6SARqAggAEioKIm1heF9udW1fdHJhbl9sYW5nc19hbGxvd19zZWxlY3RpbmcYCyABKAUSJgoUYWxsb3dlZF9zcGVlY2hfbGFuZ3MYByADKAlCCLpIBZIBAhAAEiYKFGFsbG93ZWRfc3BlZWNoX3VzZXJzGAggAygJQgi6SAWSAQIQABIlChNhbGxvd2VkX3RyYW5zX2xhbmdzGAkgAygJQgi6SAWSAQIQABKQAQoVZGVmYXVsdF9zdWJ0aXRsZV9sYW5nGAogASgJQmy6SGm6AWYKHGRlZmF1bHRfc3VidGl0bGVfbGFuZ19mb3JtYXQSMmRlZmF1bHRfc3VidGl0bGVfbGFuZyBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJylIAIgBAUIYChZfZGVmYXVsdF9zdWJ0aXRsZV9sYW5nIqkCChpFbmRUb0VuZEVuY3J5cHRpb25GZWF0dXJlcxISCgppc19lbmFibGVkGAEgASgIEh4KFmluY2x1ZGVkX2NoYXRfbWVzc2FnZXMYAiABKAgSGwoTaW5jbHVkZWRfd2hpdGVib2FyZBgDIAEoCBIqCiJlbmFibGVkX3NlbGZfaW5zZXJ0X2VuY3J5cHRpb25fa2V5GAUgASgIEnsKDmVuY3J5cHRpb25fa2V5GAQgASgJQl66SFu6AVgKFWVuY3J5cHRpb25fa2V5X2Zvcm1hdBIrZW5jcnlwdGlvbl9rZXkgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSACIAQFCEQoPX2VuY3J5cHRpb25fa2V5Ij0KDVBvbGxzRmVhdHVyZXMSEAoIaXNfYWxsb3cYASABKAgSGgoJaXNfYWN0aXZlGAIgASgIQge6SARqAggAIpwDChFTaXBEaWFsSW5GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIgChhlbmFibGVfZGlhbF9pbl9vbl9jcmVhdGUYAiABKAgSGQoRaGlkZV9waG9uZV9udW1iZXIYAyABKAgSGgoJaXNfYWN0aXZlGAQgASgIQge6SARqAggAEh8KDXBob25lX251bWJlcnMYBSADKAlCCLpIBZIBAhAAEloKA3BpbhgGIAEoCUJIukhFugFCCgpwaW5fZm9ybWF0EiBwaW4gc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSACIAQESgQEKEGRpc3BhdGNoX3J1bGVfaWQYByABKAlCYrpIX7oBXAoXZGlzcGF0Y2hfcnVsZV9pZF9mb3JtYXQSLWRpc3BhdGNoX3J1bGVfaWQgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSAGIAQFCBgoEX3BpbkITChFfZGlzcGF0Y2hfcnVsZV9pZCLJAgoQSW5zaWdodHNGZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBJNChZ0cmFuc2NyaXB0aW9uX2ZlYXR1cmVzGAIgASgLMigucGx1Z25tZWV0Lkluc2lnaHRzVHJhbnNjcmlwdGlvbkZlYXR1cmVzSACIAQESUgoZY2hhdF90cmFuc2xhdGlvbl9mZWF0dXJlcxgDIAEoCzIqLnBsdWdubWVldC5JbnNpZ2h0c0NoYXRUcmFuc2xhdGlvbkZlYXR1cmVzSAGIAQESNwoLYWlfZmVhdHVyZXMYBCABKAsyHS5wbHVnbm1lZXQuSW5zaWdodHNBSUZlYXR1cmVzSAKIAQFCGQoXX3RyYW5zY3JpcHRpb25fZmVhdHVyZXNCHAoaX2NoYXRfdHJhbnNsYXRpb25fZmVhdHVyZXNCDgoMX2FpX2ZlYXR1cmVzIrUECh1JbnNpZ2h0c1RyYW5zY3JpcHRpb25GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIcChRpc19hbGxvd190cmFuc2xhdGlvbhgCIAEoCBIhChlpc19hbGxvd19zcGVlY2hfc3ludGhlc2lzGAMgASgIEhsKCmlzX2VuYWJsZWQYBCABKAhCB7pIBGoCCAASJgoUYWxsb3dlZF9zcG9rZW5fbGFuZ3MYBSADKAlCCLpIBZIBAhAAEiYKFGFsbG93ZWRfc3BlZWNoX3VzZXJzGAYgAygJQgi6SAWSAQIQABInChZpc19lbmFibGVkX3RyYW5zbGF0aW9uGAcgASgIQge6SARqAggAEikKGG1heF9zZWxlY3RlZF90cmFuc19sYW5ncxgIIAEoBUIHukgEGgIIABIlChNhbGxvd2VkX3RyYW5zX2xhbmdzGAkgAygJQgi6SAWSAQIQABKQAQoVZGVmYXVsdF9zdWJ0aXRsZV9sYW5nGAogASgJQmy6SGm6AWYKHGRlZmF1bHRfc3VidGl0bGVfbGFuZ19mb3JtYXQSMmRlZmF1bHRfc3VidGl0bGVfbGFuZyBzaG91bGQgbm90IGNvbnRhaW4gYW55IHZhbHVlGhJ0aGlzLm1hdGNoZXMoJ14kJylIAIgBARIsChtpc19lbmFibGVkX3NwZWVjaF9zeW50aGVzaXMYCyABKAhCB7pIBGoCCABCGAoWX2RlZmF1bHRfc3VidGl0bGVfbGFuZyKqAgofSW5zaWdodHNDaGF0VHJhbnNsYXRpb25GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIbCgppc19lbmFibGVkGAIgASgIQge6SARqAggAEiUKE2FsbG93ZWRfdHJhbnNfbGFuZ3MYAyADKAlCCLpIBZIBAhAAEikKGG1heF9zZWxlY3RlZF90cmFuc19sYW5ncxgEIAEoBUIHukgEGgIIABJ1CgxkZWZhdWx0X2xhbmcYBSABKAlCWrpIV7oBVAoTZGVmYXVsdF9sYW5nX2Zvcm1hdBIpZGVmYXVsdF9sYW5nIHNob3VsZCBub3QgY29udGFpbiBhbnkgdmFsdWUaEnRoaXMubWF0Y2hlcygnXiQnKUgAiAEBQg8KDV9kZWZhdWx0X2xhbmcijgIKEkluc2lnaHRzQUlGZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBJJChVhaV90ZXh0X2NoYXRfZmVhdHVyZXMYAiABKAsyJS5wbHVnbm1lZXQuSW5zaWdodHNBSVRleHRDaGF0RmVhdHVyZXNIAIgBARJeCh5tZWV0aW5nX3N1bW1hcml6YXRpb25fZmVhdHVyZXMYAyABKAsyMS5wbHVnbm1lZXQuSW5zaWdodHNBSU1lZXRpbmdTdW1tYXJpemF0aW9uRmVhdHVyZXNIAYgBAUIYChZfYWlfdGV4dF9jaGF0X2ZlYXR1cmVzQiEKH19tZWV0aW5nX3N1bW1hcml6YXRpb25fZmVhdHVyZXMilQEKGkluc2lnaHRzQUlUZXh0Q2hhdEZlYXR1cmVzEhAKCGlzX2FsbG93GAEgASgIEhsKCmlzX2VuYWJsZWQYAiABKAhCB7pIBGoCCAASJAoTaXNfYWxsb3dlZF9ldmVyeW9uZRgDIAEoCEIHukgEagIIABIiChBhbGxvd2VkX3VzZXJfaWRzGAQgAygJQgi6SAWSAQIQACJ1CiZJbnNpZ2h0c0FJTWVldGluZ1N1bW1hcml6YXRpb25GZWF0dXJlcxIQCghpc19hbGxvdxgBIAEoCBIcChRzdW1tYXJpemF0aW9uX3Byb21wdBgCIAEoCRIbCgppc19lbmFibGVkGAMgASgIQge6SARqAggAIi4KDUNvcHlyaWdodENvbmYSDwoHZGlzcGxheRgBIAEoCBIMCgR0ZXh0GAMgASgJIloKDUNyZWF0ZVJvb21SZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIsCglyb29tX2luZm8YAyABKAsyGS5wbHVnbm1lZXQuQWN0aXZlUm9vbUluZm9CoQEKDWNvbS5wbHVnbm1lZXRCGFBsdWdubWVldENyZWF0ZVJvb21Qcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\", [file_plugnmeet_gen_token, file_buf_validate_validate, file_plugnmeet_ingress, file_plugnmeet_auth_room]);\n\n/**\n * @generated from message plugnmeet.CreateRoomReq\n */\nexport type CreateRoomReq = Message<\"plugnmeet.CreateRoomReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: optional uint32 empty_timeout = 2;\n */\n emptyTimeout?: number;\n\n /**\n * @generated from field: optional uint32 max_participants = 3;\n */\n maxParticipants?: number;\n\n /**\n * @generated from field: plugnmeet.RoomMetadata metadata = 4;\n */\n metadata?: RoomMetadata;\n};\n\n/**\n * Describes the message plugnmeet.CreateRoomReq.\n * Use `create(CreateRoomReqSchema)` to create a new message.\n */\nexport const CreateRoomReqSchema: GenMessage<CreateRoomReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 0);\n\n/**\n * @generated from message plugnmeet.RoomMetadata\n */\nexport type RoomMetadata = Message<\"plugnmeet.RoomMetadata\"> & {\n /**\n * @generated from field: string room_title = 1;\n */\n roomTitle: string;\n\n /**\n * @generated from field: optional string welcome_message = 2;\n */\n welcomeMessage?: string;\n\n /**\n * @generated from field: bool is_recording = 3;\n */\n isRecording: boolean;\n\n /**\n * @generated from field: bool is_active_rtmp = 4;\n */\n isActiveRtmp: boolean;\n\n /**\n * @generated from field: string parent_room_id = 5;\n */\n parentRoomId: string;\n\n /**\n * @generated from field: bool is_breakout_room = 6;\n */\n isBreakoutRoom: boolean;\n\n /**\n * @generated from field: optional string webhook_url = 7;\n */\n webhookUrl?: string;\n\n /**\n * @generated from field: uint64 started_at = 8 [jstype = JS_STRING];\n */\n startedAt: string;\n\n /**\n * @generated from field: optional string logout_url = 9;\n */\n logoutUrl?: string;\n\n /**\n * @generated from field: plugnmeet.RoomCreateFeatures room_features = 10;\n */\n roomFeatures?: RoomCreateFeatures;\n\n /**\n * @generated from field: plugnmeet.LockSettings default_lock_settings = 11;\n */\n defaultLockSettings?: LockSettings;\n\n /**\n * @generated from field: plugnmeet.CopyrightConf copyright_conf = 12;\n */\n copyrightConf?: CopyrightConf;\n\n /**\n * we'll use this as version control\n *\n * @generated from field: optional string metadata_id = 13;\n */\n metadataId?: string;\n\n /**\n * @generated from field: map<string, string> extra_data = 14;\n */\n extraData: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.RoomMetadata.\n * Use `create(RoomMetadataSchema)` to create a new message.\n */\nexport const RoomMetadataSchema: GenMessage<RoomMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 1);\n\n/**\n * @generated from message plugnmeet.RoomCreateFeatures\n */\nexport type RoomCreateFeatures = Message<\"plugnmeet.RoomCreateFeatures\"> & {\n /**\n * @generated from field: bool allow_webcams = 1;\n */\n allowWebcams: boolean;\n\n /**\n * @generated from field: bool mute_on_start = 2;\n */\n muteOnStart: boolean;\n\n /**\n * @generated from field: bool allow_screen_share = 3;\n */\n allowScreenShare: boolean;\n\n /**\n * @generated from field: bool allow_rtmp = 4;\n */\n allowRtmp: boolean;\n\n /**\n * @generated from field: bool allow_view_other_webcams = 5;\n */\n allowViewOtherWebcams: boolean;\n\n /**\n * @generated from field: bool allow_view_other_users_list = 6;\n */\n allowViewOtherUsersList: boolean;\n\n /**\n * @generated from field: bool admin_only_webcams = 7;\n */\n adminOnlyWebcams: boolean;\n\n /**\n * deprecated use polls_features\n *\n * @generated from field: optional bool allow_polls = 8 [deprecated = true];\n * @deprecated\n */\n allowPolls?: boolean;\n\n /**\n * @generated from field: optional uint64 room_duration = 9 [jstype = JS_STRING];\n */\n roomDuration?: string;\n\n /**\n * @generated from field: bool enable_analytics = 10;\n */\n enableAnalytics: boolean;\n\n /**\n * @generated from field: optional bool allow_virtual_bg = 11;\n */\n allowVirtualBg?: boolean;\n\n /**\n * @generated from field: optional bool allow_raise_hand = 12;\n */\n allowRaiseHand?: boolean;\n\n /**\n * @generated from field: optional bool auto_gen_user_id = 13;\n */\n autoGenUserId?: boolean;\n\n /**\n * @generated from field: plugnmeet.RecordingFeatures recording_features = 14;\n */\n recordingFeatures?: RecordingFeatures;\n\n /**\n * @generated from field: plugnmeet.ChatFeatures chat_features = 15;\n */\n chatFeatures?: ChatFeatures;\n\n /**\n * @generated from field: plugnmeet.SharedNotePadFeatures shared_note_pad_features = 16;\n */\n sharedNotePadFeatures?: SharedNotePadFeatures;\n\n /**\n * @generated from field: plugnmeet.WhiteboardFeatures whiteboard_features = 17;\n */\n whiteboardFeatures?: WhiteboardFeatures;\n\n /**\n * @generated from field: plugnmeet.ExternalMediaPlayerFeatures external_media_player_features = 18;\n */\n externalMediaPlayerFeatures?: ExternalMediaPlayerFeatures;\n\n /**\n * @generated from field: plugnmeet.WaitingRoomFeatures waiting_room_features = 19;\n */\n waitingRoomFeatures?: WaitingRoomFeatures;\n\n /**\n * @generated from field: plugnmeet.BreakoutRoomFeatures breakout_room_features = 20;\n */\n breakoutRoomFeatures?: BreakoutRoomFeatures;\n\n /**\n * @generated from field: plugnmeet.DisplayExternalLinkFeatures display_external_link_features = 21;\n */\n displayExternalLinkFeatures?: DisplayExternalLinkFeatures;\n\n /**\n * @generated from field: plugnmeet.IngressFeatures ingress_features = 22;\n */\n ingressFeatures?: IngressFeatures;\n\n /**\n * deprecated use insights_features\n *\n * @generated from field: plugnmeet.SpeechToTextTranslationFeatures speech_to_text_translation_features = 23 [deprecated = true];\n * @deprecated\n */\n speechToTextTranslationFeatures?: SpeechToTextTranslationFeatures;\n\n /**\n * @generated from field: plugnmeet.EndToEndEncryptionFeatures end_to_end_encryption_features = 24;\n */\n endToEndEncryptionFeatures?: EndToEndEncryptionFeatures;\n\n /**\n * @generated from field: plugnmeet.PollsFeatures polls_features = 25;\n */\n pollsFeatures?: PollsFeatures;\n\n /**\n * @generated from field: plugnmeet.InsightsFeatures insights_features = 26;\n */\n insightsFeatures?: InsightsFeatures;\n\n /**\n * next ID: 28\n *\n * @generated from field: plugnmeet.SipDialInFeatures sip_dial_in_features = 27;\n */\n sipDialInFeatures?: SipDialInFeatures;\n};\n\n/**\n * Describes the message plugnmeet.RoomCreateFeatures.\n * Use `create(RoomCreateFeaturesSchema)` to create a new message.\n */\nexport const RoomCreateFeaturesSchema: GenMessage<RoomCreateFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 2);\n\n/**\n * @generated from message plugnmeet.ChatFeatures\n */\nexport type ChatFeatures = Message<\"plugnmeet.ChatFeatures\"> & {\n /**\n * @generated from field: optional bool allow_chat = 1 [deprecated = true];\n * @deprecated\n */\n allowChat?: boolean;\n\n /**\n * @generated from field: optional bool allow_file_upload = 2 [deprecated = true];\n * @deprecated\n */\n allowFileUpload?: boolean;\n\n /**\n * @generated from field: bool is_allow = 5;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_allow_file_upload = 6;\n */\n isAllowFileUpload: boolean;\n\n /**\n * @generated from field: repeated string allowed_file_types = 3;\n */\n allowedFileTypes: string[];\n\n /**\n * @generated from field: optional uint64 max_file_size = 4 [jstype = JS_STRING];\n */\n maxFileSize?: string;\n};\n\n/**\n * Describes the message plugnmeet.ChatFeatures.\n * Use `create(ChatFeaturesSchema)` to create a new message.\n */\nexport const ChatFeaturesSchema: GenMessage<ChatFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 3);\n\n/**\n * @generated from message plugnmeet.SharedNotePadFeatures\n */\nexport type SharedNotePadFeatures = Message<\"plugnmeet.SharedNotePadFeatures\"> & {\n /**\n * @generated from field: optional bool allowed_shared_note_pad = 1 [deprecated = true];\n * @deprecated\n */\n allowedSharedNotePad?: boolean;\n\n /**\n * @generated from field: bool is_allow = 8;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: bool visible = 3;\n */\n visible: boolean;\n\n /**\n * @generated from field: string node_id = 4;\n */\n nodeId: string;\n\n /**\n * @generated from field: string host = 5;\n */\n host: string;\n\n /**\n * @generated from field: string note_pad_id = 6;\n */\n notePadId: string;\n\n /**\n * @generated from field: string read_only_pad_id = 7;\n */\n readOnlyPadId: string;\n};\n\n/**\n * Describes the message plugnmeet.SharedNotePadFeatures.\n * Use `create(SharedNotePadFeaturesSchema)` to create a new message.\n */\nexport const SharedNotePadFeaturesSchema: GenMessage<SharedNotePadFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 4);\n\n/**\n * @generated from message plugnmeet.WhiteboardFeatures\n */\nexport type WhiteboardFeatures = Message<\"plugnmeet.WhiteboardFeatures\"> & {\n /**\n * @generated from field: optional bool allowed_whiteboard = 1 [deprecated = true];\n * @deprecated\n */\n allowedWhiteboard?: boolean;\n\n /**\n * @generated from field: bool is_allow = 9;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool visible = 2;\n */\n visible: boolean;\n\n /**\n * @generated from field: optional string preload_file = 3;\n */\n preloadFile?: string;\n\n /**\n * @generated from field: string whiteboard_file_id = 4;\n */\n whiteboardFileId: string;\n\n /**\n * @generated from field: string file_name = 5;\n */\n fileName: string;\n\n /**\n * @generated from field: string file_path = 6;\n */\n filePath: string;\n\n /**\n * @generated from field: uint32 total_pages = 7;\n */\n totalPages: number;\n\n /**\n * @generated from field: optional uint64 max_allowed_file_size = 8 [jstype = JS_STRING];\n */\n maxAllowedFileSize?: string;\n};\n\n/**\n * Describes the message plugnmeet.WhiteboardFeatures.\n * Use `create(WhiteboardFeaturesSchema)` to create a new message.\n */\nexport const WhiteboardFeaturesSchema: GenMessage<WhiteboardFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 5);\n\n/**\n * @generated from message plugnmeet.ExternalMediaPlayerFeatures\n */\nexport type ExternalMediaPlayerFeatures = Message<\"plugnmeet.ExternalMediaPlayerFeatures\"> & {\n /**\n * @generated from field: optional bool allowed_external_media_player = 1 [deprecated = true];\n * @deprecated\n */\n allowedExternalMediaPlayer?: boolean;\n\n /**\n * @generated from field: bool is_allow = 5;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: optional string shared_by = 3;\n */\n sharedBy?: string;\n\n /**\n * @generated from field: optional string url = 4;\n */\n url?: string;\n};\n\n/**\n * Describes the message plugnmeet.ExternalMediaPlayerFeatures.\n * Use `create(ExternalMediaPlayerFeaturesSchema)` to create a new message.\n */\nexport const ExternalMediaPlayerFeaturesSchema: GenMessage<ExternalMediaPlayerFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 6);\n\n/**\n * @generated from message plugnmeet.WaitingRoomFeatures\n */\nexport type WaitingRoomFeatures = Message<\"plugnmeet.WaitingRoomFeatures\"> & {\n /**\n * @generated from field: bool is_active = 1;\n */\n isActive: boolean;\n\n /**\n * @generated from field: string waiting_room_msg = 2;\n */\n waitingRoomMsg: string;\n};\n\n/**\n * Describes the message plugnmeet.WaitingRoomFeatures.\n * Use `create(WaitingRoomFeaturesSchema)` to create a new message.\n */\nexport const WaitingRoomFeaturesSchema: GenMessage<WaitingRoomFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 7);\n\n/**\n * @generated from message plugnmeet.BreakoutRoomFeatures\n */\nexport type BreakoutRoomFeatures = Message<\"plugnmeet.BreakoutRoomFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: uint32 allowed_number_rooms = 3;\n */\n allowedNumberRooms: number;\n};\n\n/**\n * Describes the message plugnmeet.BreakoutRoomFeatures.\n * Use `create(BreakoutRoomFeaturesSchema)` to create a new message.\n */\nexport const BreakoutRoomFeaturesSchema: GenMessage<BreakoutRoomFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 8);\n\n/**\n * @generated from message plugnmeet.DisplayExternalLinkFeatures\n */\nexport type DisplayExternalLinkFeatures = Message<\"plugnmeet.DisplayExternalLinkFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n\n /**\n * @generated from field: optional string link = 3;\n */\n link?: string;\n\n /**\n * @generated from field: optional string shared_by = 4;\n */\n sharedBy?: string;\n};\n\n/**\n * Describes the message plugnmeet.DisplayExternalLinkFeatures.\n * Use `create(DisplayExternalLinkFeaturesSchema)` to create a new message.\n */\nexport const DisplayExternalLinkFeaturesSchema: GenMessage<DisplayExternalLinkFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 9);\n\n/**\n * @generated from message plugnmeet.RecordingFeatures\n */\nexport type RecordingFeatures = Message<\"plugnmeet.RecordingFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_allow_cloud = 2;\n */\n isAllowCloud: boolean;\n\n /**\n * @generated from field: bool enable_auto_cloud_recording = 3;\n */\n enableAutoCloudRecording: boolean;\n\n /**\n * @generated from field: bool is_allow_local = 4;\n */\n isAllowLocal: boolean;\n\n /**\n * @generated from field: bool only_record_admin_webcams = 5;\n */\n onlyRecordAdminWebcams: boolean;\n};\n\n/**\n * Describes the message plugnmeet.RecordingFeatures.\n * Use `create(RecordingFeaturesSchema)` to create a new message.\n */\nexport const RecordingFeaturesSchema: GenMessage<RecordingFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 10);\n\n/**\n * @generated from message plugnmeet.IngressFeatures\n */\nexport type IngressFeatures = Message<\"plugnmeet.IngressFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: plugnmeet.IngressInput input_type = 2;\n */\n inputType: IngressInput;\n\n /**\n * @generated from field: string url = 3;\n */\n url: string;\n\n /**\n * @generated from field: string stream_key = 4;\n */\n streamKey: string;\n};\n\n/**\n * Describes the message plugnmeet.IngressFeatures.\n * Use `create(IngressFeaturesSchema)` to create a new message.\n */\nexport const IngressFeaturesSchema: GenMessage<IngressFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 11);\n\n/**\n * deprecated use insights_features\n *\n * @generated from message plugnmeet.SpeechToTextTranslationFeatures\n */\nexport type SpeechToTextTranslationFeatures = Message<\"plugnmeet.SpeechToTextTranslationFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_allow_translation = 2;\n */\n isAllowTranslation: boolean;\n\n /**\n * @generated from field: bool is_enabled = 3;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: bool is_enabled_translation = 4;\n */\n isEnabledTranslation: boolean;\n\n /**\n * @generated from field: int32 max_num_tran_langs_allow_selecting = 11;\n */\n maxNumTranLangsAllowSelecting: number;\n\n /**\n * @generated from field: repeated string allowed_speech_langs = 7;\n */\n allowedSpeechLangs: string[];\n\n /**\n * @generated from field: repeated string allowed_speech_users = 8;\n */\n allowedSpeechUsers: string[];\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 9;\n */\n allowedTransLangs: string[];\n\n /**\n * next ID: 12\n *\n * @generated from field: optional string default_subtitle_lang = 10;\n */\n defaultSubtitleLang?: string;\n};\n\n/**\n * Describes the message plugnmeet.SpeechToTextTranslationFeatures.\n * Use `create(SpeechToTextTranslationFeaturesSchema)` to create a new message.\n */\nexport const SpeechToTextTranslationFeaturesSchema: GenMessage<SpeechToTextTranslationFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 12);\n\n/**\n * @generated from message plugnmeet.EndToEndEncryptionFeatures\n */\nexport type EndToEndEncryptionFeatures = Message<\"plugnmeet.EndToEndEncryptionFeatures\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: bool included_chat_messages = 2;\n */\n includedChatMessages: boolean;\n\n /**\n * @generated from field: bool included_whiteboard = 3;\n */\n includedWhiteboard: boolean;\n\n /**\n * @generated from field: bool enabled_self_insert_encryption_key = 5;\n */\n enabledSelfInsertEncryptionKey: boolean;\n\n /**\n * internal fields\n *\n * @generated from field: optional string encryption_key = 4;\n */\n encryptionKey?: string;\n};\n\n/**\n * Describes the message plugnmeet.EndToEndEncryptionFeatures.\n * Use `create(EndToEndEncryptionFeaturesSchema)` to create a new message.\n */\nexport const EndToEndEncryptionFeaturesSchema: GenMessage<EndToEndEncryptionFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 13);\n\n/**\n * @generated from message plugnmeet.PollsFeatures\n */\nexport type PollsFeatures = Message<\"plugnmeet.PollsFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n};\n\n/**\n * Describes the message plugnmeet.PollsFeatures.\n * Use `create(PollsFeaturesSchema)` to create a new message.\n */\nexport const PollsFeaturesSchema: GenMessage<PollsFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 14);\n\n/**\n * @generated from message plugnmeet.SipDialInFeatures\n */\nexport type SipDialInFeatures = Message<\"plugnmeet.SipDialInFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * If true, the system will immediately prepare the room for SIP dial-in\n * by creating a dispatch rule and assigning a PIN upon creation.\n * If false, this must be done later via a separate API call.\n *\n * @generated from field: bool enable_dial_in_on_create = 2;\n */\n enableDialInOnCreate: boolean;\n\n /**\n * @generated from field: bool hide_phone_number = 3;\n */\n hidePhoneNumber: boolean;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_active = 4;\n */\n isActive: boolean;\n\n /**\n * @generated from field: repeated string phone_numbers = 5;\n */\n phoneNumbers: string[];\n\n /**\n * @generated from field: optional string pin = 6;\n */\n pin?: string;\n\n /**\n * @generated from field: optional string dispatch_rule_id = 7;\n */\n dispatchRuleId?: string;\n};\n\n/**\n * Describes the message plugnmeet.SipDialInFeatures.\n * Use `create(SipDialInFeaturesSchema)` to create a new message.\n */\nexport const SipDialInFeaturesSchema: GenMessage<SipDialInFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 15);\n\n/**\n * @generated from message plugnmeet.InsightsFeatures\n */\nexport type InsightsFeatures = Message<\"plugnmeet.InsightsFeatures\"> & {\n /**\n * Allow/disallow all insights features for this room\n *\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: optional plugnmeet.InsightsTranscriptionFeatures transcription_features = 2;\n */\n transcriptionFeatures?: InsightsTranscriptionFeatures;\n\n /**\n * @generated from field: optional plugnmeet.InsightsChatTranslationFeatures chat_translation_features = 3;\n */\n chatTranslationFeatures?: InsightsChatTranslationFeatures;\n\n /**\n * @generated from field: optional plugnmeet.InsightsAIFeatures ai_features = 4;\n */\n aiFeatures?: InsightsAIFeatures;\n};\n\n/**\n * Describes the message plugnmeet.InsightsFeatures.\n * Use `create(InsightsFeaturesSchema)` to create a new message.\n */\nexport const InsightsFeaturesSchema: GenMessage<InsightsFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 16);\n\n/**\n * @generated from message plugnmeet.InsightsTranscriptionFeatures\n */\nexport type InsightsTranscriptionFeatures = Message<\"plugnmeet.InsightsTranscriptionFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: bool is_allow_translation = 2;\n */\n isAllowTranslation: boolean;\n\n /**\n * @generated from field: bool is_allow_speech_synthesis = 3;\n */\n isAllowSpeechSynthesis: boolean;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_enabled = 4;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: repeated string allowed_spoken_langs = 5;\n */\n allowedSpokenLangs: string[];\n\n /**\n * @generated from field: repeated string allowed_speech_users = 6;\n */\n allowedSpeechUsers: string[];\n\n /**\n * @generated from field: bool is_enabled_translation = 7;\n */\n isEnabledTranslation: boolean;\n\n /**\n * @generated from field: int32 max_selected_trans_langs = 8;\n */\n maxSelectedTransLangs: number;\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 9;\n */\n allowedTransLangs: string[];\n\n /**\n * @generated from field: optional string default_subtitle_lang = 10;\n */\n defaultSubtitleLang?: string;\n\n /**\n * @generated from field: bool is_enabled_speech_synthesis = 11;\n */\n isEnabledSpeechSynthesis: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranscriptionFeatures.\n * Use `create(InsightsTranscriptionFeaturesSchema)` to create a new message.\n */\nexport const InsightsTranscriptionFeaturesSchema: GenMessage<InsightsTranscriptionFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 17);\n\n/**\n * @generated from message plugnmeet.InsightsChatTranslationFeatures\n */\nexport type InsightsChatTranslationFeatures = Message<\"plugnmeet.InsightsChatTranslationFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_enabled = 2;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 3;\n */\n allowedTransLangs: string[];\n\n /**\n * @generated from field: int32 max_selected_trans_langs = 4;\n */\n maxSelectedTransLangs: number;\n\n /**\n * @generated from field: optional string default_lang = 5;\n */\n defaultLang?: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsChatTranslationFeatures.\n * Use `create(InsightsChatTranslationFeaturesSchema)` to create a new message.\n */\nexport const InsightsChatTranslationFeaturesSchema: GenMessage<InsightsChatTranslationFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 18);\n\n/**\n * @generated from message plugnmeet.InsightsAIFeatures\n */\nexport type InsightsAIFeatures = Message<\"plugnmeet.InsightsAIFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: optional plugnmeet.InsightsAITextChatFeatures ai_text_chat_features = 2;\n */\n aiTextChatFeatures?: InsightsAITextChatFeatures;\n\n /**\n * @generated from field: optional plugnmeet.InsightsAIMeetingSummarizationFeatures meeting_summarization_features = 3;\n */\n meetingSummarizationFeatures?: InsightsAIMeetingSummarizationFeatures;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAIFeatures.\n * Use `create(InsightsAIFeaturesSchema)` to create a new message.\n */\nexport const InsightsAIFeaturesSchema: GenMessage<InsightsAIFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 19);\n\n/**\n * @generated from message plugnmeet.InsightsAITextChatFeatures\n */\nexport type InsightsAITextChatFeatures = Message<\"plugnmeet.InsightsAITextChatFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_enabled = 2;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: bool is_allowed_everyone = 3;\n */\n isAllowedEveryone: boolean;\n\n /**\n * @generated from field: repeated string allowed_user_ids = 4;\n */\n allowedUserIds: string[];\n};\n\n/**\n * Describes the message plugnmeet.InsightsAITextChatFeatures.\n * Use `create(InsightsAITextChatFeaturesSchema)` to create a new message.\n */\nexport const InsightsAITextChatFeaturesSchema: GenMessage<InsightsAITextChatFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 20);\n\n/**\n * @generated from message plugnmeet.InsightsAIMeetingSummarizationFeatures\n */\nexport type InsightsAIMeetingSummarizationFeatures = Message<\"plugnmeet.InsightsAIMeetingSummarizationFeatures\"> & {\n /**\n * @generated from field: bool is_allow = 1;\n */\n isAllow: boolean;\n\n /**\n * @generated from field: string summarization_prompt = 2;\n */\n summarizationPrompt: string;\n\n /**\n * all internal usage fields\n *\n * @generated from field: bool is_enabled = 3;\n */\n isEnabled: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAIMeetingSummarizationFeatures.\n * Use `create(InsightsAIMeetingSummarizationFeaturesSchema)` to create a new message.\n */\nexport const InsightsAIMeetingSummarizationFeaturesSchema: GenMessage<InsightsAIMeetingSummarizationFeatures> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 21);\n\n/**\n * @generated from message plugnmeet.CopyrightConf\n */\nexport type CopyrightConf = Message<\"plugnmeet.CopyrightConf\"> & {\n /**\n * @generated from field: bool display = 1;\n */\n display: boolean;\n\n /**\n * @generated from field: string text = 3;\n */\n text: string;\n};\n\n/**\n * Describes the message plugnmeet.CopyrightConf.\n * Use `create(CopyrightConfSchema)` to create a new message.\n */\nexport const CopyrightConfSchema: GenMessage<CopyrightConf> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 22);\n\n/**\n * @generated from message plugnmeet.CreateRoomRes\n */\nexport type CreateRoomRes = Message<\"plugnmeet.CreateRoomRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.ActiveRoomInfo room_info = 3;\n */\n roomInfo?: ActiveRoomInfo;\n};\n\n/**\n * Describes the message plugnmeet.CreateRoomRes.\n * Use `create(CreateRoomResSchema)` to create a new message.\n */\nexport const CreateRoomResSchema: GenMessage<CreateRoomRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_create_room, 23);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_gen_token.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_gen_token.proto.\n */\nexport const file_plugnmeet_gen_token: GenFile = /*@__PURE__*/\n fileDesc(\"ChlwbHVnbm1lZXRfZ2VuX3Rva2VuLnByb3RvEglwbHVnbm1lZXQi0QEKEEdlbmVyYXRlVG9rZW5SZXESjAEKB3Jvb21faWQYASABKAlCe7pIeLoBdQoOcm9vbV9pZF9mb3JtYXQSQXJvb21faWQgc2hvdWxkIG9ubHkgY29udGFpbiBsZXR0ZXJzIChhLXogQS1aKSwgZGlnaXRzICgwLTkpIG9yIC1fGiB0aGlzLm1hdGNoZXMoJ15bYS16QS1aMC05LV9dKyQnKRIuCgl1c2VyX2luZm8YAiABKAsyEy5wbHVnbm1lZXQuVXNlckluZm9CBrpIA8gBASKGAQoIVXNlckluZm8SFAoEbmFtZRgBIAEoCUIGukgDyAEBEg8KB3VzZXJfaWQYAiABKAkSEAoIaXNfYWRtaW4YAyABKAgSEQoJaXNfaGlkZGVuGAQgASgIEi4KDXVzZXJfbWV0YWRhdGEYBSABKAsyFy5wbHVnbm1lZXQuVXNlck1ldGFkYXRhIt0ECgxVc2VyTWV0YWRhdGESIgoLcHJvZmlsZV9waWMYASABKAlCCLpIBXIDiAEBSACIAQESEAoIaXNfYWRtaW4YAiABKAgSGgoNcmVjb3JkX3dlYmNhbRgDIAEoCEgBiAEBEh0KDGlzX3ByZXNlbnRlchgEIAEoCEIHukgEagIIABIcCgtyYWlzZWRfaGFuZBgFIAEoCEIHukgEagIIABIiChF3YWl0X2Zvcl9hcHByb3ZhbBgGIAEoCEIHukgEagIIABIbCg5wcmVmZXJyZWRfbGFuZxgHIAEoCUgCiAEBEi4KDWxvY2tfc2V0dGluZ3MYCCABKAsyFy5wbHVnbm1lZXQuTG9ja1NldHRpbmdzEnIKC21ldGFkYXRhX2lkGAkgASgJQli6SFW6AVIKEm1ldGFkYXRhX2lkX2Zvcm1hdBIobWV0YWRhdGFfaWQgc2hvdWxkIG5vdCBjb250YWluIGFueSB2YWx1ZRoSdGhpcy5tYXRjaGVzKCdeJCcpSAOIAQESOgoKZXh0cmFfZGF0YRgKIAMoCzImLnBsdWdubWVldC5Vc2VyTWV0YWRhdGEuRXh0cmFEYXRhRW50cnkSFwoKZXhfdXNlcl9pZBgLIAEoCUgEiAEBGjAKDkV4dHJhRGF0YUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDgoMX3Byb2ZpbGVfcGljQhAKDl9yZWNvcmRfd2ViY2FtQhEKD19wcmVmZXJyZWRfbGFuZ0IOCgxfbWV0YWRhdGFfaWRCDQoLX2V4X3VzZXJfaWQiawoUUGx1Z05tZWV0VG9rZW5DbGFpbXMSDAoEbmFtZRgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEg8KB3Jvb21faWQYAyABKAkSEAoIaXNfYWRtaW4YBCABKAgSEQoJaXNfaGlkZGVuGAUgASgIIugDCgxMb2NrU2V0dGluZ3MSHAoPbG9ja19taWNyb3Bob25lGAEgASgISACIAQESGAoLbG9ja193ZWJjYW0YAiABKAhIAYgBARIgChNsb2NrX3NjcmVlbl9zaGFyaW5nGAMgASgISAKIAQESFgoJbG9ja19jaGF0GAQgASgISAOIAQESIwoWbG9ja19jaGF0X3NlbmRfbWVzc2FnZRgFIAEoCEgEiAEBEiEKFGxvY2tfY2hhdF9maWxlX3NoYXJlGAYgASgISAWIAQESHgoRbG9ja19wcml2YXRlX2NoYXQYByABKAhIBogBARIcCg9sb2NrX3doaXRlYm9hcmQYCCABKAhIB4gBARIgChNsb2NrX3NoYXJlZF9ub3RlcGFkGAkgASgISAiIAQFCEgoQX2xvY2tfbWljcm9waG9uZUIOCgxfbG9ja193ZWJjYW1CFgoUX2xvY2tfc2NyZWVuX3NoYXJpbmdCDAoKX2xvY2tfY2hhdEIZChdfbG9ja19jaGF0X3NlbmRfbWVzc2FnZUIXChVfbG9ja19jaGF0X2ZpbGVfc2hhcmVCFAoSX2xvY2tfcHJpdmF0ZV9jaGF0QhIKEF9sb2NrX3doaXRlYm9hcmRCFgoUX2xvY2tfc2hhcmVkX25vdGVwYWQiTQoQR2VuZXJhdGVUb2tlblJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhIKBXRva2VuGAMgASgJSACIAQFCCAoGX3Rva2VuIowEChJDdXN0b21EZXNpZ25QYXJhbXMSGgoNcHJpbWFyeV9jb2xvchgBIAEoCUgAiAEBEhwKD3NlY29uZGFyeV9jb2xvchgCIAEoCUgBiAEBEh0KEGJhY2tncm91bmRfY29sb3IYAyABKAlIAogBARIdChBiYWNrZ3JvdW5kX2ltYWdlGAQgASgJSAOIAQESHAoPaGVhZGVyX2JnX2NvbG9yGAUgASgJSASIAQESHAoPZm9vdGVyX2JnX2NvbG9yGAYgASgJSAWIAQESHwoSbGVmdF9zaWRlX2JnX2NvbG9yGAcgASgJSAaIAQESIAoTcmlnaHRfc2lkZV9iZ19jb2xvchgIIAEoCUgHiAEBEhsKDmN1c3RvbV9jc3NfdXJsGAkgASgJSAiIAQESGAoLY3VzdG9tX2xvZ28YCiABKAlICYgBAUIQCg5fcHJpbWFyeV9jb2xvckISChBfc2Vjb25kYXJ5X2NvbG9yQhMKEV9iYWNrZ3JvdW5kX2NvbG9yQhMKEV9iYWNrZ3JvdW5kX2ltYWdlQhIKEF9oZWFkZXJfYmdfY29sb3JCEgoQX2Zvb3Rlcl9iZ19jb2xvckIVChNfbGVmdF9zaWRlX2JnX2NvbG9yQhYKFF9yaWdodF9zaWRlX2JnX2NvbG9yQhEKD19jdXN0b21fY3NzX3VybEIOCgxfY3VzdG9tX2xvZ29CnwEKDWNvbS5wbHVnbm1lZXRCFlBsdWdubWVldEdlblRva2VuUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\", [file_buf_validate_validate]);\n\n/**\n * @generated from message plugnmeet.GenerateTokenReq\n */\nexport type GenerateTokenReq = Message<\"plugnmeet.GenerateTokenReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: plugnmeet.UserInfo user_info = 2;\n */\n userInfo?: UserInfo;\n};\n\n/**\n * Describes the message plugnmeet.GenerateTokenReq.\n * Use `create(GenerateTokenReqSchema)` to create a new message.\n */\nexport const GenerateTokenReqSchema: GenMessage<GenerateTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 0);\n\n/**\n * @generated from message plugnmeet.UserInfo\n */\nexport type UserInfo = Message<\"plugnmeet.UserInfo\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: bool is_admin = 3;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: bool is_hidden = 4;\n */\n isHidden: boolean;\n\n /**\n * @generated from field: plugnmeet.UserMetadata user_metadata = 5;\n */\n userMetadata?: UserMetadata;\n};\n\n/**\n * Describes the message plugnmeet.UserInfo.\n * Use `create(UserInfoSchema)` to create a new message.\n */\nexport const UserInfoSchema: GenMessage<UserInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 1);\n\n/**\n * @generated from message plugnmeet.UserMetadata\n */\nexport type UserMetadata = Message<\"plugnmeet.UserMetadata\"> & {\n /**\n * @generated from field: optional string profile_pic = 1;\n */\n profilePic?: string;\n\n /**\n * @generated from field: bool is_admin = 2;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: optional bool record_webcam = 3;\n */\n recordWebcam?: boolean;\n\n /**\n * @generated from field: bool is_presenter = 4;\n */\n isPresenter: boolean;\n\n /**\n * @generated from field: bool raised_hand = 5;\n */\n raisedHand: boolean;\n\n /**\n * @generated from field: bool wait_for_approval = 6;\n */\n waitForApproval: boolean;\n\n /**\n * @generated from field: optional string preferred_lang = 7;\n */\n preferredLang?: string;\n\n /**\n * @generated from field: plugnmeet.LockSettings lock_settings = 8;\n */\n lockSettings?: LockSettings;\n\n /**\n * we'll use this as version control\n *\n * @generated from field: optional string metadata_id = 9;\n */\n metadataId?: string;\n\n /**\n * @generated from field: map<string, string> extra_data = 10;\n */\n extraData: { [key: string]: string };\n\n /**\n * if remain empty then will use value from user_id\n *\n * Next ID: 12\n *\n * @generated from field: optional string ex_user_id = 11;\n */\n exUserId?: string;\n};\n\n/**\n * Describes the message plugnmeet.UserMetadata.\n * Use `create(UserMetadataSchema)` to create a new message.\n */\nexport const UserMetadataSchema: GenMessage<UserMetadata> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 2);\n\n/**\n * @generated from message plugnmeet.PlugNmeetTokenClaims\n */\nexport type PlugNmeetTokenClaims = Message<\"plugnmeet.PlugNmeetTokenClaims\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_admin = 4;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: bool is_hidden = 5;\n */\n isHidden: boolean;\n};\n\n/**\n * Describes the message plugnmeet.PlugNmeetTokenClaims.\n * Use `create(PlugNmeetTokenClaimsSchema)` to create a new message.\n */\nexport const PlugNmeetTokenClaimsSchema: GenMessage<PlugNmeetTokenClaims> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 3);\n\n/**\n * @generated from message plugnmeet.LockSettings\n */\nexport type LockSettings = Message<\"plugnmeet.LockSettings\"> & {\n /**\n * @generated from field: optional bool lock_microphone = 1;\n */\n lockMicrophone?: boolean;\n\n /**\n * @generated from field: optional bool lock_webcam = 2;\n */\n lockWebcam?: boolean;\n\n /**\n * @generated from field: optional bool lock_screen_sharing = 3;\n */\n lockScreenSharing?: boolean;\n\n /**\n * @generated from field: optional bool lock_chat = 4;\n */\n lockChat?: boolean;\n\n /**\n * @generated from field: optional bool lock_chat_send_message = 5;\n */\n lockChatSendMessage?: boolean;\n\n /**\n * @generated from field: optional bool lock_chat_file_share = 6;\n */\n lockChatFileShare?: boolean;\n\n /**\n * @generated from field: optional bool lock_private_chat = 7;\n */\n lockPrivateChat?: boolean;\n\n /**\n * @generated from field: optional bool lock_whiteboard = 8;\n */\n lockWhiteboard?: boolean;\n\n /**\n * @generated from field: optional bool lock_shared_notepad = 9;\n */\n lockSharedNotepad?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.LockSettings.\n * Use `create(LockSettingsSchema)` to create a new message.\n */\nexport const LockSettingsSchema: GenMessage<LockSettings> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 4);\n\n/**\n * @generated from message plugnmeet.GenerateTokenRes\n */\nexport type GenerateTokenRes = Message<\"plugnmeet.GenerateTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string token = 3;\n */\n token?: string;\n};\n\n/**\n * Describes the message plugnmeet.GenerateTokenRes.\n * Use `create(GenerateTokenResSchema)` to create a new message.\n */\nexport const GenerateTokenResSchema: GenMessage<GenerateTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 5);\n\n/**\n * @generated from message plugnmeet.CustomDesignParams\n */\nexport type CustomDesignParams = Message<\"plugnmeet.CustomDesignParams\"> & {\n /**\n * @generated from field: optional string primary_color = 1;\n */\n primaryColor?: string;\n\n /**\n * @generated from field: optional string secondary_color = 2;\n */\n secondaryColor?: string;\n\n /**\n * @generated from field: optional string background_color = 3;\n */\n backgroundColor?: string;\n\n /**\n * @generated from field: optional string background_image = 4;\n */\n backgroundImage?: string;\n\n /**\n * @generated from field: optional string header_bg_color = 5;\n */\n headerBgColor?: string;\n\n /**\n * @generated from field: optional string footer_bg_color = 6;\n */\n footerBgColor?: string;\n\n /**\n * @generated from field: optional string left_side_bg_color = 7;\n */\n leftSideBgColor?: string;\n\n /**\n * @generated from field: optional string right_side_bg_color = 8;\n */\n rightSideBgColor?: string;\n\n /**\n * @generated from field: optional string custom_css_url = 9;\n */\n customCssUrl?: string;\n\n /**\n * @generated from field: optional string custom_logo = 10;\n */\n customLogo?: string;\n};\n\n/**\n * Describes the message plugnmeet.CustomDesignParams.\n * Use `create(CustomDesignParamsSchema)` to create a new message.\n */\nexport const CustomDesignParamsSchema: GenMessage<CustomDesignParams> = /*@__PURE__*/\n messageDesc(file_plugnmeet_gen_token, 6);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_ingress.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_ingress.proto.\n */\nexport const file_plugnmeet_ingress: GenFile = /*@__PURE__*/\n fileDesc(\"ChdwbHVnbm1lZXRfaW5ncmVzcy5wcm90bxIJcGx1Z25tZWV0ImoKEENyZWF0ZUluZ3Jlc3NSZXESKwoKaW5wdXRfdHlwZRgBIAEoDjIXLnBsdWdubWVldC5JbmdyZXNzSW5wdXQSGAoQcGFydGljaXBhbnRfbmFtZRgCIAEoCRIPCgdyb29tX2lkGAMgASgJIn0KEENyZWF0ZUluZ3Jlc3NSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIrCgppbnB1dF90eXBlGAMgASgOMhcucGx1Z25tZWV0LkluZ3Jlc3NJbnB1dBILCgN1cmwYBCABKAkSEgoKc3RyZWFtX2tleRgFIAEoCSouCgxJbmdyZXNzSW5wdXQSDgoKUlRNUF9JTlBVVBAAEg4KCldISVBfSU5QVVQQAUKeAQoNY29tLnBsdWdubWVldEIVUGx1Z25tZWV0SW5ncmVzc1Byb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\");\n\n/**\n * @generated from message plugnmeet.CreateIngressReq\n */\nexport type CreateIngressReq = Message<\"plugnmeet.CreateIngressReq\"> & {\n /**\n * @generated from field: plugnmeet.IngressInput input_type = 1;\n */\n inputType: IngressInput;\n\n /**\n * @generated from field: string participant_name = 2;\n */\n participantName: string;\n\n /**\n * @generated from field: string room_id = 3;\n */\n roomId: string;\n};\n\n/**\n * Describes the message plugnmeet.CreateIngressReq.\n * Use `create(CreateIngressReqSchema)` to create a new message.\n */\nexport const CreateIngressReqSchema: GenMessage<CreateIngressReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_ingress, 0);\n\n/**\n * @generated from message plugnmeet.CreateIngressRes\n */\nexport type CreateIngressRes = Message<\"plugnmeet.CreateIngressRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.IngressInput input_type = 3;\n */\n inputType: IngressInput;\n\n /**\n * @generated from field: string url = 4;\n */\n url: string;\n\n /**\n * @generated from field: string stream_key = 5;\n */\n streamKey: string;\n};\n\n/**\n * Describes the message plugnmeet.CreateIngressRes.\n * Use `create(CreateIngressResSchema)` to create a new message.\n */\nexport const CreateIngressResSchema: GenMessage<CreateIngressRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_ingress, 1);\n\n/**\n * @generated from enum plugnmeet.IngressInput\n */\nexport enum IngressInput {\n /**\n * @generated from enum value: RTMP_INPUT = 0;\n */\n RTMP_INPUT = 0,\n\n /**\n * @generated from enum value: WHIP_INPUT = 1;\n */\n WHIP_INPUT = 1,\n}\n\n/**\n * Describes the enum plugnmeet.IngressInput.\n */\nexport const IngressInputSchema: GenEnum<IngressInput> = /*@__PURE__*/\n enumDesc(file_plugnmeet_ingress, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_lti_v1.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_lti_v1.proto.\n */\nexport const file_plugnmeet_lti_v1: GenFile = /*@__PURE__*/\n fileDesc(\"ChZwbHVnbm1lZXRfbHRpX3YxLnByb3RvEglwbHVnbm1lZXQioAEKCUx0aUNsYWltcxIPCgd1c2VyX2lkGAEgASgJEgwKBG5hbWUYAiABKAkSEAoIaXNfYWRtaW4YAyABKAgSDwoHcm9vbV9pZBgEIAEoCRISCgpyb29tX3RpdGxlGAUgASgJEj0KFWx0aV9jdXN0b21fcGFyYW1ldGVycxgGIAEoCzIeLnBsdWdubWVldC5MdGlDdXN0b21QYXJhbWV0ZXJzIrYEChNMdGlDdXN0b21QYXJhbWV0ZXJzEh4KDXJvb21fZHVyYXRpb24YASABKARCAjABSACIAQESGAoLYWxsb3dfcG9sbHMYAiABKAhIAYgBARIiChVhbGxvd19zaGFyZWRfbm90ZV9wYWQYAyABKAhIAogBARIgChNhbGxvd19icmVha291dF9yb29tGAQgASgISAOIAQESHAoPYWxsb3dfcmVjb3JkaW5nGAUgASgISASIAQESFwoKYWxsb3dfcnRtcBgGIAEoCEgFiAEBEiUKGGFsbG93X3ZpZXdfb3RoZXJfd2ViY2FtcxgHIAEoCEgGiAEBEigKG2FsbG93X3ZpZXdfb3RoZXJfdXNlcnNfbGlzdBgIIAEoCEgHiAEBEhoKDW11dGVfb25fc3RhcnQYCSABKAhICIgBARI1ChFsdGlfY3VzdG9tX2Rlc2lnbhgKIAEoCzIaLnBsdWdubWVldC5MdGlDdXN0b21EZXNpZ25CEAoOX3Jvb21fZHVyYXRpb25CDgoMX2FsbG93X3BvbGxzQhgKFl9hbGxvd19zaGFyZWRfbm90ZV9wYWRCFgoUX2FsbG93X2JyZWFrb3V0X3Jvb21CEgoQX2FsbG93X3JlY29yZGluZ0INCgtfYWxsb3dfcnRtcEIbChlfYWxsb3dfdmlld19vdGhlcl93ZWJjYW1zQh4KHF9hbGxvd192aWV3X290aGVyX3VzZXJzX2xpc3RCEAoOX211dGVfb25fc3RhcnQizwEKD0x0aUN1c3RvbURlc2lnbhIaCg1wcmltYXJ5X2NvbG9yGAEgASgJSACIAQESHAoPc2Vjb25kYXJ5X2NvbG9yGAIgASgJSAGIAQESHQoQYmFja2dyb3VuZF9jb2xvchgDIAEoCUgCiAEBEhgKC2N1c3RvbV9sb2dvGAQgASgJSAOIAQFCEAoOX3ByaW1hcnlfY29sb3JCEgoQX3NlY29uZGFyeV9jb2xvckITChFfYmFja2dyb3VuZF9jb2xvckIOCgxfY3VzdG9tX2xvZ29CnAEKDWNvbS5wbHVnbm1lZXRCE1BsdWdubWVldEx0aVYxUHJvdG9QAVoyZ2l0aHViLmNvbS9teW5hcGFycm90L3BsdWdubWVldC1wcm90b2NvbC9wbHVnbm1lZXSiAgNQWFiqAglQbHVnbm1lZXTKAglQbHVnbm1lZXTiAhVQbHVnbm1lZXRcR1BCTWV0YWRhdGHqAglQbHVnbm1lZXRiBnByb3RvMw\");\n\n/**\n * @generated from message plugnmeet.LtiClaims\n */\nexport type LtiClaims = Message<\"plugnmeet.LtiClaims\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: bool is_admin = 3;\n */\n isAdmin: boolean;\n\n /**\n * @generated from field: string room_id = 4;\n */\n roomId: string;\n\n /**\n * @generated from field: string room_title = 5;\n */\n roomTitle: string;\n\n /**\n * @generated from field: plugnmeet.LtiCustomParameters lti_custom_parameters = 6;\n */\n ltiCustomParameters?: LtiCustomParameters;\n};\n\n/**\n * Describes the message plugnmeet.LtiClaims.\n * Use `create(LtiClaimsSchema)` to create a new message.\n */\nexport const LtiClaimsSchema: GenMessage<LtiClaims> = /*@__PURE__*/\n messageDesc(file_plugnmeet_lti_v1, 0);\n\n/**\n * @generated from message plugnmeet.LtiCustomParameters\n */\nexport type LtiCustomParameters = Message<\"plugnmeet.LtiCustomParameters\"> & {\n /**\n * @generated from field: optional uint64 room_duration = 1 [jstype = JS_STRING];\n */\n roomDuration?: string;\n\n /**\n * @generated from field: optional bool allow_polls = 2;\n */\n allowPolls?: boolean;\n\n /**\n * @generated from field: optional bool allow_shared_note_pad = 3;\n */\n allowSharedNotePad?: boolean;\n\n /**\n * @generated from field: optional bool allow_breakout_room = 4;\n */\n allowBreakoutRoom?: boolean;\n\n /**\n * @generated from field: optional bool allow_recording = 5;\n */\n allowRecording?: boolean;\n\n /**\n * @generated from field: optional bool allow_rtmp = 6;\n */\n allowRtmp?: boolean;\n\n /**\n * @generated from field: optional bool allow_view_other_webcams = 7;\n */\n allowViewOtherWebcams?: boolean;\n\n /**\n * @generated from field: optional bool allow_view_other_users_list = 8;\n */\n allowViewOtherUsersList?: boolean;\n\n /**\n * @generated from field: optional bool mute_on_start = 9;\n */\n muteOnStart?: boolean;\n\n /**\n * @generated from field: plugnmeet.LtiCustomDesign lti_custom_design = 10;\n */\n ltiCustomDesign?: LtiCustomDesign;\n};\n\n/**\n * Describes the message plugnmeet.LtiCustomParameters.\n * Use `create(LtiCustomParametersSchema)` to create a new message.\n */\nexport const LtiCustomParametersSchema: GenMessage<LtiCustomParameters> = /*@__PURE__*/\n messageDesc(file_plugnmeet_lti_v1, 1);\n\n/**\n * @generated from message plugnmeet.LtiCustomDesign\n */\nexport type LtiCustomDesign = Message<\"plugnmeet.LtiCustomDesign\"> & {\n /**\n * @generated from field: optional string primary_color = 1;\n */\n primaryColor?: string;\n\n /**\n * @generated from field: optional string secondary_color = 2;\n */\n secondaryColor?: string;\n\n /**\n * @generated from field: optional string background_color = 3;\n */\n backgroundColor?: string;\n\n /**\n * @generated from field: optional string custom_logo = 4;\n */\n customLogo?: string;\n};\n\n/**\n * Describes the message plugnmeet.LtiCustomDesign.\n * Use `create(LtiCustomDesignSchema)` to create a new message.\n */\nexport const LtiCustomDesignSchema: GenMessage<LtiCustomDesign> = /*@__PURE__*/\n messageDesc(file_plugnmeet_lti_v1, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_polls.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_polls.proto.\n */\nexport const file_plugnmeet_polls: GenFile = /*@__PURE__*/\n fileDesc(\"ChVwbHVnbm1lZXRfcG9sbHMucHJvdG8SCXBsdWdubWVldCI2ChBBY3RpdmF0ZVBvbGxzUmVxEg8KB3Jvb21faWQYASABKAkSEQoJaXNfYWN0aXZlGAIgASgIIoMBCg1DcmVhdGVQb2xsUmVxEg8KB3Jvb21faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRIPCgdwb2xsX2lkGAMgASgJEhAKCHF1ZXN0aW9uGAQgASgJEi0KB29wdGlvbnMYBSADKAsyHC5wbHVnbm1lZXQuQ3JlYXRlUG9sbE9wdGlvbnMiLQoRQ3JlYXRlUG9sbE9wdGlvbnMSCgoCaWQYASABKA0SDAoEdGV4dBgCIAEoCSK4AQoIUG9sbEluZm8SCgoCaWQYASABKAkSDwoHcm9vbV9pZBgCIAEoCRIQCghxdWVzdGlvbhgDIAEoCRItCgdvcHRpb25zGAQgAygLMhwucGx1Z25tZWV0LkNyZWF0ZVBvbGxPcHRpb25zEhIKCmlzX3J1bm5pbmcYBSABKAgSEwoHY3JlYXRlZBgGIAEoA0ICMAESEgoKY3JlYXRlZF9ieRgHIAEoCRIRCgljbG9zZWRfYnkYCCABKAkidQoVU3VibWl0UG9sbFJlc3BvbnNlUmVxEg8KB3Jvb21faWQYASABKAkSDwoHdXNlcl9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEg8KB3BvbGxfaWQYBCABKAkSGwoPc2VsZWN0ZWRfb3B0aW9uGAUgASgEQgIwASJBCgxDbG9zZVBvbGxSZXESDwoHcm9vbV9pZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEg8KB3BvbGxfaWQYAyABKAkiUgoaUG9sbFJlc3BvbnNlc1Jlc3VsdE9wdGlvbnMSDgoCaWQYASABKARCAjABEgwKBHRleHQYAiABKAkSFgoKdm90ZV9jb3VudBgDIAEoBEICMAEifAoTUG9sbFJlc3BvbnNlc1Jlc3VsdBIQCghxdWVzdGlvbhgBIAEoCRIbCg90b3RhbF9yZXNwb25zZXMYAiABKARCAjABEjYKB29wdGlvbnMYAyADKAsyJS5wbHVnbm1lZXQuUG9sbFJlc3BvbnNlc1Jlc3VsdE9wdGlvbnMiQAoKUG9sbHNTdGF0cxIXCgt0b3RhbF9wb2xscxgBIAEoBEICMAESGQoNdG90YWxfcnVubmluZxgCIAEoBEICMAEiqQQKDFBvbGxSZXNwb25zZRIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEhQKB3BvbGxfaWQYAyABKAlIAIgBARIgCg90b3RhbF9yZXNwb25zZXMYBCABKARCAjABSAGIAQESFgoFdm90ZWQYBSABKARCAjABSAKIAQESOQoJcmVzcG9uc2VzGAYgAygLMiYucGx1Z25tZWV0LlBvbGxSZXNwb25zZS5SZXNwb25zZXNFbnRyeRIiCgVwb2xscxgHIAMoCzITLnBsdWdubWVldC5Qb2xsSW5mbxIpCgVzdGF0cxgIIAEoCzIVLnBsdWdubWVldC5Qb2xsc1N0YXRzSAOIAQESHAoLdG90YWxfcG9sbHMYCSABKARCAjABSASIAQESHgoNdG90YWxfcnVubmluZxgKIAEoBEICMAFIBYgBARJCChVwb2xsX3Jlc3BvbnNlc19yZXN1bHQYCyABKAsyHi5wbHVnbm1lZXQuUG9sbFJlc3BvbnNlc1Jlc3VsdEgGiAEBGjAKDlJlc3BvbnNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCCgoIX3BvbGxfaWRCEgoQX3RvdGFsX3Jlc3BvbnNlc0IICgZfdm90ZWRCCAoGX3N0YXRzQg4KDF90b3RhbF9wb2xsc0IQCg5fdG90YWxfcnVubmluZ0IYChZfcG9sbF9yZXNwb25zZXNfcmVzdWx0QpwBCg1jb20ucGx1Z25tZWV0QhNQbHVnbm1lZXRQb2xsc1Byb3RvUAFaMmdpdGh1Yi5jb20vbXluYXBhcnJvdC9wbHVnbm1lZXQtcHJvdG9jb2wvcGx1Z25tZWV0ogIDUFhYqgIJUGx1Z25tZWV0ygIJUGx1Z25tZWV04gIVUGx1Z25tZWV0XEdQQk1ldGFkYXRh6gIJUGx1Z25tZWV0YgZwcm90bzM\");\n\n/**\n * @generated from message plugnmeet.ActivatePollsReq\n */\nexport type ActivatePollsReq = Message<\"plugnmeet.ActivatePollsReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: bool is_active = 2;\n */\n isActive: boolean;\n};\n\n/**\n * Describes the message plugnmeet.ActivatePollsReq.\n * Use `create(ActivatePollsReqSchema)` to create a new message.\n */\nexport const ActivatePollsReqSchema: GenMessage<ActivatePollsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 0);\n\n/**\n * @generated from message plugnmeet.CreatePollReq\n */\nexport type CreatePollReq = Message<\"plugnmeet.CreatePollReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string poll_id = 3;\n */\n pollId: string;\n\n /**\n * @generated from field: string question = 4;\n */\n question: string;\n\n /**\n * @generated from field: repeated plugnmeet.CreatePollOptions options = 5;\n */\n options: CreatePollOptions[];\n};\n\n/**\n * Describes the message plugnmeet.CreatePollReq.\n * Use `create(CreatePollReqSchema)` to create a new message.\n */\nexport const CreatePollReqSchema: GenMessage<CreatePollReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 1);\n\n/**\n * @generated from message plugnmeet.CreatePollOptions\n */\nexport type CreatePollOptions = Message<\"plugnmeet.CreatePollOptions\"> & {\n /**\n * @generated from field: uint32 id = 1;\n */\n id: number;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n};\n\n/**\n * Describes the message plugnmeet.CreatePollOptions.\n * Use `create(CreatePollOptionsSchema)` to create a new message.\n */\nexport const CreatePollOptionsSchema: GenMessage<CreatePollOptions> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 2);\n\n/**\n * @generated from message plugnmeet.PollInfo\n */\nexport type PollInfo = Message<\"plugnmeet.PollInfo\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: string question = 3;\n */\n question: string;\n\n /**\n * @generated from field: repeated plugnmeet.CreatePollOptions options = 4;\n */\n options: CreatePollOptions[];\n\n /**\n * @generated from field: bool is_running = 5;\n */\n isRunning: boolean;\n\n /**\n * @generated from field: int64 created = 6 [jstype = JS_STRING];\n */\n created: string;\n\n /**\n * @generated from field: string created_by = 7;\n */\n createdBy: string;\n\n /**\n * @generated from field: string closed_by = 8;\n */\n closedBy: string;\n};\n\n/**\n * Describes the message plugnmeet.PollInfo.\n * Use `create(PollInfoSchema)` to create a new message.\n */\nexport const PollInfoSchema: GenMessage<PollInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 3);\n\n/**\n * @generated from message plugnmeet.SubmitPollResponseReq\n */\nexport type SubmitPollResponseReq = Message<\"plugnmeet.SubmitPollResponseReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: string poll_id = 4;\n */\n pollId: string;\n\n /**\n * @generated from field: uint64 selected_option = 5 [jstype = JS_STRING];\n */\n selectedOption: string;\n};\n\n/**\n * Describes the message plugnmeet.SubmitPollResponseReq.\n * Use `create(SubmitPollResponseReqSchema)` to create a new message.\n */\nexport const SubmitPollResponseReqSchema: GenMessage<SubmitPollResponseReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 4);\n\n/**\n * @generated from message plugnmeet.ClosePollReq\n */\nexport type ClosePollReq = Message<\"plugnmeet.ClosePollReq\"> & {\n /**\n * @generated from field: string room_id = 1;\n */\n roomId: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: string poll_id = 3;\n */\n pollId: string;\n};\n\n/**\n * Describes the message plugnmeet.ClosePollReq.\n * Use `create(ClosePollReqSchema)` to create a new message.\n */\nexport const ClosePollReqSchema: GenMessage<ClosePollReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 5);\n\n/**\n * @generated from message plugnmeet.PollResponsesResultOptions\n */\nexport type PollResponsesResultOptions = Message<\"plugnmeet.PollResponsesResultOptions\"> & {\n /**\n * @generated from field: uint64 id = 1 [jstype = JS_STRING];\n */\n id: string;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: uint64 vote_count = 3 [jstype = JS_STRING];\n */\n voteCount: string;\n};\n\n/**\n * Describes the message plugnmeet.PollResponsesResultOptions.\n * Use `create(PollResponsesResultOptionsSchema)` to create a new message.\n */\nexport const PollResponsesResultOptionsSchema: GenMessage<PollResponsesResultOptions> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 6);\n\n/**\n * @generated from message plugnmeet.PollResponsesResult\n */\nexport type PollResponsesResult = Message<\"plugnmeet.PollResponsesResult\"> & {\n /**\n * @generated from field: string question = 1;\n */\n question: string;\n\n /**\n * @generated from field: uint64 total_responses = 2 [jstype = JS_STRING];\n */\n totalResponses: string;\n\n /**\n * @generated from field: repeated plugnmeet.PollResponsesResultOptions options = 3;\n */\n options: PollResponsesResultOptions[];\n};\n\n/**\n * Describes the message plugnmeet.PollResponsesResult.\n * Use `create(PollResponsesResultSchema)` to create a new message.\n */\nexport const PollResponsesResultSchema: GenMessage<PollResponsesResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 7);\n\n/**\n * @generated from message plugnmeet.PollsStats\n */\nexport type PollsStats = Message<\"plugnmeet.PollsStats\"> & {\n /**\n * @generated from field: uint64 total_polls = 1 [jstype = JS_STRING];\n */\n totalPolls: string;\n\n /**\n * @generated from field: uint64 total_running = 2 [jstype = JS_STRING];\n */\n totalRunning: string;\n};\n\n/**\n * Describes the message plugnmeet.PollsStats.\n * Use `create(PollsStatsSchema)` to create a new message.\n */\nexport const PollsStatsSchema: GenMessage<PollsStats> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 8);\n\n/**\n * @generated from message plugnmeet.PollResponse\n */\nexport type PollResponse = Message<\"plugnmeet.PollResponse\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string poll_id = 3;\n */\n pollId?: string;\n\n /**\n * @generated from field: optional uint64 total_responses = 4 [jstype = JS_STRING];\n */\n totalResponses?: string;\n\n /**\n * @generated from field: optional uint64 voted = 5 [jstype = JS_STRING];\n */\n voted?: string;\n\n /**\n * @generated from field: map<string, string> responses = 6;\n */\n responses: { [key: string]: string };\n\n /**\n * @generated from field: repeated plugnmeet.PollInfo polls = 7;\n */\n polls: PollInfo[];\n\n /**\n * @generated from field: optional plugnmeet.PollsStats stats = 8;\n */\n stats?: PollsStats;\n\n /**\n * @generated from field: optional uint64 total_polls = 9 [jstype = JS_STRING];\n */\n totalPolls?: string;\n\n /**\n * @generated from field: optional uint64 total_running = 10 [jstype = JS_STRING];\n */\n totalRunning?: string;\n\n /**\n * @generated from field: optional plugnmeet.PollResponsesResult poll_responses_result = 11;\n */\n pollResponsesResult?: PollResponsesResult;\n};\n\n/**\n * Describes the message plugnmeet.PollResponse.\n * Use `create(PollResponseSchema)` to create a new message.\n */\nexport const PollResponseSchema: GenMessage<PollResponse> = /*@__PURE__*/\n messageDesc(file_plugnmeet_polls, 9);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_insights.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_insights.proto.\n */\nexport const file_plugnmeet_insights: GenFile = /*@__PURE__*/\n fileDesc(\"ChhwbHVnbm1lZXRfaW5zaWdodHMucHJvdG8SCXBsdWdubWVldCJHChlJbnNpZ2h0c1N1cHBvcnRlZExhbmdJbmZvEgwKBGNvZGUYASABKAkSDAoEbmFtZRgCIAEoCRIOCgZsb2NhbGUYAyABKAkikAIKHkluc2lnaHRzVHJhbnNjcmlwdGlvbkNvbmZpZ1JlcRISCgppc19lbmFibGVkGAEgASgIEhwKFGFsbG93ZWRfc3Bva2VuX2xhbmdzGAIgAygJEhwKFGFsbG93ZWRfc3BlZWNoX3VzZXJzGAMgAygJEh4KFmlzX2VuYWJsZWRfdHJhbnNsYXRpb24YBCABKAgSGwoTYWxsb3dlZF90cmFuc19sYW5ncxgFIAMoCRIiChVkZWZhdWx0X3N1YnRpdGxlX2xhbmcYBiABKAlIAIgBARIjChtpc19lbmFibGVkX3NwZWVjaF9zeW50aGVzaXMYByABKAhCGAoWX2RlZmF1bHRfc3VidGl0bGVfbGFuZyKsAQojSW5zaWdodHNUcmFuc2NyaXB0aW9uVXNlclNlc3Npb25SZXESNAoGYWN0aW9uGAEgASgOMiQucGx1Z25tZWV0Lkluc2lnaHRzVXNlclNlc3Npb25BY3Rpb24SGAoLc3Bva2VuX2xhbmcYAiABKAlIAIgBARIlCh1hbGxvd2VkX3RyYW5zY3JpcHRpb25fc3RvcmFnZRgDIAEoCEIOCgxfc3Bva2VuX2xhbmcipwIKG0luc2lnaHRzVHJhbnNjcmlwdGlvblJlc3VsdBIUCgxmcm9tX3VzZXJfaWQYASABKAkSFgoOZnJvbV91c2VyX25hbWUYAiABKAkSDAoEbGFuZxgDIAEoCRIMCgR0ZXh0GAQgASgJEhIKCmlzX3BhcnRpYWwYBSABKAgSJQodYWxsb3dlZF90cmFuc2NyaXB0aW9uX3N0b3JhZ2UYBiABKAgSTgoMdHJhbnNsYXRpb25zGAcgAygLMjgucGx1Z25tZWV0Lkluc2lnaHRzVHJhbnNjcmlwdGlvblJlc3VsdC5UcmFuc2xhdGlvbnNFbnRyeRozChFUcmFuc2xhdGlvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIn8KIEluc2lnaHRzQ2hhdFRyYW5zbGF0aW9uQ29uZmlnUmVxEhIKCmlzX2VuYWJsZWQYASABKAgSGwoTYWxsb3dlZF90cmFuc19sYW5ncxgFIAMoCRIZCgxkZWZhdWx0X2xhbmcYBiABKAlIAIgBAUIPCg1fZGVmYXVsdF9sYW5nIlMKGEluc2lnaHRzVHJhbnNsYXRlVGV4dFJlcRIMCgR0ZXh0GAEgASgJEhMKC3NvdXJjZV9sYW5nGAIgASgJEhQKDHRhcmdldF9sYW5ncxgDIAMoCSLQAQodSW5zaWdodHNUZXh0VHJhbnNsYXRpb25SZXN1bHQSEwoLc291cmNlX3RleHQYASABKAkSEwoLc291cmNlX2xhbmcYAiABKAkSUAoMdHJhbnNsYXRpb25zGAMgAygLMjoucGx1Z25tZWV0Lkluc2lnaHRzVGV4dFRyYW5zbGF0aW9uUmVzdWx0LlRyYW5zbGF0aW9uc0VudHJ5GjMKEVRyYW5zbGF0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEigQEKGEluc2lnaHRzVHJhbnNsYXRlVGV4dFJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJEj0KBnJlc3VsdBgDIAEoCzIoLnBsdWdubWVldC5JbnNpZ2h0c1RleHRUcmFuc2xhdGlvblJlc3VsdEgAiAEBQgkKB19yZXN1bHQiWAogSW5zaWdodHNHZXRTdXBwb3J0ZWRMYW5ndWFnZXNSZXESNAoMc2VydmljZV90eXBlGAEgASgOMh4ucGx1Z25tZWV0Lkluc2lnaHRzU2VydmljZVR5cGUieAogSW5zaWdodHNHZXRTdXBwb3J0ZWRMYW5ndWFnZXNSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRI3CglsYW5ndWFnZXMYAyADKAsyJC5wbHVnbm1lZXQuSW5zaWdodHNTdXBwb3J0ZWRMYW5nSW5mbyL4AQoYSW5zaWdodHNHZXRVc2VyU3RhdHVzUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSNAoMc2VydmljZV90eXBlGAMgASgOMh4ucGx1Z25tZWV0Lkluc2lnaHRzU2VydmljZVR5cGUSEQoJaXNfYWN0aXZlGAQgASgIEhgKC3Nwb2tlbl9sYW5nGAUgASgJSACIAQESKgodYWxsb3dlZF90cmFuc2NyaXB0aW9uX3N0b3JhZ2UYBiABKAhIAYgBAUIOCgxfc3Bva2VuX2xhbmdCIAoeX2FsbG93ZWRfdHJhbnNjcmlwdGlvbl9zdG9yYWdlIoABChlJbnNpZ2h0c0FJVGV4dENoYXRDb250ZW50Ei8KBHJvbGUYASABKA4yIS5wbHVnbm1lZXQuSW5zaWdodHNBSVRleHRDaGF0Um9sZRIMCgR0ZXh0GAIgASgJEhYKCXN0cmVhbV9pZBgDIAEoCUgAiAEBQgwKCl9zdHJlYW1faWQirAEKHkluc2lnaHRzQUlUZXh0Q2hhdFN0cmVhbVJlc3VsdBIKCgJpZBgBIAEoCRIMCgR0ZXh0GAIgASgJEhUKDWlzX2xhc3RfY2h1bmsYAyABKAgSFQoNcHJvbXB0X3Rva2VucxgEIAEoDRIZChFjb21wbGV0aW9uX3Rva2VucxgFIAEoDRIUCgx0b3RhbF90b2tlbnMYBiABKA0SEQoJY3JlYXRlZEF0GAcgASgJImgKG0luc2lnaHRzQUlUZXh0Q2hhdENvbmZpZ1JlcRISCgppc19lbmFibGVkGAEgASgIEhsKE2lzX2FsbG93ZWRfZXZlcnlvbmUYAyABKAgSGAoQYWxsb3dlZF91c2VyX2lkcxgEIAMoCSJbCidJbnNpZ2h0c0FJTWVldGluZ1N1bW1hcml6YXRpb25Db25maWdSZXESEgoKaXNfZW5hYmxlZBgBIAEoCBIcChRzdW1tYXJpemF0aW9uX3Byb21wdBgDIAEoCSq7AgoTSW5zaWdodHNTZXJ2aWNlVHlwZRIlCiFJTlNJR0hUU19TRVJWSUNFX1RZUEVfVU5TUEVDSUZJRUQQABInCiNJTlNJR0hUU19TRVJWSUNFX1RZUEVfVFJBTlNDUklQVElPThABEiUKIUlOU0lHSFRTX1NFUlZJQ0VfVFlQRV9UUkFOU0xBVElPThACEioKJklOU0lHSFRTX1NFUlZJQ0VfVFlQRV9TUEVFQ0hfU1lOVEhFU0lTEAMSJgoiSU5TSUdIVFNfU0VSVklDRV9UWVBFX0FJX1RFWFRfQ0hBVBAEEioKJklOU0lHSFRTX1NFUlZJQ0VfVFlQRV9DSEFUX1RSQU5TTEFUSU9OEAUSLQopSU5TSUdIVFNfU0VSVklDRV9UWVBFX01FRVRJTkdfU1VNTUFSSVpJTkcQBip9ChlJbnNpZ2h0c1VzZXJTZXNzaW9uQWN0aW9uEiMKH1VTRVJfU0VTU0lPTl9BQ1RJT05fVU5TUEVDSUZJRUQQABIdChlVU0VSX1NFU1NJT05fQUNUSU9OX1NUQVJUEAESHAoYVVNFUl9TRVNTSU9OX0FDVElPTl9TVE9QEAIqtgEKFkluc2lnaHRzQUlUZXh0Q2hhdFJvbGUSKgomSU5TSUdIVFNfQUlfVEVYVF9DSEFUX1JPTEVfVU5TUEVDSUZJRUQQABIlCiFJTlNJR0hUU19BSV9URVhUX0NIQVRfUk9MRV9TWVNURU0QARIjCh9JTlNJR0hUU19BSV9URVhUX0NIQVRfUk9MRV9VU0VSEAISJAogSU5TSUdIVFNfQUlfVEVYVF9DSEFUX1JPTEVfTU9ERUwQA0KfAQoNY29tLnBsdWdubWVldEIWUGx1Z25tZWV0SW5zaWdodHNQcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\");\n\n/**\n * @generated from message plugnmeet.InsightsSupportedLangInfo\n */\nexport type InsightsSupportedLangInfo = Message<\"plugnmeet.InsightsSupportedLangInfo\"> & {\n /**\n * @generated from field: string code = 1;\n */\n code: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: string locale = 3;\n */\n locale: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsSupportedLangInfo.\n * Use `create(InsightsSupportedLangInfoSchema)` to create a new message.\n */\nexport const InsightsSupportedLangInfoSchema: GenMessage<InsightsSupportedLangInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 0);\n\n/**\n * @generated from message plugnmeet.InsightsTranscriptionConfigReq\n */\nexport type InsightsTranscriptionConfigReq = Message<\"plugnmeet.InsightsTranscriptionConfigReq\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: repeated string allowed_spoken_langs = 2;\n */\n allowedSpokenLangs: string[];\n\n /**\n * @generated from field: repeated string allowed_speech_users = 3;\n */\n allowedSpeechUsers: string[];\n\n /**\n * @generated from field: bool is_enabled_translation = 4;\n */\n isEnabledTranslation: boolean;\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 5;\n */\n allowedTransLangs: string[];\n\n /**\n * @generated from field: optional string default_subtitle_lang = 6;\n */\n defaultSubtitleLang?: string;\n\n /**\n * @generated from field: bool is_enabled_speech_synthesis = 7;\n */\n isEnabledSpeechSynthesis: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranscriptionConfigReq.\n * Use `create(InsightsTranscriptionConfigReqSchema)` to create a new message.\n */\nexport const InsightsTranscriptionConfigReqSchema: GenMessage<InsightsTranscriptionConfigReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 1);\n\n/**\n * @generated from message plugnmeet.InsightsTranscriptionUserSessionReq\n */\nexport type InsightsTranscriptionUserSessionReq = Message<\"plugnmeet.InsightsTranscriptionUserSessionReq\"> & {\n /**\n * @generated from field: plugnmeet.InsightsUserSessionAction action = 1;\n */\n action: InsightsUserSessionAction;\n\n /**\n * @generated from field: optional string spoken_lang = 2;\n */\n spokenLang?: string;\n\n /**\n * @generated from field: bool allowed_transcription_storage = 3;\n */\n allowedTranscriptionStorage: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranscriptionUserSessionReq.\n * Use `create(InsightsTranscriptionUserSessionReqSchema)` to create a new message.\n */\nexport const InsightsTranscriptionUserSessionReqSchema: GenMessage<InsightsTranscriptionUserSessionReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 2);\n\n/**\n * @generated from message plugnmeet.InsightsTranscriptionResult\n */\nexport type InsightsTranscriptionResult = Message<\"plugnmeet.InsightsTranscriptionResult\"> & {\n /**\n * @generated from field: string from_user_id = 1;\n */\n fromUserId: string;\n\n /**\n * @generated from field: string from_user_name = 2;\n */\n fromUserName: string;\n\n /**\n * @generated from field: string lang = 3;\n */\n lang: string;\n\n /**\n * @generated from field: string text = 4;\n */\n text: string;\n\n /**\n * @generated from field: bool is_partial = 5;\n */\n isPartial: boolean;\n\n /**\n * @generated from field: bool allowed_transcription_storage = 6;\n */\n allowedTranscriptionStorage: boolean;\n\n /**\n * A map of target language -> translated text\n *\n * @generated from field: map<string, string> translations = 7;\n */\n translations: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranscriptionResult.\n * Use `create(InsightsTranscriptionResultSchema)` to create a new message.\n */\nexport const InsightsTranscriptionResultSchema: GenMessage<InsightsTranscriptionResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 3);\n\n/**\n * @generated from message plugnmeet.InsightsChatTranslationConfigReq\n */\nexport type InsightsChatTranslationConfigReq = Message<\"plugnmeet.InsightsChatTranslationConfigReq\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: repeated string allowed_trans_langs = 5;\n */\n allowedTransLangs: string[];\n\n /**\n * @generated from field: optional string default_lang = 6;\n */\n defaultLang?: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsChatTranslationConfigReq.\n * Use `create(InsightsChatTranslationConfigReqSchema)` to create a new message.\n */\nexport const InsightsChatTranslationConfigReqSchema: GenMessage<InsightsChatTranslationConfigReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 4);\n\n/**\n * @generated from message plugnmeet.InsightsTranslateTextReq\n */\nexport type InsightsTranslateTextReq = Message<\"plugnmeet.InsightsTranslateTextReq\"> & {\n /**\n * @generated from field: string text = 1;\n */\n text: string;\n\n /**\n * @generated from field: string source_lang = 2;\n */\n sourceLang: string;\n\n /**\n * @generated from field: repeated string target_langs = 3;\n */\n targetLangs: string[];\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranslateTextReq.\n * Use `create(InsightsTranslateTextReqSchema)` to create a new message.\n */\nexport const InsightsTranslateTextReqSchema: GenMessage<InsightsTranslateTextReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 5);\n\n/**\n * @generated from message plugnmeet.InsightsTextTranslationResult\n */\nexport type InsightsTextTranslationResult = Message<\"plugnmeet.InsightsTextTranslationResult\"> & {\n /**\n * @generated from field: string source_text = 1;\n */\n sourceText: string;\n\n /**\n * @generated from field: string source_lang = 2;\n */\n sourceLang: string;\n\n /**\n * map of lang_code -> translated_text\n *\n * @generated from field: map<string, string> translations = 3;\n */\n translations: { [key: string]: string };\n};\n\n/**\n * Describes the message plugnmeet.InsightsTextTranslationResult.\n * Use `create(InsightsTextTranslationResultSchema)` to create a new message.\n */\nexport const InsightsTextTranslationResultSchema: GenMessage<InsightsTextTranslationResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 6);\n\n/**\n * @generated from message plugnmeet.InsightsTranslateTextRes\n */\nexport type InsightsTranslateTextRes = Message<\"plugnmeet.InsightsTranslateTextRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional plugnmeet.InsightsTextTranslationResult result = 3;\n */\n result?: InsightsTextTranslationResult;\n};\n\n/**\n * Describes the message plugnmeet.InsightsTranslateTextRes.\n * Use `create(InsightsTranslateTextResSchema)` to create a new message.\n */\nexport const InsightsTranslateTextResSchema: GenMessage<InsightsTranslateTextRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 7);\n\n/**\n * @generated from message plugnmeet.InsightsGetSupportedLanguagesReq\n */\nexport type InsightsGetSupportedLanguagesReq = Message<\"plugnmeet.InsightsGetSupportedLanguagesReq\"> & {\n /**\n * @generated from field: plugnmeet.InsightsServiceType service_type = 1;\n */\n serviceType: InsightsServiceType;\n};\n\n/**\n * Describes the message plugnmeet.InsightsGetSupportedLanguagesReq.\n * Use `create(InsightsGetSupportedLanguagesReqSchema)` to create a new message.\n */\nexport const InsightsGetSupportedLanguagesReqSchema: GenMessage<InsightsGetSupportedLanguagesReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 8);\n\n/**\n * @generated from message plugnmeet.InsightsGetSupportedLanguagesRes\n */\nexport type InsightsGetSupportedLanguagesRes = Message<\"plugnmeet.InsightsGetSupportedLanguagesRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: repeated plugnmeet.InsightsSupportedLangInfo languages = 3;\n */\n languages: InsightsSupportedLangInfo[];\n};\n\n/**\n * Describes the message plugnmeet.InsightsGetSupportedLanguagesRes.\n * Use `create(InsightsGetSupportedLanguagesResSchema)` to create a new message.\n */\nexport const InsightsGetSupportedLanguagesResSchema: GenMessage<InsightsGetSupportedLanguagesRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 9);\n\n/**\n * @generated from message plugnmeet.InsightsGetUserStatusRes\n */\nexport type InsightsGetUserStatusRes = Message<\"plugnmeet.InsightsGetUserStatusRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.InsightsServiceType service_type = 3;\n */\n serviceType: InsightsServiceType;\n\n /**\n * @generated from field: bool is_active = 4;\n */\n isActive: boolean;\n\n /**\n * @generated from field: optional string spoken_lang = 5;\n */\n spokenLang?: string;\n\n /**\n * @generated from field: optional bool allowed_transcription_storage = 6;\n */\n allowedTranscriptionStorage?: boolean;\n};\n\n/**\n * Describes the message plugnmeet.InsightsGetUserStatusRes.\n * Use `create(InsightsGetUserStatusResSchema)` to create a new message.\n */\nexport const InsightsGetUserStatusResSchema: GenMessage<InsightsGetUserStatusRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 10);\n\n/**\n * @generated from message plugnmeet.InsightsAITextChatContent\n */\nexport type InsightsAITextChatContent = Message<\"plugnmeet.InsightsAITextChatContent\"> & {\n /**\n * @generated from field: plugnmeet.InsightsAITextChatRole role = 1;\n */\n role: InsightsAITextChatRole;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: optional string stream_id = 3;\n */\n streamId?: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAITextChatContent.\n * Use `create(InsightsAITextChatContentSchema)` to create a new message.\n */\nexport const InsightsAITextChatContentSchema: GenMessage<InsightsAITextChatContent> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 11);\n\n/**\n * @generated from message plugnmeet.InsightsAITextChatStreamResult\n */\nexport type InsightsAITextChatStreamResult = Message<\"plugnmeet.InsightsAITextChatStreamResult\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string text = 2;\n */\n text: string;\n\n /**\n * @generated from field: bool is_last_chunk = 3;\n */\n isLastChunk: boolean;\n\n /**\n * @generated from field: uint32 prompt_tokens = 4;\n */\n promptTokens: number;\n\n /**\n * @generated from field: uint32 completion_tokens = 5;\n */\n completionTokens: number;\n\n /**\n * @generated from field: uint32 total_tokens = 6;\n */\n totalTokens: number;\n\n /**\n * @generated from field: string createdAt = 7;\n */\n createdAt: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAITextChatStreamResult.\n * Use `create(InsightsAITextChatStreamResultSchema)` to create a new message.\n */\nexport const InsightsAITextChatStreamResultSchema: GenMessage<InsightsAITextChatStreamResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 12);\n\n/**\n * @generated from message plugnmeet.InsightsAITextChatConfigReq\n */\nexport type InsightsAITextChatConfigReq = Message<\"plugnmeet.InsightsAITextChatConfigReq\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: bool is_allowed_everyone = 3;\n */\n isAllowedEveryone: boolean;\n\n /**\n * @generated from field: repeated string allowed_user_ids = 4;\n */\n allowedUserIds: string[];\n};\n\n/**\n * Describes the message plugnmeet.InsightsAITextChatConfigReq.\n * Use `create(InsightsAITextChatConfigReqSchema)` to create a new message.\n */\nexport const InsightsAITextChatConfigReqSchema: GenMessage<InsightsAITextChatConfigReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 13);\n\n/**\n * @generated from message plugnmeet.InsightsAIMeetingSummarizationConfigReq\n */\nexport type InsightsAIMeetingSummarizationConfigReq = Message<\"plugnmeet.InsightsAIMeetingSummarizationConfigReq\"> & {\n /**\n * @generated from field: bool is_enabled = 1;\n */\n isEnabled: boolean;\n\n /**\n * @generated from field: string summarization_prompt = 3;\n */\n summarizationPrompt: string;\n};\n\n/**\n * Describes the message plugnmeet.InsightsAIMeetingSummarizationConfigReq.\n * Use `create(InsightsAIMeetingSummarizationConfigReqSchema)` to create a new message.\n */\nexport const InsightsAIMeetingSummarizationConfigReqSchema: GenMessage<InsightsAIMeetingSummarizationConfigReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_insights, 14);\n\n/**\n * @generated from enum plugnmeet.InsightsServiceType\n */\nexport enum InsightsServiceType {\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_TRANSCRIPTION = 1;\n */\n TRANSCRIPTION = 1,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_TRANSLATION = 2;\n */\n TRANSLATION = 2,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_SPEECH_SYNTHESIS = 3;\n */\n SPEECH_SYNTHESIS = 3,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_AI_TEXT_CHAT = 4;\n */\n AI_TEXT_CHAT = 4,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_CHAT_TRANSLATION = 5;\n */\n CHAT_TRANSLATION = 5,\n\n /**\n * @generated from enum value: INSIGHTS_SERVICE_TYPE_MEETING_SUMMARIZING = 6;\n */\n MEETING_SUMMARIZING = 6,\n}\n\n/**\n * Describes the enum plugnmeet.InsightsServiceType.\n */\nexport const InsightsServiceTypeSchema: GenEnum<InsightsServiceType> = /*@__PURE__*/\n enumDesc(file_plugnmeet_insights, 0);\n\n/**\n * @generated from enum plugnmeet.InsightsUserSessionAction\n */\nexport enum InsightsUserSessionAction {\n /**\n * @generated from enum value: USER_SESSION_ACTION_UNSPECIFIED = 0;\n */\n USER_SESSION_ACTION_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: USER_SESSION_ACTION_START = 1;\n */\n USER_SESSION_ACTION_START = 1,\n\n /**\n * @generated from enum value: USER_SESSION_ACTION_STOP = 2;\n */\n USER_SESSION_ACTION_STOP = 2,\n}\n\n/**\n * Describes the enum plugnmeet.InsightsUserSessionAction.\n */\nexport const InsightsUserSessionActionSchema: GenEnum<InsightsUserSessionAction> = /*@__PURE__*/\n enumDesc(file_plugnmeet_insights, 1);\n\n/**\n * start AI Text Chat\n *\n * @generated from enum plugnmeet.InsightsAITextChatRole\n */\nexport enum InsightsAITextChatRole {\n /**\n * @generated from enum value: INSIGHTS_AI_TEXT_CHAT_ROLE_UNSPECIFIED = 0;\n */\n INSIGHTS_AI_TEXT_CHAT_ROLE_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: INSIGHTS_AI_TEXT_CHAT_ROLE_SYSTEM = 1;\n */\n INSIGHTS_AI_TEXT_CHAT_ROLE_SYSTEM = 1,\n\n /**\n * @generated from enum value: INSIGHTS_AI_TEXT_CHAT_ROLE_USER = 2;\n */\n INSIGHTS_AI_TEXT_CHAT_ROLE_USER = 2,\n\n /**\n * @generated from enum value: INSIGHTS_AI_TEXT_CHAT_ROLE_MODEL = 3;\n */\n INSIGHTS_AI_TEXT_CHAT_ROLE_MODEL = 3,\n}\n\n/**\n * Describes the enum plugnmeet.InsightsAITextChatRole.\n */\nexport const InsightsAITextChatRoleSchema: GenEnum<InsightsAITextChatRole> = /*@__PURE__*/\n enumDesc(file_plugnmeet_insights, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file plugnmeet_auth_artifact.proto (package plugnmeet, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"./buf/validate/validate_pb\";\nimport type { RoomArtifactMetadata, RoomArtifactType } from \"./plugnmeet_room_artifacts_pb\";\nimport { file_plugnmeet_room_artifacts } from \"./plugnmeet_room_artifacts_pb\";\nimport type { PastRoomInfo } from \"./plugnmeet_auth_room_pb\";\nimport { file_plugnmeet_auth_room } from \"./plugnmeet_auth_room_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file plugnmeet_auth_artifact.proto.\n */\nexport const file_plugnmeet_auth_artifact: GenFile = /*@__PURE__*/\n fileDesc(\"Ch1wbHVnbm1lZXRfYXV0aF9hcnRpZmFjdC5wcm90bxIJcGx1Z25tZWV0IrkBChFGZXRjaEFydGlmYWN0c1JlcRIQCghyb29tX2lkcxgBIAMoCRIVCghyb29tX3NpZBgCIAEoCUgAiAEBEi4KBHR5cGUYAyABKA4yGy5wbHVnbm1lZXQuUm9vbUFydGlmYWN0VHlwZUgBiAEBEhAKBGZyb20YBCABKARCAjABEhEKBWxpbWl0GAUgASgEQgIwARIQCghvcmRlcl9ieRgGIAEoCUILCglfcm9vbV9zaWRCBwoFX3R5cGUiowEKDEFydGlmYWN0SW5mbxITCgthcnRpZmFjdF9pZBgBIAEoCRIPCgdyb29tX2lkGAIgASgJEikKBHR5cGUYAyABKA4yGy5wbHVnbm1lZXQuUm9vbUFydGlmYWN0VHlwZRIPCgdjcmVhdGVkGAQgASgJEjEKCG1ldGFkYXRhGAUgASgLMh8ucGx1Z25tZWV0LlJvb21BcnRpZmFjdE1ldGFkYXRhItQBChRGZXRjaEFydGlmYWN0c1Jlc3VsdBIbCg90b3RhbF9hcnRpZmFjdHMYASABKANCAjABEhAKBGZyb20YAiABKARCAjABEhEKBWxpbWl0GAMgASgEQgIwARIQCghvcmRlcl9ieRgEIAEoCRIuCgR0eXBlGAUgASgOMhsucGx1Z25tZWV0LlJvb21BcnRpZmFjdFR5cGVIAIgBARIvCg5hcnRpZmFjdHNfbGlzdBgGIAMoCzIXLnBsdWdubWVldC5BcnRpZmFjdEluZm9CBwoFX3R5cGUiYQoRRmV0Y2hBcnRpZmFjdHNSZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIvCgZyZXN1bHQYAyABKAsyHy5wbHVnbm1lZXQuRmV0Y2hBcnRpZmFjdHNSZXN1bHQiOgobR2V0QXJ0aWZhY3REb3dubG9hZFRva2VuUmVxEhsKC2FydGlmYWN0X2lkGAEgASgJQga6SAPIAQEiWAobR2V0QXJ0aWZhY3REb3dubG9hZFRva2VuUmVzEg4KBnN0YXR1cxgBIAEoCBILCgNtc2cYAiABKAkSEgoFdG9rZW4YAyABKAlIAIgBAUIICgZfdG9rZW4iMAoRRGVsZXRlQXJ0aWZhY3RSZXESGwoLYXJ0aWZhY3RfaWQYASABKAlCBrpIA8gBASIwChFEZWxldGVBcnRpZmFjdFJlcxIOCgZzdGF0dXMYASABKAgSCwoDbXNnGAIgASgJIi4KD0FydGlmYWN0SW5mb1JlcRIbCgthcnRpZmFjdF9pZBgBIAEoCUIGukgDyAEBIrQBCg9BcnRpZmFjdEluZm9SZXMSDgoGc3RhdHVzGAEgASgIEgsKA21zZxgCIAEoCRIzCg1hcnRpZmFjdF9pbmZvGAMgASgLMhcucGx1Z25tZWV0LkFydGlmYWN0SW5mb0gAiAEBEi8KCXJvb21faW5mbxgEIAEoCzIXLnBsdWdubWVldC5QYXN0Um9vbUluZm9IAYgBAUIQCg5fYXJ0aWZhY3RfaW5mb0IMCgpfcm9vbV9pbmZvQqMBCg1jb20ucGx1Z25tZWV0QhpQbHVnbm1lZXRBdXRoQXJ0aWZhY3RQcm90b1ABWjJnaXRodWIuY29tL215bmFwYXJyb3QvcGx1Z25tZWV0LXByb3RvY29sL3BsdWdubWVldKICA1BYWKoCCVBsdWdubWVldMoCCVBsdWdubWVldOICFVBsdWdubWVldFxHUEJNZXRhZGF0YeoCCVBsdWdubWVldGIGcHJvdG8z\", [file_buf_validate_validate, file_plugnmeet_room_artifacts, file_plugnmeet_auth_room]);\n\n/**\n * Request to fetch a list of artifacts\n *\n * @generated from message plugnmeet.FetchArtifactsReq\n */\nexport type FetchArtifactsReq = Message<\"plugnmeet.FetchArtifactsReq\"> & {\n /**\n * @generated from field: repeated string room_ids = 1;\n */\n roomIds: string[];\n\n /**\n * To get information about a particular session\n *\n * @generated from field: optional string room_sid = 2;\n */\n roomSid?: string;\n\n /**\n * @generated from field: optional plugnmeet.RoomArtifactType type = 3;\n */\n type?: RoomArtifactType;\n\n /**\n * @generated from field: uint64 from = 4 [jstype = JS_STRING];\n */\n from: string;\n\n /**\n * @generated from field: uint64 limit = 5 [jstype = JS_STRING];\n */\n limit: string;\n\n /**\n * @generated from field: string order_by = 6;\n */\n orderBy: string;\n};\n\n/**\n * Describes the message plugnmeet.FetchArtifactsReq.\n * Use `create(FetchArtifactsReqSchema)` to create a new message.\n */\nexport const FetchArtifactsReqSchema: GenMessage<FetchArtifactsReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 0);\n\n/**\n * A single artifact entry in the list response\n *\n * @generated from message plugnmeet.ArtifactInfo\n */\nexport type ArtifactInfo = Message<\"plugnmeet.ArtifactInfo\"> & {\n /**\n * @generated from field: string artifact_id = 1;\n */\n artifactId: string;\n\n /**\n * @generated from field: string room_id = 2;\n */\n roomId: string;\n\n /**\n * @generated from field: plugnmeet.RoomArtifactType type = 3;\n */\n type: RoomArtifactType;\n\n /**\n * @generated from field: string created = 4;\n */\n created: string;\n\n /**\n * @generated from field: plugnmeet.RoomArtifactMetadata metadata = 5;\n */\n metadata?: RoomArtifactMetadata;\n};\n\n/**\n * Describes the message plugnmeet.ArtifactInfo.\n * Use `create(ArtifactInfoSchema)` to create a new message.\n */\nexport const ArtifactInfoSchema: GenMessage<ArtifactInfo> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 1);\n\n/**\n * Result for fetching artifacts\n *\n * @generated from message plugnmeet.FetchArtifactsResult\n */\nexport type FetchArtifactsResult = Message<\"plugnmeet.FetchArtifactsResult\"> & {\n /**\n * @generated from field: int64 total_artifacts = 1 [jstype = JS_STRING];\n */\n totalArtifacts: string;\n\n /**\n * @generated from field: uint64 from = 2 [jstype = JS_STRING];\n */\n from: string;\n\n /**\n * @generated from field: uint64 limit = 3 [jstype = JS_STRING];\n */\n limit: string;\n\n /**\n * @generated from field: string order_by = 4;\n */\n orderBy: string;\n\n /**\n * @generated from field: optional plugnmeet.RoomArtifactType type = 5;\n */\n type?: RoomArtifactType;\n\n /**\n * @generated from field: repeated plugnmeet.ArtifactInfo artifacts_list = 6;\n */\n artifactsList: ArtifactInfo[];\n};\n\n/**\n * Describes the message plugnmeet.FetchArtifactsResult.\n * Use `create(FetchArtifactsResultSchema)` to create a new message.\n */\nexport const FetchArtifactsResultSchema: GenMessage<FetchArtifactsResult> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 2);\n\n/**\n * Response for fetching artifacts\n *\n * @generated from message plugnmeet.FetchArtifactsRes\n */\nexport type FetchArtifactsRes = Message<\"plugnmeet.FetchArtifactsRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: plugnmeet.FetchArtifactsResult result = 3;\n */\n result?: FetchArtifactsResult;\n};\n\n/**\n * Describes the message plugnmeet.FetchArtifactsRes.\n * Use `create(FetchArtifactsResSchema)` to create a new message.\n */\nexport const FetchArtifactsResSchema: GenMessage<FetchArtifactsRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 3);\n\n/**\n * Request to get a download token for an artifact\n *\n * @generated from message plugnmeet.GetArtifactDownloadTokenReq\n */\nexport type GetArtifactDownloadTokenReq = Message<\"plugnmeet.GetArtifactDownloadTokenReq\"> & {\n /**\n * @generated from field: string artifact_id = 1;\n */\n artifactId: string;\n};\n\n/**\n * Describes the message plugnmeet.GetArtifactDownloadTokenReq.\n * Use `create(GetArtifactDownloadTokenReqSchema)` to create a new message.\n */\nexport const GetArtifactDownloadTokenReqSchema: GenMessage<GetArtifactDownloadTokenReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 4);\n\n/**\n * Response for a download token\n *\n * @generated from message plugnmeet.GetArtifactDownloadTokenRes\n */\nexport type GetArtifactDownloadTokenRes = Message<\"plugnmeet.GetArtifactDownloadTokenRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional string token = 3;\n */\n token?: string;\n};\n\n/**\n * Describes the message plugnmeet.GetArtifactDownloadTokenRes.\n * Use `create(GetArtifactDownloadTokenResSchema)` to create a new message.\n */\nexport const GetArtifactDownloadTokenResSchema: GenMessage<GetArtifactDownloadTokenRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 5);\n\n/**\n * Request to delete an artifact\n *\n * @generated from message plugnmeet.DeleteArtifactReq\n */\nexport type DeleteArtifactReq = Message<\"plugnmeet.DeleteArtifactReq\"> & {\n /**\n * @generated from field: string artifact_id = 1;\n */\n artifactId: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteArtifactReq.\n * Use `create(DeleteArtifactReqSchema)` to create a new message.\n */\nexport const DeleteArtifactReqSchema: GenMessage<DeleteArtifactReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 6);\n\n/**\n * Response for deleting an artifact\n *\n * @generated from message plugnmeet.DeleteArtifactRes\n */\nexport type DeleteArtifactRes = Message<\"plugnmeet.DeleteArtifactRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n};\n\n/**\n * Describes the message plugnmeet.DeleteArtifactRes.\n * Use `create(DeleteArtifactResSchema)` to create a new message.\n */\nexport const DeleteArtifactResSchema: GenMessage<DeleteArtifactRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 7);\n\n/**\n * @generated from message plugnmeet.ArtifactInfoReq\n */\nexport type ArtifactInfoReq = Message<\"plugnmeet.ArtifactInfoReq\"> & {\n /**\n * @generated from field: string artifact_id = 1;\n */\n artifactId: string;\n};\n\n/**\n * Describes the message plugnmeet.ArtifactInfoReq.\n * Use `create(ArtifactInfoReqSchema)` to create a new message.\n */\nexport const ArtifactInfoReqSchema: GenMessage<ArtifactInfoReq> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 8);\n\n/**\n * @generated from message plugnmeet.ArtifactInfoRes\n */\nexport type ArtifactInfoRes = Message<\"plugnmeet.ArtifactInfoRes\"> & {\n /**\n * @generated from field: bool status = 1;\n */\n status: boolean;\n\n /**\n * @generated from field: string msg = 2;\n */\n msg: string;\n\n /**\n * @generated from field: optional plugnmeet.ArtifactInfo artifact_info = 3;\n */\n artifactInfo?: ArtifactInfo;\n\n /**\n * @generated from field: optional plugnmeet.PastRoomInfo room_info = 4;\n */\n roomInfo?: PastRoomInfo;\n};\n\n/**\n * Describes the message plugnmeet.ArtifactInfoRes.\n * Use `create(ArtifactInfoResSchema)` to create a new message.\n */\nexport const ArtifactInfoResSchema: GenMessage<ArtifactInfoRes> = /*@__PURE__*/\n messageDesc(file_plugnmeet_auth_artifact, 9);\n\n"],"names":[],"version":3,"file":"index.cjs.js.map"}
|