{"version":3,"sources":["../src/clients/protos/common_pb.js","../src/clients/protos/talk-api_pb.js","../src/utils/rapida_source.ts","../src/agents/message.ts","../src/channels/index.ts","../src/connections/connection-state.ts","../src/agents/feedback.ts","../src/constants/index.ts","../src/utils/rapida_client.ts","../src/utils/index.ts","../src/devices/device-manager.ts","../src/agents/voice-agent.ts","../src/utils/rapida_content.ts","../src/wavtools/lib/wav_packer.js","../src/wavtools/lib/analysis/constants.js","../src/wavtools/lib/analysis/audio_analysis.js","../src/wavtools/lib/worklets/stream_processor.js","../src/wavtools/lib/wav_stream_player.js","../src/wavtools/lib/worklets/audio_processor.js","../src/wavtools/lib/wav_recorder.js","../src/utils/rapida_metadata.ts","../src/agents/index.ts","../src/clients/talk.ts","../src/utils/rapida_header.ts","../src/clients/index.ts","../src/utils/rapida_region.ts","../src/hooks/use-voice-agent.ts","../src/hooks/observables/voice-agent.ts"],"sourcesContent":["// source: common.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n *     field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js');\ngoog.object.extend(proto, google_protobuf_timestamp_pb);\nvar google_protobuf_struct_pb = require('google-protobuf/google/protobuf/struct_pb.js');\ngoog.object.extend(proto, google_protobuf_struct_pb);\ngoog.exportSymbol('proto.AgentPromptTemplate', null, global);\ngoog.exportSymbol('proto.AssistantConversation', null, global);\ngoog.exportSymbol('proto.AssistantConversationContext', null, global);\ngoog.exportSymbol('proto.AssistantConversationMessage', null, global);\ngoog.exportSymbol('proto.AssistantMessageStage', null, global);\ngoog.exportSymbol('proto.BaseResponse', null, global);\ngoog.exportSymbol('proto.Content', null, global);\ngoog.exportSymbol('proto.Criteria', null, global);\ngoog.exportSymbol('proto.Error', null, global);\ngoog.exportSymbol('proto.Event', null, global);\ngoog.exportSymbol('proto.FilePrompt', null, global);\ngoog.exportSymbol('proto.FunctionCall', null, global);\ngoog.exportSymbol('proto.GetAllAssistantConversationRequest', null, global);\ngoog.exportSymbol('proto.GetAllAssistantConversationResponse', null, global);\ngoog.exportSymbol('proto.GetAllConversationMessageRequest', null, global);\ngoog.exportSymbol('proto.GetAllConversationMessageResponse', null, global);\ngoog.exportSymbol('proto.Knowledge', null, global);\ngoog.exportSymbol('proto.Message', null, global);\ngoog.exportSymbol('proto.Metadata', null, global);\ngoog.exportSymbol('proto.Metric', null, global);\ngoog.exportSymbol('proto.Ordering', null, global);\ngoog.exportSymbol('proto.Organization', null, global);\ngoog.exportSymbol('proto.Paginate', null, global);\ngoog.exportSymbol('proto.Paginated', null, global);\ngoog.exportSymbol('proto.Provider', null, global);\ngoog.exportSymbol('proto.ProviderModel', null, global);\ngoog.exportSymbol('proto.ProviderModelParameter', null, global);\ngoog.exportSymbol('proto.ProviderModelVariable', null, global);\ngoog.exportSymbol('proto.Source', null, global);\ngoog.exportSymbol('proto.SpeechToTextPrompt', null, global);\ngoog.exportSymbol('proto.Tag', null, global);\ngoog.exportSymbol('proto.TextChatCompletePrompt', null, global);\ngoog.exportSymbol('proto.TextCompletePrompt', null, global);\ngoog.exportSymbol('proto.TextPrompt', null, global);\ngoog.exportSymbol('proto.TextToImagePrompt', null, global);\ngoog.exportSymbol('proto.TextToSpeechPrompt', null, global);\ngoog.exportSymbol('proto.ToolCall', null, global);\ngoog.exportSymbol('proto.User', null, global);\ngoog.exportSymbol('proto.Variable', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Criteria = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Criteria, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Criteria.displayName = 'proto.Criteria';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Error = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Error, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Error.displayName = 'proto.Error';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Paginate = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Paginate, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Paginate.displayName = 'proto.Paginate';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Paginated = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Paginated, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Paginated.displayName = 'proto.Paginated';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Ordering = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Ordering, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Ordering.displayName = 'proto.Ordering';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.User = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.User, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.User.displayName = 'proto.User';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.BaseResponse = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.BaseResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.BaseResponse.displayName = 'proto.BaseResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Metadata = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Metadata, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Metadata.displayName = 'proto.Metadata';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Variable = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Variable, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Variable.displayName = 'proto.Variable';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.ProviderModelParameter = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.ProviderModelParameter, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.ProviderModelParameter.displayName = 'proto.ProviderModelParameter';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Provider = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.Provider.repeatedFields_, null);\n};\ngoog.inherits(proto.Provider, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Provider.displayName = 'proto.Provider';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.ProviderModelVariable = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.ProviderModelVariable.repeatedFields_, null);\n};\ngoog.inherits(proto.ProviderModelVariable, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.ProviderModelVariable.displayName = 'proto.ProviderModelVariable';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.ProviderModel = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.ProviderModel.repeatedFields_, null);\n};\ngoog.inherits(proto.ProviderModel, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.ProviderModel.displayName = 'proto.ProviderModel';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Tag = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.Tag.repeatedFields_, null);\n};\ngoog.inherits(proto.Tag, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Tag.displayName = 'proto.Tag';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Organization = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Organization, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Organization.displayName = 'proto.Organization';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Metric = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Metric, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Metric.displayName = 'proto.Metric';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Content = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Content, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Content.displayName = 'proto.Content';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Message = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.Message.repeatedFields_, null);\n};\ngoog.inherits(proto.Message, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Message.displayName = 'proto.Message';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Event = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Event, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Event.displayName = 'proto.Event';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.ToolCall = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.ToolCall, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.ToolCall.displayName = 'proto.ToolCall';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.FunctionCall = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.FunctionCall, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.FunctionCall.displayName = 'proto.FunctionCall';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Knowledge = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Knowledge, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.Knowledge.displayName = 'proto.Knowledge';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.AgentPromptTemplate = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.AgentPromptTemplate.repeatedFields_, null);\n};\ngoog.inherits(proto.AgentPromptTemplate, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.AgentPromptTemplate.displayName = 'proto.AgentPromptTemplate';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.TextPrompt = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.TextPrompt, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.TextPrompt.displayName = 'proto.TextPrompt';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.FilePrompt = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.FilePrompt, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.FilePrompt.displayName = 'proto.FilePrompt';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.TextChatCompletePrompt = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.TextChatCompletePrompt.repeatedFields_, null);\n};\ngoog.inherits(proto.TextChatCompletePrompt, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.TextChatCompletePrompt.displayName = 'proto.TextChatCompletePrompt';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.TextCompletePrompt = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.TextCompletePrompt.repeatedFields_, null);\n};\ngoog.inherits(proto.TextCompletePrompt, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.TextCompletePrompt.displayName = 'proto.TextCompletePrompt';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.TextToImagePrompt = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.TextToImagePrompt.repeatedFields_, null);\n};\ngoog.inherits(proto.TextToImagePrompt, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.TextToImagePrompt.displayName = 'proto.TextToImagePrompt';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.TextToSpeechPrompt = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.TextToSpeechPrompt.repeatedFields_, null);\n};\ngoog.inherits(proto.TextToSpeechPrompt, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.TextToSpeechPrompt.displayName = 'proto.TextToSpeechPrompt';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.SpeechToTextPrompt = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.SpeechToTextPrompt.repeatedFields_, null);\n};\ngoog.inherits(proto.SpeechToTextPrompt, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.SpeechToTextPrompt.displayName = 'proto.SpeechToTextPrompt';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.AssistantMessageStage = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.AssistantMessageStage, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.AssistantMessageStage.displayName = 'proto.AssistantMessageStage';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.AssistantConversationMessage = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.AssistantConversationMessage.repeatedFields_, null);\n};\ngoog.inherits(proto.AssistantConversationMessage, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.AssistantConversationMessage.displayName = 'proto.AssistantConversationMessage';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.AssistantConversationContext = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.AssistantConversationContext, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.AssistantConversationContext.displayName = 'proto.AssistantConversationContext';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.AssistantConversation = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.AssistantConversation.repeatedFields_, null);\n};\ngoog.inherits(proto.AssistantConversation, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.AssistantConversation.displayName = 'proto.AssistantConversation';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.GetAllAssistantConversationRequest = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.GetAllAssistantConversationRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.GetAllAssistantConversationRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.GetAllAssistantConversationRequest.displayName = 'proto.GetAllAssistantConversationRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.GetAllAssistantConversationResponse = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.GetAllAssistantConversationResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.GetAllAssistantConversationResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.GetAllAssistantConversationResponse.displayName = 'proto.GetAllAssistantConversationResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.GetAllConversationMessageRequest = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.GetAllConversationMessageRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.GetAllConversationMessageRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.GetAllConversationMessageRequest.displayName = 'proto.GetAllConversationMessageRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.GetAllConversationMessageResponse = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.GetAllConversationMessageResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.GetAllConversationMessageResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.GetAllConversationMessageResponse.displayName = 'proto.GetAllConversationMessageResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Criteria.prototype.toObject = function(opt_includeInstance) {\n  return proto.Criteria.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Criteria} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Criteria.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    key: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    value: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    logic: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Criteria}\n */\nproto.Criteria.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Criteria;\n  return proto.Criteria.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Criteria} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Criteria}\n */\nproto.Criteria.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setKey(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setValue(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setLogic(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Criteria.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Criteria.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Criteria} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Criteria.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getKey();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getValue();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getLogic();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n};\n\n\n/**\n * optional string key = 1;\n * @return {string}\n */\nproto.Criteria.prototype.getKey = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Criteria} returns this\n */\nproto.Criteria.prototype.setKey = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string value = 2;\n * @return {string}\n */\nproto.Criteria.prototype.getValue = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Criteria} returns this\n */\nproto.Criteria.prototype.setValue = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string logic = 3;\n * @return {string}\n */\nproto.Criteria.prototype.getLogic = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Criteria} returns this\n */\nproto.Criteria.prototype.setLogic = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Error.prototype.toObject = function(opt_includeInstance) {\n  return proto.Error.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Error} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Error.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    errorcode: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    errormessage: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    humanmessage: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Error}\n */\nproto.Error.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Error;\n  return proto.Error.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Error} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Error}\n */\nproto.Error.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setErrorcode(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setErrormessage(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setHumanmessage(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Error.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Error.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Error} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Error.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getErrorcode();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getErrormessage();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getHumanmessage();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 errorCode = 1;\n * @return {string}\n */\nproto.Error.prototype.getErrorcode = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Error} returns this\n */\nproto.Error.prototype.setErrorcode = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string errorMessage = 2;\n * @return {string}\n */\nproto.Error.prototype.getErrormessage = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Error} returns this\n */\nproto.Error.prototype.setErrormessage = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string humanMessage = 3;\n * @return {string}\n */\nproto.Error.prototype.getHumanmessage = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Error} returns this\n */\nproto.Error.prototype.setHumanmessage = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Paginate.prototype.toObject = function(opt_includeInstance) {\n  return proto.Paginate.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Paginate} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Paginate.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    page: jspb.Message.getFieldWithDefault(msg, 1, 0),\n    pagesize: jspb.Message.getFieldWithDefault(msg, 2, 0)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Paginate}\n */\nproto.Paginate.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Paginate;\n  return proto.Paginate.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Paginate} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Paginate}\n */\nproto.Paginate.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {number} */ (reader.readUint32());\n      msg.setPage(value);\n      break;\n    case 2:\n      var value = /** @type {number} */ (reader.readUint32());\n      msg.setPagesize(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Paginate.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Paginate.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Paginate} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Paginate.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getPage();\n  if (f !== 0) {\n    writer.writeUint32(\n      1,\n      f\n    );\n  }\n  f = message.getPagesize();\n  if (f !== 0) {\n    writer.writeUint32(\n      2,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint32 page = 1;\n * @return {number}\n */\nproto.Paginate.prototype.getPage = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.Paginate} returns this\n */\nproto.Paginate.prototype.setPage = function(value) {\n  return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional uint32 pageSize = 2;\n * @return {number}\n */\nproto.Paginate.prototype.getPagesize = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.Paginate} returns this\n */\nproto.Paginate.prototype.setPagesize = function(value) {\n  return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Paginated.prototype.toObject = function(opt_includeInstance) {\n  return proto.Paginated.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Paginated} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Paginated.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    currentpage: jspb.Message.getFieldWithDefault(msg, 1, 0),\n    totalitem: jspb.Message.getFieldWithDefault(msg, 2, 0)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Paginated}\n */\nproto.Paginated.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Paginated;\n  return proto.Paginated.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Paginated} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Paginated}\n */\nproto.Paginated.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {number} */ (reader.readUint32());\n      msg.setCurrentpage(value);\n      break;\n    case 2:\n      var value = /** @type {number} */ (reader.readUint32());\n      msg.setTotalitem(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Paginated.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Paginated.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Paginated} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Paginated.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getCurrentpage();\n  if (f !== 0) {\n    writer.writeUint32(\n      1,\n      f\n    );\n  }\n  f = message.getTotalitem();\n  if (f !== 0) {\n    writer.writeUint32(\n      2,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint32 currentPage = 1;\n * @return {number}\n */\nproto.Paginated.prototype.getCurrentpage = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.Paginated} returns this\n */\nproto.Paginated.prototype.setCurrentpage = function(value) {\n  return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional uint32 totalItem = 2;\n * @return {number}\n */\nproto.Paginated.prototype.getTotalitem = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.Paginated} returns this\n */\nproto.Paginated.prototype.setTotalitem = function(value) {\n  return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Ordering.prototype.toObject = function(opt_includeInstance) {\n  return proto.Ordering.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Ordering} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Ordering.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    column: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    order: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Ordering}\n */\nproto.Ordering.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Ordering;\n  return proto.Ordering.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Ordering} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Ordering}\n */\nproto.Ordering.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setColumn(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setOrder(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Ordering.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Ordering.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Ordering} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Ordering.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getColumn();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getOrder();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n};\n\n\n/**\n * optional string column = 1;\n * @return {string}\n */\nproto.Ordering.prototype.getColumn = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Ordering} returns this\n */\nproto.Ordering.prototype.setColumn = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string order = 2;\n * @return {string}\n */\nproto.Ordering.prototype.getOrder = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Ordering} returns this\n */\nproto.Ordering.prototype.setOrder = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.User.prototype.toObject = function(opt_includeInstance) {\n  return proto.User.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.User} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.User.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    email: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    role: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    createddate: (f = msg.getCreateddate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n    status: jspb.Message.getFieldWithDefault(msg, 5, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.User}\n */\nproto.User.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.User;\n  return proto.User.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.User} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.User}\n */\nproto.User.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setEmail(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setRole(value);\n      break;\n    case 6:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setCreateddate(value);\n      break;\n    case 5:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setStatus(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.User.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.User.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.User} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.User.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getEmail();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getRole();\n  if (f.length > 0) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = message.getCreateddate();\n  if (f != null) {\n    writer.writeMessage(\n      6,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n  f = message.getStatus();\n  if (f.length > 0) {\n    writer.writeString(\n      5,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.User.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.User} returns this\n */\nproto.User.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.User.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.User} returns this\n */\nproto.User.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string email = 3;\n * @return {string}\n */\nproto.User.prototype.getEmail = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.User} returns this\n */\nproto.User.prototype.setEmail = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string role = 4;\n * @return {string}\n */\nproto.User.prototype.getRole = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.User} returns this\n */\nproto.User.prototype.setRole = function(value) {\n  return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional google.protobuf.Timestamp createdDate = 6;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.User.prototype.getCreateddate = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 6));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.User} returns this\n*/\nproto.User.prototype.setCreateddate = function(value) {\n  return jspb.Message.setWrapperField(this, 6, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.User} returns this\n */\nproto.User.prototype.clearCreateddate = function() {\n  return this.setCreateddate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.User.prototype.hasCreateddate = function() {\n  return jspb.Message.getField(this, 6) != null;\n};\n\n\n/**\n * optional string status = 5;\n * @return {string}\n */\nproto.User.prototype.getStatus = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.User} returns this\n */\nproto.User.prototype.setStatus = function(value) {\n  return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.BaseResponse.prototype.toObject = function(opt_includeInstance) {\n  return proto.BaseResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.BaseResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.BaseResponse.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    code: jspb.Message.getFieldWithDefault(msg, 1, 0),\n    success: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n    dataMap: (f = msg.getDataMap()) ? f.toObject(includeInstance, undefined) : [],\n    error: (f = msg.getError()) && proto.Error.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.BaseResponse}\n */\nproto.BaseResponse.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.BaseResponse;\n  return proto.BaseResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.BaseResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.BaseResponse}\n */\nproto.BaseResponse.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {number} */ (reader.readInt32());\n      msg.setCode(value);\n      break;\n    case 2:\n      var value = /** @type {boolean} */ (reader.readBool());\n      msg.setSuccess(value);\n      break;\n    case 3:\n      var value = msg.getDataMap();\n      reader.readMessage(value, function(message, reader) {\n        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n         });\n      break;\n    case 4:\n      var value = new proto.Error;\n      reader.readMessage(value,proto.Error.deserializeBinaryFromReader);\n      msg.setError(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.BaseResponse.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.BaseResponse.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.BaseResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.BaseResponse.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getCode();\n  if (f !== 0) {\n    writer.writeInt32(\n      1,\n      f\n    );\n  }\n  f = message.getSuccess();\n  if (f) {\n    writer.writeBool(\n      2,\n      f\n    );\n  }\n  f = message.getDataMap(true);\n  if (f && f.getLength() > 0) {\n    f.serializeBinary(3, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n  }\n  f = message.getError();\n  if (f != null) {\n    writer.writeMessage(\n      4,\n      f,\n      proto.Error.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional int32 code = 1;\n * @return {number}\n */\nproto.BaseResponse.prototype.getCode = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.BaseResponse} returns this\n */\nproto.BaseResponse.prototype.setCode = function(value) {\n  return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional bool success = 2;\n * @return {boolean}\n */\nproto.BaseResponse.prototype.getSuccess = function() {\n  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.BaseResponse} returns this\n */\nproto.BaseResponse.prototype.setSuccess = function(value) {\n  return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * map<string, string> data = 3;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map<string,string>}\n */\nproto.BaseResponse.prototype.getDataMap = function(opt_noLazyCreate) {\n  return /** @type {!jspb.Map<string,string>} */ (\n      jspb.Message.getMapField(this, 3, opt_noLazyCreate,\n      null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.BaseResponse} returns this\n */\nproto.BaseResponse.prototype.clearDataMap = function() {\n  this.getDataMap().clear();\n  return this;};\n\n\n/**\n * optional Error error = 4;\n * @return {?proto.Error}\n */\nproto.BaseResponse.prototype.getError = function() {\n  return /** @type{?proto.Error} */ (\n    jspb.Message.getWrapperField(this, proto.Error, 4));\n};\n\n\n/**\n * @param {?proto.Error|undefined} value\n * @return {!proto.BaseResponse} returns this\n*/\nproto.BaseResponse.prototype.setError = function(value) {\n  return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.BaseResponse} returns this\n */\nproto.BaseResponse.prototype.clearError = function() {\n  return this.setError(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.BaseResponse.prototype.hasError = function() {\n  return jspb.Message.getField(this, 4) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Metadata.prototype.toObject = function(opt_includeInstance) {\n  return proto.Metadata.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Metadata} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Metadata.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    key: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    value: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Metadata}\n */\nproto.Metadata.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Metadata;\n  return proto.Metadata.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Metadata} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Metadata}\n */\nproto.Metadata.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setKey(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setValue(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Metadata.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Metadata.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Metadata} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Metadata.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getKey();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getValue();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.Metadata.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Metadata} returns this\n */\nproto.Metadata.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string key = 2;\n * @return {string}\n */\nproto.Metadata.prototype.getKey = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Metadata} returns this\n */\nproto.Metadata.prototype.setKey = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string value = 3;\n * @return {string}\n */\nproto.Metadata.prototype.getValue = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Metadata} returns this\n */\nproto.Metadata.prototype.setValue = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Variable.prototype.toObject = function(opt_includeInstance) {\n  return proto.Variable.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Variable} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Variable.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    type: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    defaultvalue: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    pb_in: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n    required: jspb.Message.getBooleanFieldWithDefault(msg, 6, false),\n    label: jspb.Message.getFieldWithDefault(msg, 7, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Variable}\n */\nproto.Variable.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Variable;\n  return proto.Variable.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Variable} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Variable}\n */\nproto.Variable.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setType(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setDefaultvalue(value);\n      break;\n    case 5:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setIn(value);\n      break;\n    case 6:\n      var value = /** @type {boolean} */ (reader.readBool());\n      msg.setRequired(value);\n      break;\n    case 7:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setLabel(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Variable.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Variable.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Variable} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Variable.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getType();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = /** @type {string} */ (jspb.Message.getField(message, 4));\n  if (f != null) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = /** @type {string} */ (jspb.Message.getField(message, 5));\n  if (f != null) {\n    writer.writeString(\n      5,\n      f\n    );\n  }\n  f = message.getRequired();\n  if (f) {\n    writer.writeBool(\n      6,\n      f\n    );\n  }\n  f = /** @type {string} */ (jspb.Message.getField(message, 7));\n  if (f != null) {\n    writer.writeString(\n      7,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.Variable.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.Variable.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string type = 3;\n * @return {string}\n */\nproto.Variable.prototype.getType = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.setType = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string defaultValue = 4;\n * @return {string}\n */\nproto.Variable.prototype.getDefaultvalue = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.setDefaultvalue = function(value) {\n  return jspb.Message.setField(this, 4, value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.clearDefaultvalue = function() {\n  return jspb.Message.setField(this, 4, undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Variable.prototype.hasDefaultvalue = function() {\n  return jspb.Message.getField(this, 4) != null;\n};\n\n\n/**\n * optional string in = 5;\n * @return {string}\n */\nproto.Variable.prototype.getIn = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.setIn = function(value) {\n  return jspb.Message.setField(this, 5, value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.clearIn = function() {\n  return jspb.Message.setField(this, 5, undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Variable.prototype.hasIn = function() {\n  return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * optional bool required = 6;\n * @return {boolean}\n */\nproto.Variable.prototype.getRequired = function() {\n  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 6, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.setRequired = function(value) {\n  return jspb.Message.setProto3BooleanField(this, 6, value);\n};\n\n\n/**\n * optional string label = 7;\n * @return {string}\n */\nproto.Variable.prototype.getLabel = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.setLabel = function(value) {\n  return jspb.Message.setField(this, 7, value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.Variable} returns this\n */\nproto.Variable.prototype.clearLabel = function() {\n  return jspb.Message.setField(this, 7, undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Variable.prototype.hasLabel = function() {\n  return jspb.Message.getField(this, 7) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.ProviderModelParameter.prototype.toObject = function(opt_includeInstance) {\n  return proto.ProviderModelParameter.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.ProviderModelParameter} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.ProviderModelParameter.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    providermodelvariableid: jspb.Message.getFieldWithDefault(msg, 2, \"0\"),\n    value: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.ProviderModelParameter}\n */\nproto.ProviderModelParameter.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.ProviderModelParameter;\n  return proto.ProviderModelParameter.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.ProviderModelParameter} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.ProviderModelParameter}\n */\nproto.ProviderModelParameter.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setProvidermodelvariableid(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setValue(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.ProviderModelParameter.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.ProviderModelParameter.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.ProviderModelParameter} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.ProviderModelParameter.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getProvidermodelvariableid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      2,\n      f\n    );\n  }\n  f = message.getValue();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.ProviderModelParameter.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelParameter} returns this\n */\nproto.ProviderModelParameter.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional uint64 providerModelVariableId = 2;\n * @return {string}\n */\nproto.ProviderModelParameter.prototype.getProvidermodelvariableid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelParameter} returns this\n */\nproto.ProviderModelParameter.prototype.setProvidermodelvariableid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 2, value);\n};\n\n\n/**\n * optional string value = 3;\n * @return {string}\n */\nproto.ProviderModelParameter.prototype.getValue = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelParameter} returns this\n */\nproto.ProviderModelParameter.prototype.setValue = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.Provider.repeatedFields_ = [9];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Provider.prototype.toObject = function(opt_includeInstance) {\n  return proto.Provider.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Provider} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Provider.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    description: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    humanname: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    image: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n    website: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n    status: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n    connectconfigurationList: jspb.Message.toObjectList(msg.getConnectconfigurationList(),\n    proto.Variable.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Provider}\n */\nproto.Provider.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Provider;\n  return proto.Provider.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Provider} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Provider}\n */\nproto.Provider.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setDescription(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setHumanname(value);\n      break;\n    case 5:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setImage(value);\n      break;\n    case 6:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setWebsite(value);\n      break;\n    case 7:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setStatus(value);\n      break;\n    case 9:\n      var value = new proto.Variable;\n      reader.readMessage(value,proto.Variable.deserializeBinaryFromReader);\n      msg.addConnectconfiguration(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Provider.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Provider.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Provider} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Provider.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getDescription();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getHumanname();\n  if (f.length > 0) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = message.getImage();\n  if (f.length > 0) {\n    writer.writeString(\n      5,\n      f\n    );\n  }\n  f = message.getWebsite();\n  if (f.length > 0) {\n    writer.writeString(\n      6,\n      f\n    );\n  }\n  f = message.getStatus();\n  if (f.length > 0) {\n    writer.writeString(\n      7,\n      f\n    );\n  }\n  f = message.getConnectconfigurationList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      9,\n      f,\n      proto.Variable.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.Provider.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Provider} returns this\n */\nproto.Provider.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.Provider.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Provider} returns this\n */\nproto.Provider.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string description = 3;\n * @return {string}\n */\nproto.Provider.prototype.getDescription = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Provider} returns this\n */\nproto.Provider.prototype.setDescription = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string humanName = 4;\n * @return {string}\n */\nproto.Provider.prototype.getHumanname = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Provider} returns this\n */\nproto.Provider.prototype.setHumanname = function(value) {\n  return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string image = 5;\n * @return {string}\n */\nproto.Provider.prototype.getImage = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Provider} returns this\n */\nproto.Provider.prototype.setImage = function(value) {\n  return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string website = 6;\n * @return {string}\n */\nproto.Provider.prototype.getWebsite = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Provider} returns this\n */\nproto.Provider.prototype.setWebsite = function(value) {\n  return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional string status = 7;\n * @return {string}\n */\nproto.Provider.prototype.getStatus = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Provider} returns this\n */\nproto.Provider.prototype.setStatus = function(value) {\n  return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * repeated Variable connectConfiguration = 9;\n * @return {!Array<!proto.Variable>}\n */\nproto.Provider.prototype.getConnectconfigurationList = function() {\n  return /** @type{!Array<!proto.Variable>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Variable, 9));\n};\n\n\n/**\n * @param {!Array<!proto.Variable>} value\n * @return {!proto.Provider} returns this\n*/\nproto.Provider.prototype.setConnectconfigurationList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 9, value);\n};\n\n\n/**\n * @param {!proto.Variable=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Variable}\n */\nproto.Provider.prototype.addConnectconfiguration = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 9, opt_value, proto.Variable, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.Provider} returns this\n */\nproto.Provider.prototype.clearConnectconfigurationList = function() {\n  return this.setConnectconfigurationList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.ProviderModelVariable.repeatedFields_ = [9];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.ProviderModelVariable.prototype.toObject = function(opt_includeInstance) {\n  return proto.ProviderModelVariable.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.ProviderModelVariable} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.ProviderModelVariable.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    providermodelid: jspb.Message.getFieldWithDefault(msg, 2, \"0\"),\n    key: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    name: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    description: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n    defaultvalue: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n    type: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n    place: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n    metadatasList: jspb.Message.toObjectList(msg.getMetadatasList(),\n    proto.Metadata.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.ProviderModelVariable}\n */\nproto.ProviderModelVariable.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.ProviderModelVariable;\n  return proto.ProviderModelVariable.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.ProviderModelVariable} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.ProviderModelVariable}\n */\nproto.ProviderModelVariable.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setProvidermodelid(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setKey(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 5:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setDescription(value);\n      break;\n    case 6:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setDefaultvalue(value);\n      break;\n    case 7:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setType(value);\n      break;\n    case 8:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setPlace(value);\n      break;\n    case 9:\n      var value = new proto.Metadata;\n      reader.readMessage(value,proto.Metadata.deserializeBinaryFromReader);\n      msg.addMetadatas(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.ProviderModelVariable.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.ProviderModelVariable.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.ProviderModelVariable} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.ProviderModelVariable.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getProvidermodelid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      2,\n      f\n    );\n  }\n  f = message.getKey();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = message.getDescription();\n  if (f.length > 0) {\n    writer.writeString(\n      5,\n      f\n    );\n  }\n  f = message.getDefaultvalue();\n  if (f.length > 0) {\n    writer.writeString(\n      6,\n      f\n    );\n  }\n  f = message.getType();\n  if (f.length > 0) {\n    writer.writeString(\n      7,\n      f\n    );\n  }\n  f = message.getPlace();\n  if (f.length > 0) {\n    writer.writeString(\n      8,\n      f\n    );\n  }\n  f = message.getMetadatasList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      9,\n      f,\n      proto.Metadata.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.ProviderModelVariable.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional uint64 providerModelId = 2;\n * @return {string}\n */\nproto.ProviderModelVariable.prototype.getProvidermodelid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.setProvidermodelid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 2, value);\n};\n\n\n/**\n * optional string key = 3;\n * @return {string}\n */\nproto.ProviderModelVariable.prototype.getKey = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.setKey = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string name = 4;\n * @return {string}\n */\nproto.ProviderModelVariable.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string description = 5;\n * @return {string}\n */\nproto.ProviderModelVariable.prototype.getDescription = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.setDescription = function(value) {\n  return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string defaultValue = 6;\n * @return {string}\n */\nproto.ProviderModelVariable.prototype.getDefaultvalue = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.setDefaultvalue = function(value) {\n  return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional string type = 7;\n * @return {string}\n */\nproto.ProviderModelVariable.prototype.getType = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.setType = function(value) {\n  return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional string place = 8;\n * @return {string}\n */\nproto.ProviderModelVariable.prototype.getPlace = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.setPlace = function(value) {\n  return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * repeated Metadata metadatas = 9;\n * @return {!Array<!proto.Metadata>}\n */\nproto.ProviderModelVariable.prototype.getMetadatasList = function() {\n  return /** @type{!Array<!proto.Metadata>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Metadata, 9));\n};\n\n\n/**\n * @param {!Array<!proto.Metadata>} value\n * @return {!proto.ProviderModelVariable} returns this\n*/\nproto.ProviderModelVariable.prototype.setMetadatasList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 9, value);\n};\n\n\n/**\n * @param {!proto.Metadata=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metadata}\n */\nproto.ProviderModelVariable.prototype.addMetadatas = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 9, opt_value, proto.Metadata, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.ProviderModelVariable} returns this\n */\nproto.ProviderModelVariable.prototype.clearMetadatasList = function() {\n  return this.setMetadatasList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.ProviderModel.repeatedFields_ = [9,10];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.ProviderModel.prototype.toObject = function(opt_includeInstance) {\n  return proto.ProviderModel.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.ProviderModel} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.ProviderModel.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    description: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    humanname: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    category: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n    status: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n    owner: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n    provider: (f = msg.getProvider()) && proto.Provider.toObject(includeInstance, f),\n    parametersList: jspb.Message.toObjectList(msg.getParametersList(),\n    proto.ProviderModelVariable.toObject, includeInstance),\n    metadatasList: jspb.Message.toObjectList(msg.getMetadatasList(),\n    proto.Metadata.toObject, includeInstance),\n    providerid: jspb.Message.getFieldWithDefault(msg, 11, \"0\"),\n    endpoint: jspb.Message.getFieldWithDefault(msg, 12, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.ProviderModel}\n */\nproto.ProviderModel.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.ProviderModel;\n  return proto.ProviderModel.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.ProviderModel} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.ProviderModel}\n */\nproto.ProviderModel.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setDescription(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setHumanname(value);\n      break;\n    case 5:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setCategory(value);\n      break;\n    case 6:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setStatus(value);\n      break;\n    case 7:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setOwner(value);\n      break;\n    case 8:\n      var value = new proto.Provider;\n      reader.readMessage(value,proto.Provider.deserializeBinaryFromReader);\n      msg.setProvider(value);\n      break;\n    case 9:\n      var value = new proto.ProviderModelVariable;\n      reader.readMessage(value,proto.ProviderModelVariable.deserializeBinaryFromReader);\n      msg.addParameters(value);\n      break;\n    case 10:\n      var value = new proto.Metadata;\n      reader.readMessage(value,proto.Metadata.deserializeBinaryFromReader);\n      msg.addMetadatas(value);\n      break;\n    case 11:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setProviderid(value);\n      break;\n    case 12:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setEndpoint(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.ProviderModel.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.ProviderModel.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.ProviderModel} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.ProviderModel.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getDescription();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getHumanname();\n  if (f.length > 0) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = message.getCategory();\n  if (f.length > 0) {\n    writer.writeString(\n      5,\n      f\n    );\n  }\n  f = message.getStatus();\n  if (f.length > 0) {\n    writer.writeString(\n      6,\n      f\n    );\n  }\n  f = message.getOwner();\n  if (f.length > 0) {\n    writer.writeString(\n      7,\n      f\n    );\n  }\n  f = message.getProvider();\n  if (f != null) {\n    writer.writeMessage(\n      8,\n      f,\n      proto.Provider.serializeBinaryToWriter\n    );\n  }\n  f = message.getParametersList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      9,\n      f,\n      proto.ProviderModelVariable.serializeBinaryToWriter\n    );\n  }\n  f = message.getMetadatasList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      10,\n      f,\n      proto.Metadata.serializeBinaryToWriter\n    );\n  }\n  f = message.getProviderid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      11,\n      f\n    );\n  }\n  f = message.getEndpoint();\n  if (f.length > 0) {\n    writer.writeString(\n      12,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.ProviderModel.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.ProviderModel.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string description = 3;\n * @return {string}\n */\nproto.ProviderModel.prototype.getDescription = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setDescription = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string humanName = 4;\n * @return {string}\n */\nproto.ProviderModel.prototype.getHumanname = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setHumanname = function(value) {\n  return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string category = 5;\n * @return {string}\n */\nproto.ProviderModel.prototype.getCategory = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setCategory = function(value) {\n  return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string status = 6;\n * @return {string}\n */\nproto.ProviderModel.prototype.getStatus = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setStatus = function(value) {\n  return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional string owner = 7;\n * @return {string}\n */\nproto.ProviderModel.prototype.getOwner = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setOwner = function(value) {\n  return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional Provider provider = 8;\n * @return {?proto.Provider}\n */\nproto.ProviderModel.prototype.getProvider = function() {\n  return /** @type{?proto.Provider} */ (\n    jspb.Message.getWrapperField(this, proto.Provider, 8));\n};\n\n\n/**\n * @param {?proto.Provider|undefined} value\n * @return {!proto.ProviderModel} returns this\n*/\nproto.ProviderModel.prototype.setProvider = function(value) {\n  return jspb.Message.setWrapperField(this, 8, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.clearProvider = function() {\n  return this.setProvider(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.ProviderModel.prototype.hasProvider = function() {\n  return jspb.Message.getField(this, 8) != null;\n};\n\n\n/**\n * repeated ProviderModelVariable parameters = 9;\n * @return {!Array<!proto.ProviderModelVariable>}\n */\nproto.ProviderModel.prototype.getParametersList = function() {\n  return /** @type{!Array<!proto.ProviderModelVariable>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.ProviderModelVariable, 9));\n};\n\n\n/**\n * @param {!Array<!proto.ProviderModelVariable>} value\n * @return {!proto.ProviderModel} returns this\n*/\nproto.ProviderModel.prototype.setParametersList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 9, value);\n};\n\n\n/**\n * @param {!proto.ProviderModelVariable=} opt_value\n * @param {number=} opt_index\n * @return {!proto.ProviderModelVariable}\n */\nproto.ProviderModel.prototype.addParameters = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 9, opt_value, proto.ProviderModelVariable, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.clearParametersList = function() {\n  return this.setParametersList([]);\n};\n\n\n/**\n * repeated Metadata metadatas = 10;\n * @return {!Array<!proto.Metadata>}\n */\nproto.ProviderModel.prototype.getMetadatasList = function() {\n  return /** @type{!Array<!proto.Metadata>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Metadata, 10));\n};\n\n\n/**\n * @param {!Array<!proto.Metadata>} value\n * @return {!proto.ProviderModel} returns this\n*/\nproto.ProviderModel.prototype.setMetadatasList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 10, value);\n};\n\n\n/**\n * @param {!proto.Metadata=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metadata}\n */\nproto.ProviderModel.prototype.addMetadatas = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 10, opt_value, proto.Metadata, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.clearMetadatasList = function() {\n  return this.setMetadatasList([]);\n};\n\n\n/**\n * optional uint64 providerId = 11;\n * @return {string}\n */\nproto.ProviderModel.prototype.getProviderid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setProviderid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 11, value);\n};\n\n\n/**\n * optional string endpoint = 12;\n * @return {string}\n */\nproto.ProviderModel.prototype.getEndpoint = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ProviderModel} returns this\n */\nproto.ProviderModel.prototype.setEndpoint = function(value) {\n  return jspb.Message.setProto3StringField(this, 12, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.Tag.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Tag.prototype.toObject = function(opt_includeInstance) {\n  return proto.Tag.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Tag} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Tag.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    tagList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Tag}\n */\nproto.Tag.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Tag;\n  return proto.Tag.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Tag} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Tag}\n */\nproto.Tag.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.addTag(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Tag.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Tag.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Tag} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Tag.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getTagList();\n  if (f.length > 0) {\n    writer.writeRepeatedString(\n      2,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.Tag.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Tag} returns this\n */\nproto.Tag.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * repeated string tag = 2;\n * @return {!Array<string>}\n */\nproto.Tag.prototype.getTagList = function() {\n  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 2));\n};\n\n\n/**\n * @param {!Array<string>} value\n * @return {!proto.Tag} returns this\n */\nproto.Tag.prototype.setTagList = function(value) {\n  return jspb.Message.setField(this, 2, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.Tag} returns this\n */\nproto.Tag.prototype.addTag = function(value, opt_index) {\n  return jspb.Message.addToRepeatedField(this, 2, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.Tag} returns this\n */\nproto.Tag.prototype.clearTagList = function() {\n  return this.setTagList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Organization.prototype.toObject = function(opt_includeInstance) {\n  return proto.Organization.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Organization} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Organization.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    description: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    industry: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    contact: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n    size: jspb.Message.getFieldWithDefault(msg, 6, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Organization}\n */\nproto.Organization.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Organization;\n  return proto.Organization.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Organization} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Organization}\n */\nproto.Organization.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setDescription(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setIndustry(value);\n      break;\n    case 5:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setContact(value);\n      break;\n    case 6:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setSize(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Organization.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Organization.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Organization} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Organization.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getDescription();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getIndustry();\n  if (f.length > 0) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = message.getContact();\n  if (f.length > 0) {\n    writer.writeString(\n      5,\n      f\n    );\n  }\n  f = message.getSize();\n  if (f.length > 0) {\n    writer.writeString(\n      6,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.Organization.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Organization} returns this\n */\nproto.Organization.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.Organization.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Organization} returns this\n */\nproto.Organization.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string description = 3;\n * @return {string}\n */\nproto.Organization.prototype.getDescription = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Organization} returns this\n */\nproto.Organization.prototype.setDescription = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string industry = 4;\n * @return {string}\n */\nproto.Organization.prototype.getIndustry = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Organization} returns this\n */\nproto.Organization.prototype.setIndustry = function(value) {\n  return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string contact = 5;\n * @return {string}\n */\nproto.Organization.prototype.getContact = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Organization} returns this\n */\nproto.Organization.prototype.setContact = function(value) {\n  return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string size = 6;\n * @return {string}\n */\nproto.Organization.prototype.getSize = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Organization} returns this\n */\nproto.Organization.prototype.setSize = function(value) {\n  return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Metric.prototype.toObject = function(opt_includeInstance) {\n  return proto.Metric.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Metric} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Metric.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    value: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    description: jspb.Message.getFieldWithDefault(msg, 3, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Metric}\n */\nproto.Metric.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Metric;\n  return proto.Metric.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Metric} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Metric}\n */\nproto.Metric.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setValue(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setDescription(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Metric.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Metric.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Metric} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Metric.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getValue();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getDescription();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.Metric.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Metric} returns this\n */\nproto.Metric.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string value = 2;\n * @return {string}\n */\nproto.Metric.prototype.getValue = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Metric} returns this\n */\nproto.Metric.prototype.setValue = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string description = 3;\n * @return {string}\n */\nproto.Metric.prototype.getDescription = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Metric} returns this\n */\nproto.Metric.prototype.setDescription = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Content.prototype.toObject = function(opt_includeInstance) {\n  return proto.Content.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Content} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Content.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    contenttype: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    contentformat: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    content: msg.getContent_asB64(),\n    meta: (f = msg.getMeta()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Content}\n */\nproto.Content.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Content;\n  return proto.Content.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Content} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Content}\n */\nproto.Content.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setContenttype(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setContentformat(value);\n      break;\n    case 4:\n      var value = /** @type {!Uint8Array} */ (reader.readBytes());\n      msg.setContent(value);\n      break;\n    case 5:\n      var value = new google_protobuf_struct_pb.Struct;\n      reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n      msg.setMeta(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Content.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Content.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Content} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Content.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getContenttype();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getContentformat();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getContent_asU8();\n  if (f.length > 0) {\n    writer.writeBytes(\n      4,\n      f\n    );\n  }\n  f = message.getMeta();\n  if (f != null) {\n    writer.writeMessage(\n      5,\n      f,\n      google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.Content.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Content} returns this\n */\nproto.Content.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string contentType = 2;\n * @return {string}\n */\nproto.Content.prototype.getContenttype = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Content} returns this\n */\nproto.Content.prototype.setContenttype = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string contentFormat = 3;\n * @return {string}\n */\nproto.Content.prototype.getContentformat = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Content} returns this\n */\nproto.Content.prototype.setContentformat = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional bytes content = 4;\n * @return {!(string|Uint8Array)}\n */\nproto.Content.prototype.getContent = function() {\n  return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * optional bytes content = 4;\n * This is a type-conversion wrapper around `getContent()`\n * @return {string}\n */\nproto.Content.prototype.getContent_asB64 = function() {\n  return /** @type {string} */ (jspb.Message.bytesAsB64(\n      this.getContent()));\n};\n\n\n/**\n * optional bytes content = 4;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getContent()`\n * @return {!Uint8Array}\n */\nproto.Content.prototype.getContent_asU8 = function() {\n  return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n      this.getContent()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.Content} returns this\n */\nproto.Content.prototype.setContent = function(value) {\n  return jspb.Message.setProto3BytesField(this, 4, value);\n};\n\n\n/**\n * optional google.protobuf.Struct meta = 5;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.Content.prototype.getMeta = function() {\n  return /** @type{?proto.google.protobuf.Struct} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 5));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.Content} returns this\n*/\nproto.Content.prototype.setMeta = function(value) {\n  return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Content} returns this\n */\nproto.Content.prototype.clearMeta = function() {\n  return this.setMeta(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Content.prototype.hasMeta = function() {\n  return jspb.Message.getField(this, 5) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.Message.repeatedFields_ = [2,3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Message.prototype.toObject = function(opt_includeInstance) {\n  return proto.Message.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Message} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Message.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    role: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    contentsList: jspb.Message.toObjectList(msg.getContentsList(),\n    proto.Content.toObject, includeInstance),\n    toolcallsList: jspb.Message.toObjectList(msg.getToolcallsList(),\n    proto.ToolCall.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Message}\n */\nproto.Message.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Message;\n  return proto.Message.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Message} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Message}\n */\nproto.Message.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setRole(value);\n      break;\n    case 2:\n      var value = new proto.Content;\n      reader.readMessage(value,proto.Content.deserializeBinaryFromReader);\n      msg.addContents(value);\n      break;\n    case 3:\n      var value = new proto.ToolCall;\n      reader.readMessage(value,proto.ToolCall.deserializeBinaryFromReader);\n      msg.addToolcalls(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Message.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Message.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Message} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Message.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getRole();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getContentsList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      2,\n      f,\n      proto.Content.serializeBinaryToWriter\n    );\n  }\n  f = message.getToolcallsList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      3,\n      f,\n      proto.ToolCall.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional string role = 1;\n * @return {string}\n */\nproto.Message.prototype.getRole = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setRole = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * repeated Content contents = 2;\n * @return {!Array<!proto.Content>}\n */\nproto.Message.prototype.getContentsList = function() {\n  return /** @type{!Array<!proto.Content>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Content, 2));\n};\n\n\n/**\n * @param {!Array<!proto.Content>} value\n * @return {!proto.Message} returns this\n*/\nproto.Message.prototype.setContentsList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.Content=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Content}\n */\nproto.Message.prototype.addContents = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.Content, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.clearContentsList = function() {\n  return this.setContentsList([]);\n};\n\n\n/**\n * repeated ToolCall toolCalls = 3;\n * @return {!Array<!proto.ToolCall>}\n */\nproto.Message.prototype.getToolcallsList = function() {\n  return /** @type{!Array<!proto.ToolCall>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.ToolCall, 3));\n};\n\n\n/**\n * @param {!Array<!proto.ToolCall>} value\n * @return {!proto.Message} returns this\n*/\nproto.Message.prototype.setToolcallsList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.ToolCall=} opt_value\n * @param {number=} opt_index\n * @return {!proto.ToolCall}\n */\nproto.Message.prototype.addToolcalls = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.ToolCall, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.clearToolcallsList = function() {\n  return this.setToolcallsList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Event.prototype.toObject = function(opt_includeInstance) {\n  return proto.Event.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Event} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Event.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    meta: (f = msg.getMeta()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f),\n    time: (f = msg.getTime()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Event}\n */\nproto.Event.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Event;\n  return proto.Event.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Event} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Event}\n */\nproto.Event.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 2:\n      var value = new google_protobuf_struct_pb.Struct;\n      reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n      msg.setMeta(value);\n      break;\n    case 3:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setTime(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Event.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Event.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Event} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Event.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getMeta();\n  if (f != null) {\n    writer.writeMessage(\n      2,\n      f,\n      google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n    );\n  }\n  f = message.getTime();\n  if (f != null) {\n    writer.writeMessage(\n      3,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.Event.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Event} returns this\n */\nproto.Event.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional google.protobuf.Struct meta = 2;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.Event.prototype.getMeta = function() {\n  return /** @type{?proto.google.protobuf.Struct} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 2));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.Event} returns this\n*/\nproto.Event.prototype.setMeta = function(value) {\n  return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Event} returns this\n */\nproto.Event.prototype.clearMeta = function() {\n  return this.setMeta(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Event.prototype.hasMeta = function() {\n  return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional google.protobuf.Timestamp time = 3;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.Event.prototype.getTime = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.Event} returns this\n*/\nproto.Event.prototype.setTime = function(value) {\n  return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Event} returns this\n */\nproto.Event.prototype.clearTime = function() {\n  return this.setTime(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Event.prototype.hasTime = function() {\n  return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.ToolCall.prototype.toObject = function(opt_includeInstance) {\n  return proto.ToolCall.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.ToolCall} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.ToolCall.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    type: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    pb_function: (f = msg.getFunction()) && proto.FunctionCall.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.ToolCall}\n */\nproto.ToolCall.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.ToolCall;\n  return proto.ToolCall.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.ToolCall} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.ToolCall}\n */\nproto.ToolCall.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setType(value);\n      break;\n    case 3:\n      var value = new proto.FunctionCall;\n      reader.readMessage(value,proto.FunctionCall.deserializeBinaryFromReader);\n      msg.setFunction(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.ToolCall.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.ToolCall.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.ToolCall} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.ToolCall.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getType();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getFunction();\n  if (f != null) {\n    writer.writeMessage(\n      3,\n      f,\n      proto.FunctionCall.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional string id = 1;\n * @return {string}\n */\nproto.ToolCall.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ToolCall} returns this\n */\nproto.ToolCall.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string type = 2;\n * @return {string}\n */\nproto.ToolCall.prototype.getType = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.ToolCall} returns this\n */\nproto.ToolCall.prototype.setType = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional FunctionCall function = 3;\n * @return {?proto.FunctionCall}\n */\nproto.ToolCall.prototype.getFunction = function() {\n  return /** @type{?proto.FunctionCall} */ (\n    jspb.Message.getWrapperField(this, proto.FunctionCall, 3));\n};\n\n\n/**\n * @param {?proto.FunctionCall|undefined} value\n * @return {!proto.ToolCall} returns this\n*/\nproto.ToolCall.prototype.setFunction = function(value) {\n  return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.ToolCall} returns this\n */\nproto.ToolCall.prototype.clearFunction = function() {\n  return this.setFunction(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.ToolCall.prototype.hasFunction = function() {\n  return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.FunctionCall.prototype.toObject = function(opt_includeInstance) {\n  return proto.FunctionCall.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.FunctionCall} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.FunctionCall.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    arguments: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    args: (f = msg.getArgs()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.FunctionCall}\n */\nproto.FunctionCall.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.FunctionCall;\n  return proto.FunctionCall.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.FunctionCall} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.FunctionCall}\n */\nproto.FunctionCall.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setArguments(value);\n      break;\n    case 3:\n      var value = new google_protobuf_struct_pb.Struct;\n      reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n      msg.setArgs(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.FunctionCall.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.FunctionCall.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.FunctionCall} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.FunctionCall.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getArguments();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getArgs();\n  if (f != null) {\n    writer.writeMessage(\n      3,\n      f,\n      google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.FunctionCall.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.FunctionCall} returns this\n */\nproto.FunctionCall.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string arguments = 2;\n * @return {string}\n */\nproto.FunctionCall.prototype.getArguments = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.FunctionCall} returns this\n */\nproto.FunctionCall.prototype.setArguments = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional google.protobuf.Struct args = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.FunctionCall.prototype.getArgs = function() {\n  return /** @type{?proto.google.protobuf.Struct} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.FunctionCall} returns this\n*/\nproto.FunctionCall.prototype.setArgs = function(value) {\n  return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.FunctionCall} returns this\n */\nproto.FunctionCall.prototype.clearArgs = function() {\n  return this.setArgs(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.FunctionCall.prototype.hasArgs = function() {\n  return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Knowledge.prototype.toObject = function(opt_includeInstance) {\n  return proto.Knowledge.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.Knowledge} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Knowledge.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    description: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    visibility: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    language: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n    embeddingprovidermodelid: jspb.Message.getFieldWithDefault(msg, 6, \"0\"),\n    embeddingprovidermodel: (f = msg.getEmbeddingprovidermodel()) && proto.ProviderModel.toObject(includeInstance, f),\n    status: jspb.Message.getFieldWithDefault(msg, 12, \"\"),\n    createdby: jspb.Message.getFieldWithDefault(msg, 13, \"0\"),\n    createduser: (f = msg.getCreateduser()) && proto.User.toObject(includeInstance, f),\n    updatedby: jspb.Message.getFieldWithDefault(msg, 15, \"0\"),\n    updateduser: (f = msg.getUpdateduser()) && proto.User.toObject(includeInstance, f),\n    createddate: (f = msg.getCreateddate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n    updateddate: (f = msg.getUpdateddate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n    organizationid: jspb.Message.getFieldWithDefault(msg, 19, \"0\"),\n    projectid: jspb.Message.getFieldWithDefault(msg, 20, \"0\"),\n    organization: (f = msg.getOrganization()) && proto.Organization.toObject(includeInstance, f),\n    knowledgetag: (f = msg.getKnowledgetag()) && proto.Tag.toObject(includeInstance, f),\n    documentcount: jspb.Message.getFieldWithDefault(msg, 23, 0),\n    tokencount: jspb.Message.getFieldWithDefault(msg, 24, 0),\n    wordcount: jspb.Message.getFieldWithDefault(msg, 25, 0),\n    embeddingproviderid: jspb.Message.getFieldWithDefault(msg, 26, \"0\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Knowledge}\n */\nproto.Knowledge.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.Knowledge;\n  return proto.Knowledge.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Knowledge} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Knowledge}\n */\nproto.Knowledge.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setDescription(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setVisibility(value);\n      break;\n    case 5:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setLanguage(value);\n      break;\n    case 6:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setEmbeddingprovidermodelid(value);\n      break;\n    case 7:\n      var value = new proto.ProviderModel;\n      reader.readMessage(value,proto.ProviderModel.deserializeBinaryFromReader);\n      msg.setEmbeddingprovidermodel(value);\n      break;\n    case 12:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setStatus(value);\n      break;\n    case 13:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setCreatedby(value);\n      break;\n    case 14:\n      var value = new proto.User;\n      reader.readMessage(value,proto.User.deserializeBinaryFromReader);\n      msg.setCreateduser(value);\n      break;\n    case 15:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setUpdatedby(value);\n      break;\n    case 16:\n      var value = new proto.User;\n      reader.readMessage(value,proto.User.deserializeBinaryFromReader);\n      msg.setUpdateduser(value);\n      break;\n    case 17:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setCreateddate(value);\n      break;\n    case 18:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setUpdateddate(value);\n      break;\n    case 19:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setOrganizationid(value);\n      break;\n    case 20:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setProjectid(value);\n      break;\n    case 21:\n      var value = new proto.Organization;\n      reader.readMessage(value,proto.Organization.deserializeBinaryFromReader);\n      msg.setOrganization(value);\n      break;\n    case 22:\n      var value = new proto.Tag;\n      reader.readMessage(value,proto.Tag.deserializeBinaryFromReader);\n      msg.setKnowledgetag(value);\n      break;\n    case 23:\n      var value = /** @type {number} */ (reader.readUint32());\n      msg.setDocumentcount(value);\n      break;\n    case 24:\n      var value = /** @type {number} */ (reader.readUint32());\n      msg.setTokencount(value);\n      break;\n    case 25:\n      var value = /** @type {number} */ (reader.readUint32());\n      msg.setWordcount(value);\n      break;\n    case 26:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setEmbeddingproviderid(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Knowledge.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.Knowledge.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Knowledge} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Knowledge.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getDescription();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getVisibility();\n  if (f.length > 0) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = message.getLanguage();\n  if (f.length > 0) {\n    writer.writeString(\n      5,\n      f\n    );\n  }\n  f = message.getEmbeddingprovidermodelid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      6,\n      f\n    );\n  }\n  f = message.getEmbeddingprovidermodel();\n  if (f != null) {\n    writer.writeMessage(\n      7,\n      f,\n      proto.ProviderModel.serializeBinaryToWriter\n    );\n  }\n  f = message.getStatus();\n  if (f.length > 0) {\n    writer.writeString(\n      12,\n      f\n    );\n  }\n  f = message.getCreatedby();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      13,\n      f\n    );\n  }\n  f = message.getCreateduser();\n  if (f != null) {\n    writer.writeMessage(\n      14,\n      f,\n      proto.User.serializeBinaryToWriter\n    );\n  }\n  f = message.getUpdatedby();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      15,\n      f\n    );\n  }\n  f = message.getUpdateduser();\n  if (f != null) {\n    writer.writeMessage(\n      16,\n      f,\n      proto.User.serializeBinaryToWriter\n    );\n  }\n  f = message.getCreateddate();\n  if (f != null) {\n    writer.writeMessage(\n      17,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n  f = message.getUpdateddate();\n  if (f != null) {\n    writer.writeMessage(\n      18,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n  f = message.getOrganizationid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      19,\n      f\n    );\n  }\n  f = message.getProjectid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      20,\n      f\n    );\n  }\n  f = message.getOrganization();\n  if (f != null) {\n    writer.writeMessage(\n      21,\n      f,\n      proto.Organization.serializeBinaryToWriter\n    );\n  }\n  f = message.getKnowledgetag();\n  if (f != null) {\n    writer.writeMessage(\n      22,\n      f,\n      proto.Tag.serializeBinaryToWriter\n    );\n  }\n  f = message.getDocumentcount();\n  if (f !== 0) {\n    writer.writeUint32(\n      23,\n      f\n    );\n  }\n  f = message.getTokencount();\n  if (f !== 0) {\n    writer.writeUint32(\n      24,\n      f\n    );\n  }\n  f = message.getWordcount();\n  if (f !== 0) {\n    writer.writeUint32(\n      25,\n      f\n    );\n  }\n  f = message.getEmbeddingproviderid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      26,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.Knowledge.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.Knowledge.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string description = 3;\n * @return {string}\n */\nproto.Knowledge.prototype.getDescription = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setDescription = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string visibility = 4;\n * @return {string}\n */\nproto.Knowledge.prototype.getVisibility = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setVisibility = function(value) {\n  return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string language = 5;\n * @return {string}\n */\nproto.Knowledge.prototype.getLanguage = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setLanguage = function(value) {\n  return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional uint64 embeddingProviderModelId = 6;\n * @return {string}\n */\nproto.Knowledge.prototype.getEmbeddingprovidermodelid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setEmbeddingprovidermodelid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 6, value);\n};\n\n\n/**\n * optional ProviderModel embeddingProviderModel = 7;\n * @return {?proto.ProviderModel}\n */\nproto.Knowledge.prototype.getEmbeddingprovidermodel = function() {\n  return /** @type{?proto.ProviderModel} */ (\n    jspb.Message.getWrapperField(this, proto.ProviderModel, 7));\n};\n\n\n/**\n * @param {?proto.ProviderModel|undefined} value\n * @return {!proto.Knowledge} returns this\n*/\nproto.Knowledge.prototype.setEmbeddingprovidermodel = function(value) {\n  return jspb.Message.setWrapperField(this, 7, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.clearEmbeddingprovidermodel = function() {\n  return this.setEmbeddingprovidermodel(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Knowledge.prototype.hasEmbeddingprovidermodel = function() {\n  return jspb.Message.getField(this, 7) != null;\n};\n\n\n/**\n * optional string status = 12;\n * @return {string}\n */\nproto.Knowledge.prototype.getStatus = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setStatus = function(value) {\n  return jspb.Message.setProto3StringField(this, 12, value);\n};\n\n\n/**\n * optional uint64 createdBy = 13;\n * @return {string}\n */\nproto.Knowledge.prototype.getCreatedby = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setCreatedby = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 13, value);\n};\n\n\n/**\n * optional User createdUser = 14;\n * @return {?proto.User}\n */\nproto.Knowledge.prototype.getCreateduser = function() {\n  return /** @type{?proto.User} */ (\n    jspb.Message.getWrapperField(this, proto.User, 14));\n};\n\n\n/**\n * @param {?proto.User|undefined} value\n * @return {!proto.Knowledge} returns this\n*/\nproto.Knowledge.prototype.setCreateduser = function(value) {\n  return jspb.Message.setWrapperField(this, 14, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.clearCreateduser = function() {\n  return this.setCreateduser(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Knowledge.prototype.hasCreateduser = function() {\n  return jspb.Message.getField(this, 14) != null;\n};\n\n\n/**\n * optional uint64 updatedBy = 15;\n * @return {string}\n */\nproto.Knowledge.prototype.getUpdatedby = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 15, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setUpdatedby = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 15, value);\n};\n\n\n/**\n * optional User updatedUser = 16;\n * @return {?proto.User}\n */\nproto.Knowledge.prototype.getUpdateduser = function() {\n  return /** @type{?proto.User} */ (\n    jspb.Message.getWrapperField(this, proto.User, 16));\n};\n\n\n/**\n * @param {?proto.User|undefined} value\n * @return {!proto.Knowledge} returns this\n*/\nproto.Knowledge.prototype.setUpdateduser = function(value) {\n  return jspb.Message.setWrapperField(this, 16, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.clearUpdateduser = function() {\n  return this.setUpdateduser(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Knowledge.prototype.hasUpdateduser = function() {\n  return jspb.Message.getField(this, 16) != null;\n};\n\n\n/**\n * optional google.protobuf.Timestamp createdDate = 17;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.Knowledge.prototype.getCreateddate = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 17));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.Knowledge} returns this\n*/\nproto.Knowledge.prototype.setCreateddate = function(value) {\n  return jspb.Message.setWrapperField(this, 17, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.clearCreateddate = function() {\n  return this.setCreateddate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Knowledge.prototype.hasCreateddate = function() {\n  return jspb.Message.getField(this, 17) != null;\n};\n\n\n/**\n * optional google.protobuf.Timestamp updatedDate = 18;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.Knowledge.prototype.getUpdateddate = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 18));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.Knowledge} returns this\n*/\nproto.Knowledge.prototype.setUpdateddate = function(value) {\n  return jspb.Message.setWrapperField(this, 18, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.clearUpdateddate = function() {\n  return this.setUpdateddate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Knowledge.prototype.hasUpdateddate = function() {\n  return jspb.Message.getField(this, 18) != null;\n};\n\n\n/**\n * optional uint64 organizationId = 19;\n * @return {string}\n */\nproto.Knowledge.prototype.getOrganizationid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 19, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setOrganizationid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 19, value);\n};\n\n\n/**\n * optional uint64 projectId = 20;\n * @return {string}\n */\nproto.Knowledge.prototype.getProjectid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 20, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setProjectid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 20, value);\n};\n\n\n/**\n * optional Organization organization = 21;\n * @return {?proto.Organization}\n */\nproto.Knowledge.prototype.getOrganization = function() {\n  return /** @type{?proto.Organization} */ (\n    jspb.Message.getWrapperField(this, proto.Organization, 21));\n};\n\n\n/**\n * @param {?proto.Organization|undefined} value\n * @return {!proto.Knowledge} returns this\n*/\nproto.Knowledge.prototype.setOrganization = function(value) {\n  return jspb.Message.setWrapperField(this, 21, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.clearOrganization = function() {\n  return this.setOrganization(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Knowledge.prototype.hasOrganization = function() {\n  return jspb.Message.getField(this, 21) != null;\n};\n\n\n/**\n * optional Tag knowledgeTag = 22;\n * @return {?proto.Tag}\n */\nproto.Knowledge.prototype.getKnowledgetag = function() {\n  return /** @type{?proto.Tag} */ (\n    jspb.Message.getWrapperField(this, proto.Tag, 22));\n};\n\n\n/**\n * @param {?proto.Tag|undefined} value\n * @return {!proto.Knowledge} returns this\n*/\nproto.Knowledge.prototype.setKnowledgetag = function(value) {\n  return jspb.Message.setWrapperField(this, 22, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.clearKnowledgetag = function() {\n  return this.setKnowledgetag(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.Knowledge.prototype.hasKnowledgetag = function() {\n  return jspb.Message.getField(this, 22) != null;\n};\n\n\n/**\n * optional uint32 documentCount = 23;\n * @return {number}\n */\nproto.Knowledge.prototype.getDocumentcount = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 23, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setDocumentcount = function(value) {\n  return jspb.Message.setProto3IntField(this, 23, value);\n};\n\n\n/**\n * optional uint32 tokenCount = 24;\n * @return {number}\n */\nproto.Knowledge.prototype.getTokencount = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 24, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setTokencount = function(value) {\n  return jspb.Message.setProto3IntField(this, 24, value);\n};\n\n\n/**\n * optional uint32 wordCount = 25;\n * @return {number}\n */\nproto.Knowledge.prototype.getWordcount = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 25, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setWordcount = function(value) {\n  return jspb.Message.setProto3IntField(this, 25, value);\n};\n\n\n/**\n * optional uint64 embeddingProviderId = 26;\n * @return {string}\n */\nproto.Knowledge.prototype.getEmbeddingproviderid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 26, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Knowledge} returns this\n */\nproto.Knowledge.prototype.setEmbeddingproviderid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 26, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.AgentPromptTemplate.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.AgentPromptTemplate.prototype.toObject = function(opt_includeInstance) {\n  return proto.AgentPromptTemplate.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.AgentPromptTemplate} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AgentPromptTemplate.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    type: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    prompt: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    promptvariablesList: jspb.Message.toObjectList(msg.getPromptvariablesList(),\n    proto.Variable.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.AgentPromptTemplate}\n */\nproto.AgentPromptTemplate.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.AgentPromptTemplate;\n  return proto.AgentPromptTemplate.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.AgentPromptTemplate} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.AgentPromptTemplate}\n */\nproto.AgentPromptTemplate.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setType(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setPrompt(value);\n      break;\n    case 3:\n      var value = new proto.Variable;\n      reader.readMessage(value,proto.Variable.deserializeBinaryFromReader);\n      msg.addPromptvariables(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.AgentPromptTemplate.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.AgentPromptTemplate.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.AgentPromptTemplate} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AgentPromptTemplate.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getType();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getPrompt();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getPromptvariablesList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      3,\n      f,\n      proto.Variable.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional string type = 1;\n * @return {string}\n */\nproto.AgentPromptTemplate.prototype.getType = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AgentPromptTemplate} returns this\n */\nproto.AgentPromptTemplate.prototype.setType = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string prompt = 2;\n * @return {string}\n */\nproto.AgentPromptTemplate.prototype.getPrompt = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AgentPromptTemplate} returns this\n */\nproto.AgentPromptTemplate.prototype.setPrompt = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * repeated Variable promptVariables = 3;\n * @return {!Array<!proto.Variable>}\n */\nproto.AgentPromptTemplate.prototype.getPromptvariablesList = function() {\n  return /** @type{!Array<!proto.Variable>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Variable, 3));\n};\n\n\n/**\n * @param {!Array<!proto.Variable>} value\n * @return {!proto.AgentPromptTemplate} returns this\n*/\nproto.AgentPromptTemplate.prototype.setPromptvariablesList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.Variable=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Variable}\n */\nproto.AgentPromptTemplate.prototype.addPromptvariables = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Variable, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AgentPromptTemplate} returns this\n */\nproto.AgentPromptTemplate.prototype.clearPromptvariablesList = function() {\n  return this.setPromptvariablesList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.TextPrompt.prototype.toObject = function(opt_includeInstance) {\n  return proto.TextPrompt.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.TextPrompt} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextPrompt.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    role: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    content: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.TextPrompt}\n */\nproto.TextPrompt.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.TextPrompt;\n  return proto.TextPrompt.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.TextPrompt} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.TextPrompt}\n */\nproto.TextPrompt.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setRole(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setContent(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.TextPrompt.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.TextPrompt.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.TextPrompt} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextPrompt.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getRole();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getContent();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n};\n\n\n/**\n * optional string role = 1;\n * @return {string}\n */\nproto.TextPrompt.prototype.getRole = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.TextPrompt} returns this\n */\nproto.TextPrompt.prototype.setRole = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string content = 2;\n * @return {string}\n */\nproto.TextPrompt.prototype.getContent = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.TextPrompt} returns this\n */\nproto.TextPrompt.prototype.setContent = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.FilePrompt.prototype.toObject = function(opt_includeInstance) {\n  return proto.FilePrompt.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.FilePrompt} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.FilePrompt.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    accepts: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.FilePrompt}\n */\nproto.FilePrompt.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.FilePrompt;\n  return proto.FilePrompt.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.FilePrompt} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.FilePrompt}\n */\nproto.FilePrompt.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setAccepts(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.FilePrompt.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.FilePrompt.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.FilePrompt} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.FilePrompt.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getAccepts();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.FilePrompt.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.FilePrompt} returns this\n */\nproto.FilePrompt.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string accepts = 2;\n * @return {string}\n */\nproto.FilePrompt.prototype.getAccepts = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.FilePrompt} returns this\n */\nproto.FilePrompt.prototype.setAccepts = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.TextChatCompletePrompt.repeatedFields_ = [1,2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.TextChatCompletePrompt.prototype.toObject = function(opt_includeInstance) {\n  return proto.TextChatCompletePrompt.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.TextChatCompletePrompt} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextChatCompletePrompt.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    promptList: jspb.Message.toObjectList(msg.getPromptList(),\n    proto.TextPrompt.toObject, includeInstance),\n    promptvariablesList: jspb.Message.toObjectList(msg.getPromptvariablesList(),\n    proto.Variable.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.TextChatCompletePrompt}\n */\nproto.TextChatCompletePrompt.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.TextChatCompletePrompt;\n  return proto.TextChatCompletePrompt.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.TextChatCompletePrompt} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.TextChatCompletePrompt}\n */\nproto.TextChatCompletePrompt.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = new proto.TextPrompt;\n      reader.readMessage(value,proto.TextPrompt.deserializeBinaryFromReader);\n      msg.addPrompt(value);\n      break;\n    case 2:\n      var value = new proto.Variable;\n      reader.readMessage(value,proto.Variable.deserializeBinaryFromReader);\n      msg.addPromptvariables(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.TextChatCompletePrompt.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.TextChatCompletePrompt.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.TextChatCompletePrompt} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextChatCompletePrompt.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getPromptList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      1,\n      f,\n      proto.TextPrompt.serializeBinaryToWriter\n    );\n  }\n  f = message.getPromptvariablesList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      2,\n      f,\n      proto.Variable.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * repeated TextPrompt prompt = 1;\n * @return {!Array<!proto.TextPrompt>}\n */\nproto.TextChatCompletePrompt.prototype.getPromptList = function() {\n  return /** @type{!Array<!proto.TextPrompt>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.TextPrompt, 1));\n};\n\n\n/**\n * @param {!Array<!proto.TextPrompt>} value\n * @return {!proto.TextChatCompletePrompt} returns this\n*/\nproto.TextChatCompletePrompt.prototype.setPromptList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.TextPrompt=} opt_value\n * @param {number=} opt_index\n * @return {!proto.TextPrompt}\n */\nproto.TextChatCompletePrompt.prototype.addPrompt = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.TextPrompt, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.TextChatCompletePrompt} returns this\n */\nproto.TextChatCompletePrompt.prototype.clearPromptList = function() {\n  return this.setPromptList([]);\n};\n\n\n/**\n * repeated Variable promptVariables = 2;\n * @return {!Array<!proto.Variable>}\n */\nproto.TextChatCompletePrompt.prototype.getPromptvariablesList = function() {\n  return /** @type{!Array<!proto.Variable>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Variable, 2));\n};\n\n\n/**\n * @param {!Array<!proto.Variable>} value\n * @return {!proto.TextChatCompletePrompt} returns this\n*/\nproto.TextChatCompletePrompt.prototype.setPromptvariablesList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.Variable=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Variable}\n */\nproto.TextChatCompletePrompt.prototype.addPromptvariables = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.Variable, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.TextChatCompletePrompt} returns this\n */\nproto.TextChatCompletePrompt.prototype.clearPromptvariablesList = function() {\n  return this.setPromptvariablesList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.TextCompletePrompt.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.TextCompletePrompt.prototype.toObject = function(opt_includeInstance) {\n  return proto.TextCompletePrompt.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.TextCompletePrompt} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextCompletePrompt.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    prompt: (f = msg.getPrompt()) && proto.TextPrompt.toObject(includeInstance, f),\n    promptvariablesList: jspb.Message.toObjectList(msg.getPromptvariablesList(),\n    proto.Variable.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.TextCompletePrompt}\n */\nproto.TextCompletePrompt.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.TextCompletePrompt;\n  return proto.TextCompletePrompt.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.TextCompletePrompt} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.TextCompletePrompt}\n */\nproto.TextCompletePrompt.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = new proto.TextPrompt;\n      reader.readMessage(value,proto.TextPrompt.deserializeBinaryFromReader);\n      msg.setPrompt(value);\n      break;\n    case 2:\n      var value = new proto.Variable;\n      reader.readMessage(value,proto.Variable.deserializeBinaryFromReader);\n      msg.addPromptvariables(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.TextCompletePrompt.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.TextCompletePrompt.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.TextCompletePrompt} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextCompletePrompt.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getPrompt();\n  if (f != null) {\n    writer.writeMessage(\n      1,\n      f,\n      proto.TextPrompt.serializeBinaryToWriter\n    );\n  }\n  f = message.getPromptvariablesList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      2,\n      f,\n      proto.Variable.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional TextPrompt prompt = 1;\n * @return {?proto.TextPrompt}\n */\nproto.TextCompletePrompt.prototype.getPrompt = function() {\n  return /** @type{?proto.TextPrompt} */ (\n    jspb.Message.getWrapperField(this, proto.TextPrompt, 1));\n};\n\n\n/**\n * @param {?proto.TextPrompt|undefined} value\n * @return {!proto.TextCompletePrompt} returns this\n*/\nproto.TextCompletePrompt.prototype.setPrompt = function(value) {\n  return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.TextCompletePrompt} returns this\n */\nproto.TextCompletePrompt.prototype.clearPrompt = function() {\n  return this.setPrompt(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.TextCompletePrompt.prototype.hasPrompt = function() {\n  return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated Variable promptVariables = 2;\n * @return {!Array<!proto.Variable>}\n */\nproto.TextCompletePrompt.prototype.getPromptvariablesList = function() {\n  return /** @type{!Array<!proto.Variable>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Variable, 2));\n};\n\n\n/**\n * @param {!Array<!proto.Variable>} value\n * @return {!proto.TextCompletePrompt} returns this\n*/\nproto.TextCompletePrompt.prototype.setPromptvariablesList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.Variable=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Variable}\n */\nproto.TextCompletePrompt.prototype.addPromptvariables = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.Variable, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.TextCompletePrompt} returns this\n */\nproto.TextCompletePrompt.prototype.clearPromptvariablesList = function() {\n  return this.setPromptvariablesList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.TextToImagePrompt.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.TextToImagePrompt.prototype.toObject = function(opt_includeInstance) {\n  return proto.TextToImagePrompt.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.TextToImagePrompt} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextToImagePrompt.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    prompt: (f = msg.getPrompt()) && proto.TextPrompt.toObject(includeInstance, f),\n    promptvariablesList: jspb.Message.toObjectList(msg.getPromptvariablesList(),\n    proto.Variable.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.TextToImagePrompt}\n */\nproto.TextToImagePrompt.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.TextToImagePrompt;\n  return proto.TextToImagePrompt.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.TextToImagePrompt} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.TextToImagePrompt}\n */\nproto.TextToImagePrompt.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = new proto.TextPrompt;\n      reader.readMessage(value,proto.TextPrompt.deserializeBinaryFromReader);\n      msg.setPrompt(value);\n      break;\n    case 2:\n      var value = new proto.Variable;\n      reader.readMessage(value,proto.Variable.deserializeBinaryFromReader);\n      msg.addPromptvariables(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.TextToImagePrompt.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.TextToImagePrompt.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.TextToImagePrompt} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextToImagePrompt.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getPrompt();\n  if (f != null) {\n    writer.writeMessage(\n      1,\n      f,\n      proto.TextPrompt.serializeBinaryToWriter\n    );\n  }\n  f = message.getPromptvariablesList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      2,\n      f,\n      proto.Variable.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional TextPrompt prompt = 1;\n * @return {?proto.TextPrompt}\n */\nproto.TextToImagePrompt.prototype.getPrompt = function() {\n  return /** @type{?proto.TextPrompt} */ (\n    jspb.Message.getWrapperField(this, proto.TextPrompt, 1));\n};\n\n\n/**\n * @param {?proto.TextPrompt|undefined} value\n * @return {!proto.TextToImagePrompt} returns this\n*/\nproto.TextToImagePrompt.prototype.setPrompt = function(value) {\n  return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.TextToImagePrompt} returns this\n */\nproto.TextToImagePrompt.prototype.clearPrompt = function() {\n  return this.setPrompt(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.TextToImagePrompt.prototype.hasPrompt = function() {\n  return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated Variable promptVariables = 2;\n * @return {!Array<!proto.Variable>}\n */\nproto.TextToImagePrompt.prototype.getPromptvariablesList = function() {\n  return /** @type{!Array<!proto.Variable>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Variable, 2));\n};\n\n\n/**\n * @param {!Array<!proto.Variable>} value\n * @return {!proto.TextToImagePrompt} returns this\n*/\nproto.TextToImagePrompt.prototype.setPromptvariablesList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.Variable=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Variable}\n */\nproto.TextToImagePrompt.prototype.addPromptvariables = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.Variable, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.TextToImagePrompt} returns this\n */\nproto.TextToImagePrompt.prototype.clearPromptvariablesList = function() {\n  return this.setPromptvariablesList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.TextToSpeechPrompt.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.TextToSpeechPrompt.prototype.toObject = function(opt_includeInstance) {\n  return proto.TextToSpeechPrompt.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.TextToSpeechPrompt} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextToSpeechPrompt.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    prompt: (f = msg.getPrompt()) && proto.TextPrompt.toObject(includeInstance, f),\n    promptvariablesList: jspb.Message.toObjectList(msg.getPromptvariablesList(),\n    proto.Variable.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.TextToSpeechPrompt}\n */\nproto.TextToSpeechPrompt.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.TextToSpeechPrompt;\n  return proto.TextToSpeechPrompt.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.TextToSpeechPrompt} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.TextToSpeechPrompt}\n */\nproto.TextToSpeechPrompt.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = new proto.TextPrompt;\n      reader.readMessage(value,proto.TextPrompt.deserializeBinaryFromReader);\n      msg.setPrompt(value);\n      break;\n    case 2:\n      var value = new proto.Variable;\n      reader.readMessage(value,proto.Variable.deserializeBinaryFromReader);\n      msg.addPromptvariables(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.TextToSpeechPrompt.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.TextToSpeechPrompt.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.TextToSpeechPrompt} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.TextToSpeechPrompt.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getPrompt();\n  if (f != null) {\n    writer.writeMessage(\n      1,\n      f,\n      proto.TextPrompt.serializeBinaryToWriter\n    );\n  }\n  f = message.getPromptvariablesList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      2,\n      f,\n      proto.Variable.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional TextPrompt prompt = 1;\n * @return {?proto.TextPrompt}\n */\nproto.TextToSpeechPrompt.prototype.getPrompt = function() {\n  return /** @type{?proto.TextPrompt} */ (\n    jspb.Message.getWrapperField(this, proto.TextPrompt, 1));\n};\n\n\n/**\n * @param {?proto.TextPrompt|undefined} value\n * @return {!proto.TextToSpeechPrompt} returns this\n*/\nproto.TextToSpeechPrompt.prototype.setPrompt = function(value) {\n  return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.TextToSpeechPrompt} returns this\n */\nproto.TextToSpeechPrompt.prototype.clearPrompt = function() {\n  return this.setPrompt(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.TextToSpeechPrompt.prototype.hasPrompt = function() {\n  return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated Variable promptVariables = 2;\n * @return {!Array<!proto.Variable>}\n */\nproto.TextToSpeechPrompt.prototype.getPromptvariablesList = function() {\n  return /** @type{!Array<!proto.Variable>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Variable, 2));\n};\n\n\n/**\n * @param {!Array<!proto.Variable>} value\n * @return {!proto.TextToSpeechPrompt} returns this\n*/\nproto.TextToSpeechPrompt.prototype.setPromptvariablesList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.Variable=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Variable}\n */\nproto.TextToSpeechPrompt.prototype.addPromptvariables = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.Variable, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.TextToSpeechPrompt} returns this\n */\nproto.TextToSpeechPrompt.prototype.clearPromptvariablesList = function() {\n  return this.setPromptvariablesList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.SpeechToTextPrompt.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.SpeechToTextPrompt.prototype.toObject = function(opt_includeInstance) {\n  return proto.SpeechToTextPrompt.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.SpeechToTextPrompt} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SpeechToTextPrompt.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    prompt: (f = msg.getPrompt()) && proto.FilePrompt.toObject(includeInstance, f),\n    promptvariablesList: jspb.Message.toObjectList(msg.getPromptvariablesList(),\n    proto.Variable.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.SpeechToTextPrompt}\n */\nproto.SpeechToTextPrompt.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.SpeechToTextPrompt;\n  return proto.SpeechToTextPrompt.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.SpeechToTextPrompt} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.SpeechToTextPrompt}\n */\nproto.SpeechToTextPrompt.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = new proto.FilePrompt;\n      reader.readMessage(value,proto.FilePrompt.deserializeBinaryFromReader);\n      msg.setPrompt(value);\n      break;\n    case 2:\n      var value = new proto.Variable;\n      reader.readMessage(value,proto.Variable.deserializeBinaryFromReader);\n      msg.addPromptvariables(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.SpeechToTextPrompt.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.SpeechToTextPrompt.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.SpeechToTextPrompt} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SpeechToTextPrompt.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getPrompt();\n  if (f != null) {\n    writer.writeMessage(\n      1,\n      f,\n      proto.FilePrompt.serializeBinaryToWriter\n    );\n  }\n  f = message.getPromptvariablesList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      2,\n      f,\n      proto.Variable.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional FilePrompt prompt = 1;\n * @return {?proto.FilePrompt}\n */\nproto.SpeechToTextPrompt.prototype.getPrompt = function() {\n  return /** @type{?proto.FilePrompt} */ (\n    jspb.Message.getWrapperField(this, proto.FilePrompt, 1));\n};\n\n\n/**\n * @param {?proto.FilePrompt|undefined} value\n * @return {!proto.SpeechToTextPrompt} returns this\n*/\nproto.SpeechToTextPrompt.prototype.setPrompt = function(value) {\n  return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.SpeechToTextPrompt} returns this\n */\nproto.SpeechToTextPrompt.prototype.clearPrompt = function() {\n  return this.setPrompt(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.SpeechToTextPrompt.prototype.hasPrompt = function() {\n  return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated Variable promptVariables = 2;\n * @return {!Array<!proto.Variable>}\n */\nproto.SpeechToTextPrompt.prototype.getPromptvariablesList = function() {\n  return /** @type{!Array<!proto.Variable>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Variable, 2));\n};\n\n\n/**\n * @param {!Array<!proto.Variable>} value\n * @return {!proto.SpeechToTextPrompt} returns this\n*/\nproto.SpeechToTextPrompt.prototype.setPromptvariablesList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.Variable=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Variable}\n */\nproto.SpeechToTextPrompt.prototype.addPromptvariables = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.Variable, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.SpeechToTextPrompt} returns this\n */\nproto.SpeechToTextPrompt.prototype.clearPromptvariablesList = function() {\n  return this.setPromptvariablesList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.AssistantMessageStage.prototype.toObject = function(opt_includeInstance) {\n  return proto.AssistantMessageStage.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.AssistantMessageStage} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AssistantMessageStage.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    stage: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n    additionaldataMap: (f = msg.getAdditionaldataMap()) ? f.toObject(includeInstance, undefined) : [],\n    timetaken: jspb.Message.getFieldWithDefault(msg, 3, 0),\n    lifecycleid: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    starttimestamp: (f = msg.getStarttimestamp()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n    endtimestamp: (f = msg.getEndtimestamp()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.AssistantMessageStage}\n */\nproto.AssistantMessageStage.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.AssistantMessageStage;\n  return proto.AssistantMessageStage.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.AssistantMessageStage} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.AssistantMessageStage}\n */\nproto.AssistantMessageStage.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setStage(value);\n      break;\n    case 2:\n      var value = msg.getAdditionaldataMap();\n      reader.readMessage(value, function(message, reader) {\n        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readString, null, \"\", \"\");\n         });\n      break;\n    case 3:\n      var value = /** @type {number} */ (reader.readUint64());\n      msg.setTimetaken(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setLifecycleid(value);\n      break;\n    case 5:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setStarttimestamp(value);\n      break;\n    case 6:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setEndtimestamp(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.AssistantMessageStage.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.AssistantMessageStage.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.AssistantMessageStage} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AssistantMessageStage.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getStage();\n  if (f.length > 0) {\n    writer.writeString(\n      1,\n      f\n    );\n  }\n  f = message.getAdditionaldataMap(true);\n  if (f && f.getLength() > 0) {\n    f.serializeBinary(2, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeString);\n  }\n  f = message.getTimetaken();\n  if (f !== 0) {\n    writer.writeUint64(\n      3,\n      f\n    );\n  }\n  f = message.getLifecycleid();\n  if (f.length > 0) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = message.getStarttimestamp();\n  if (f != null) {\n    writer.writeMessage(\n      5,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n  f = message.getEndtimestamp();\n  if (f != null) {\n    writer.writeMessage(\n      6,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional string stage = 1;\n * @return {string}\n */\nproto.AssistantMessageStage.prototype.getStage = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantMessageStage} returns this\n */\nproto.AssistantMessageStage.prototype.setStage = function(value) {\n  return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * map<string, string> additionalData = 2;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map<string,string>}\n */\nproto.AssistantMessageStage.prototype.getAdditionaldataMap = function(opt_noLazyCreate) {\n  return /** @type {!jspb.Map<string,string>} */ (\n      jspb.Message.getMapField(this, 2, opt_noLazyCreate,\n      null));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.AssistantMessageStage} returns this\n */\nproto.AssistantMessageStage.prototype.clearAdditionaldataMap = function() {\n  this.getAdditionaldataMap().clear();\n  return this;};\n\n\n/**\n * optional uint64 timetaken = 3;\n * @return {number}\n */\nproto.AssistantMessageStage.prototype.getTimetaken = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.AssistantMessageStage} returns this\n */\nproto.AssistantMessageStage.prototype.setTimetaken = function(value) {\n  return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional string lifecycleId = 4;\n * @return {string}\n */\nproto.AssistantMessageStage.prototype.getLifecycleid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantMessageStage} returns this\n */\nproto.AssistantMessageStage.prototype.setLifecycleid = function(value) {\n  return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional google.protobuf.Timestamp startTimestamp = 5;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.AssistantMessageStage.prototype.getStarttimestamp = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 5));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.AssistantMessageStage} returns this\n*/\nproto.AssistantMessageStage.prototype.setStarttimestamp = function(value) {\n  return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantMessageStage} returns this\n */\nproto.AssistantMessageStage.prototype.clearStarttimestamp = function() {\n  return this.setStarttimestamp(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantMessageStage.prototype.hasStarttimestamp = function() {\n  return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * optional google.protobuf.Timestamp endTimestamp = 6;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.AssistantMessageStage.prototype.getEndtimestamp = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 6));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.AssistantMessageStage} returns this\n*/\nproto.AssistantMessageStage.prototype.setEndtimestamp = function(value) {\n  return jspb.Message.setWrapperField(this, 6, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantMessageStage} returns this\n */\nproto.AssistantMessageStage.prototype.clearEndtimestamp = function() {\n  return this.setEndtimestamp(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantMessageStage.prototype.hasEndtimestamp = function() {\n  return jspb.Message.getField(this, 6) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.AssistantConversationMessage.repeatedFields_ = [10,14,15,31];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.AssistantConversationMessage.prototype.toObject = function(opt_includeInstance) {\n  return proto.AssistantConversationMessage.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.AssistantConversationMessage} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AssistantConversationMessage.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    messageid: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    assistantconversationid: jspb.Message.getFieldWithDefault(msg, 2, \"0\"),\n    request: (f = msg.getRequest()) && proto.Message.toObject(includeInstance, f),\n    response: (f = msg.getResponse()) && proto.Message.toObject(includeInstance, f),\n    source: jspb.Message.getFieldWithDefault(msg, 9, \"\"),\n    metricsList: jspb.Message.toObjectList(msg.getMetricsList(),\n    proto.Metric.toObject, includeInstance),\n    status: jspb.Message.getFieldWithDefault(msg, 11, \"\"),\n    createdby: jspb.Message.getFieldWithDefault(msg, 12, \"0\"),\n    updatedby: jspb.Message.getFieldWithDefault(msg, 13, \"0\"),\n    suggestedquestionsList: (f = jspb.Message.getRepeatedField(msg, 14)) == null ? undefined : f,\n    stagesList: jspb.Message.toObjectList(msg.getStagesList(),\n    proto.AssistantMessageStage.toObject, includeInstance),\n    createddate: (f = msg.getCreateddate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n    updateddate: (f = msg.getUpdateddate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n    assistantid: jspb.Message.getFieldWithDefault(msg, 28, \"0\"),\n    assistantprovidermodelid: jspb.Message.getFieldWithDefault(msg, 29, \"0\"),\n    metadataList: jspb.Message.toObjectList(msg.getMetadataList(),\n    proto.Metadata.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.AssistantConversationMessage}\n */\nproto.AssistantConversationMessage.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.AssistantConversationMessage;\n  return proto.AssistantConversationMessage.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.AssistantConversationMessage} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.AssistantConversationMessage}\n */\nproto.AssistantConversationMessage.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setMessageid(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantconversationid(value);\n      break;\n    case 5:\n      var value = new proto.Message;\n      reader.readMessage(value,proto.Message.deserializeBinaryFromReader);\n      msg.setRequest(value);\n      break;\n    case 7:\n      var value = new proto.Message;\n      reader.readMessage(value,proto.Message.deserializeBinaryFromReader);\n      msg.setResponse(value);\n      break;\n    case 9:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setSource(value);\n      break;\n    case 10:\n      var value = new proto.Metric;\n      reader.readMessage(value,proto.Metric.deserializeBinaryFromReader);\n      msg.addMetrics(value);\n      break;\n    case 11:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setStatus(value);\n      break;\n    case 12:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setCreatedby(value);\n      break;\n    case 13:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setUpdatedby(value);\n      break;\n    case 14:\n      var value = /** @type {string} */ (reader.readString());\n      msg.addSuggestedquestions(value);\n      break;\n    case 15:\n      var value = new proto.AssistantMessageStage;\n      reader.readMessage(value,proto.AssistantMessageStage.deserializeBinaryFromReader);\n      msg.addStages(value);\n      break;\n    case 26:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setCreateddate(value);\n      break;\n    case 27:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setUpdateddate(value);\n      break;\n    case 28:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantid(value);\n      break;\n    case 29:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantprovidermodelid(value);\n      break;\n    case 31:\n      var value = new proto.Metadata;\n      reader.readMessage(value,proto.Metadata.deserializeBinaryFromReader);\n      msg.addMetadata(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.AssistantConversationMessage.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.AssistantConversationMessage.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.AssistantConversationMessage} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AssistantConversationMessage.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getMessageid();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getAssistantconversationid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      2,\n      f\n    );\n  }\n  f = message.getRequest();\n  if (f != null) {\n    writer.writeMessage(\n      5,\n      f,\n      proto.Message.serializeBinaryToWriter\n    );\n  }\n  f = message.getResponse();\n  if (f != null) {\n    writer.writeMessage(\n      7,\n      f,\n      proto.Message.serializeBinaryToWriter\n    );\n  }\n  f = message.getSource();\n  if (f.length > 0) {\n    writer.writeString(\n      9,\n      f\n    );\n  }\n  f = message.getMetricsList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      10,\n      f,\n      proto.Metric.serializeBinaryToWriter\n    );\n  }\n  f = message.getStatus();\n  if (f.length > 0) {\n    writer.writeString(\n      11,\n      f\n    );\n  }\n  f = message.getCreatedby();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      12,\n      f\n    );\n  }\n  f = message.getUpdatedby();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      13,\n      f\n    );\n  }\n  f = message.getSuggestedquestionsList();\n  if (f.length > 0) {\n    writer.writeRepeatedString(\n      14,\n      f\n    );\n  }\n  f = message.getStagesList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      15,\n      f,\n      proto.AssistantMessageStage.serializeBinaryToWriter\n    );\n  }\n  f = message.getCreateddate();\n  if (f != null) {\n    writer.writeMessage(\n      26,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n  f = message.getUpdateddate();\n  if (f != null) {\n    writer.writeMessage(\n      27,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n  f = message.getAssistantid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      28,\n      f\n    );\n  }\n  f = message.getAssistantprovidermodelid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      29,\n      f\n    );\n  }\n  f = message.getMetadataList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      31,\n      f,\n      proto.Metadata.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string messageId = 3;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getMessageid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setMessageid = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional uint64 assistantConversationId = 2;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getAssistantconversationid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setAssistantconversationid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 2, value);\n};\n\n\n/**\n * optional Message request = 5;\n * @return {?proto.Message}\n */\nproto.AssistantConversationMessage.prototype.getRequest = function() {\n  return /** @type{?proto.Message} */ (\n    jspb.Message.getWrapperField(this, proto.Message, 5));\n};\n\n\n/**\n * @param {?proto.Message|undefined} value\n * @return {!proto.AssistantConversationMessage} returns this\n*/\nproto.AssistantConversationMessage.prototype.setRequest = function(value) {\n  return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.clearRequest = function() {\n  return this.setRequest(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantConversationMessage.prototype.hasRequest = function() {\n  return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * optional Message response = 7;\n * @return {?proto.Message}\n */\nproto.AssistantConversationMessage.prototype.getResponse = function() {\n  return /** @type{?proto.Message} */ (\n    jspb.Message.getWrapperField(this, proto.Message, 7));\n};\n\n\n/**\n * @param {?proto.Message|undefined} value\n * @return {!proto.AssistantConversationMessage} returns this\n*/\nproto.AssistantConversationMessage.prototype.setResponse = function(value) {\n  return jspb.Message.setWrapperField(this, 7, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.clearResponse = function() {\n  return this.setResponse(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantConversationMessage.prototype.hasResponse = function() {\n  return jspb.Message.getField(this, 7) != null;\n};\n\n\n/**\n * optional string source = 9;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getSource = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setSource = function(value) {\n  return jspb.Message.setProto3StringField(this, 9, value);\n};\n\n\n/**\n * repeated Metric metrics = 10;\n * @return {!Array<!proto.Metric>}\n */\nproto.AssistantConversationMessage.prototype.getMetricsList = function() {\n  return /** @type{!Array<!proto.Metric>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Metric, 10));\n};\n\n\n/**\n * @param {!Array<!proto.Metric>} value\n * @return {!proto.AssistantConversationMessage} returns this\n*/\nproto.AssistantConversationMessage.prototype.setMetricsList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 10, value);\n};\n\n\n/**\n * @param {!proto.Metric=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metric}\n */\nproto.AssistantConversationMessage.prototype.addMetrics = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 10, opt_value, proto.Metric, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.clearMetricsList = function() {\n  return this.setMetricsList([]);\n};\n\n\n/**\n * optional string status = 11;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getStatus = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setStatus = function(value) {\n  return jspb.Message.setProto3StringField(this, 11, value);\n};\n\n\n/**\n * optional uint64 createdBy = 12;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getCreatedby = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setCreatedby = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 12, value);\n};\n\n\n/**\n * optional uint64 updatedBy = 13;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getUpdatedby = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setUpdatedby = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 13, value);\n};\n\n\n/**\n * repeated string suggestedQuestions = 14;\n * @return {!Array<string>}\n */\nproto.AssistantConversationMessage.prototype.getSuggestedquestionsList = function() {\n  return /** @type {!Array<string>} */ (jspb.Message.getRepeatedField(this, 14));\n};\n\n\n/**\n * @param {!Array<string>} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setSuggestedquestionsList = function(value) {\n  return jspb.Message.setField(this, 14, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.addSuggestedquestions = function(value, opt_index) {\n  return jspb.Message.addToRepeatedField(this, 14, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.clearSuggestedquestionsList = function() {\n  return this.setSuggestedquestionsList([]);\n};\n\n\n/**\n * repeated AssistantMessageStage stages = 15;\n * @return {!Array<!proto.AssistantMessageStage>}\n */\nproto.AssistantConversationMessage.prototype.getStagesList = function() {\n  return /** @type{!Array<!proto.AssistantMessageStage>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.AssistantMessageStage, 15));\n};\n\n\n/**\n * @param {!Array<!proto.AssistantMessageStage>} value\n * @return {!proto.AssistantConversationMessage} returns this\n*/\nproto.AssistantConversationMessage.prototype.setStagesList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 15, value);\n};\n\n\n/**\n * @param {!proto.AssistantMessageStage=} opt_value\n * @param {number=} opt_index\n * @return {!proto.AssistantMessageStage}\n */\nproto.AssistantConversationMessage.prototype.addStages = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 15, opt_value, proto.AssistantMessageStage, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.clearStagesList = function() {\n  return this.setStagesList([]);\n};\n\n\n/**\n * optional google.protobuf.Timestamp createdDate = 26;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.AssistantConversationMessage.prototype.getCreateddate = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 26));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.AssistantConversationMessage} returns this\n*/\nproto.AssistantConversationMessage.prototype.setCreateddate = function(value) {\n  return jspb.Message.setWrapperField(this, 26, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.clearCreateddate = function() {\n  return this.setCreateddate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantConversationMessage.prototype.hasCreateddate = function() {\n  return jspb.Message.getField(this, 26) != null;\n};\n\n\n/**\n * optional google.protobuf.Timestamp updatedDate = 27;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.AssistantConversationMessage.prototype.getUpdateddate = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 27));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.AssistantConversationMessage} returns this\n*/\nproto.AssistantConversationMessage.prototype.setUpdateddate = function(value) {\n  return jspb.Message.setWrapperField(this, 27, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.clearUpdateddate = function() {\n  return this.setUpdateddate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantConversationMessage.prototype.hasUpdateddate = function() {\n  return jspb.Message.getField(this, 27) != null;\n};\n\n\n/**\n * optional uint64 assistantId = 28;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getAssistantid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 28, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setAssistantid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 28, value);\n};\n\n\n/**\n * optional uint64 assistantProviderModelId = 29;\n * @return {string}\n */\nproto.AssistantConversationMessage.prototype.getAssistantprovidermodelid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 29, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.setAssistantprovidermodelid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 29, value);\n};\n\n\n/**\n * repeated Metadata metadata = 31;\n * @return {!Array<!proto.Metadata>}\n */\nproto.AssistantConversationMessage.prototype.getMetadataList = function() {\n  return /** @type{!Array<!proto.Metadata>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Metadata, 31));\n};\n\n\n/**\n * @param {!Array<!proto.Metadata>} value\n * @return {!proto.AssistantConversationMessage} returns this\n*/\nproto.AssistantConversationMessage.prototype.setMetadataList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 31, value);\n};\n\n\n/**\n * @param {!proto.Metadata=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metadata}\n */\nproto.AssistantConversationMessage.prototype.addMetadata = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 31, opt_value, proto.Metadata, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AssistantConversationMessage} returns this\n */\nproto.AssistantConversationMessage.prototype.clearMetadataList = function() {\n  return this.setMetadataList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.AssistantConversationContext.prototype.toObject = function(opt_includeInstance) {\n  return proto.AssistantConversationContext.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.AssistantConversationContext} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AssistantConversationContext.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    context: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n    metadata: (f = msg.getMetadata()) && google_protobuf_struct_pb.Struct.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.AssistantConversationContext}\n */\nproto.AssistantConversationContext.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.AssistantConversationContext;\n  return proto.AssistantConversationContext.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.AssistantConversationContext} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.AssistantConversationContext}\n */\nproto.AssistantConversationContext.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setContext(value);\n      break;\n    case 3:\n      var value = new google_protobuf_struct_pb.Struct;\n      reader.readMessage(value,google_protobuf_struct_pb.Struct.deserializeBinaryFromReader);\n      msg.setMetadata(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.AssistantConversationContext.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.AssistantConversationContext.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.AssistantConversationContext} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AssistantConversationContext.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getContext();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n  f = message.getMetadata();\n  if (f != null) {\n    writer.writeMessage(\n      3,\n      f,\n      google_protobuf_struct_pb.Struct.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.AssistantConversationContext.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationContext} returns this\n */\nproto.AssistantConversationContext.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string context = 2;\n * @return {string}\n */\nproto.AssistantConversationContext.prototype.getContext = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversationContext} returns this\n */\nproto.AssistantConversationContext.prototype.setContext = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional google.protobuf.Struct metadata = 3;\n * @return {?proto.google.protobuf.Struct}\n */\nproto.AssistantConversationContext.prototype.getMetadata = function() {\n  return /** @type{?proto.google.protobuf.Struct} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_struct_pb.Struct, 3));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Struct|undefined} value\n * @return {!proto.AssistantConversationContext} returns this\n*/\nproto.AssistantConversationContext.prototype.setMetadata = function(value) {\n  return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantConversationContext} returns this\n */\nproto.AssistantConversationContext.prototype.clearMetadata = function() {\n  return this.setMetadata(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantConversationContext.prototype.hasMetadata = function() {\n  return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.AssistantConversation.repeatedFields_ = [13,28,30,32];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.AssistantConversation.prototype.toObject = function(opt_includeInstance) {\n  return proto.AssistantConversation.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.AssistantConversation} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AssistantConversation.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    id: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    userid: jspb.Message.getFieldWithDefault(msg, 2, \"0\"),\n    assistantid: jspb.Message.getFieldWithDefault(msg, 3, \"0\"),\n    name: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n    projectid: jspb.Message.getFieldWithDefault(msg, 5, \"0\"),\n    organizationid: jspb.Message.getFieldWithDefault(msg, 6, \"0\"),\n    source: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n    createdby: jspb.Message.getFieldWithDefault(msg, 8, \"0\"),\n    updatedby: jspb.Message.getFieldWithDefault(msg, 9, \"0\"),\n    user: (f = msg.getUser()) && proto.User.toObject(includeInstance, f),\n    assistantprovidermodelid: jspb.Message.getFieldWithDefault(msg, 12, \"0\"),\n    assistantconversationmessageList: jspb.Message.toObjectList(msg.getAssistantconversationmessageList(),\n    proto.AssistantConversationMessage.toObject, includeInstance),\n    identifier: jspb.Message.getFieldWithDefault(msg, 14, \"\"),\n    status: jspb.Message.getFieldWithDefault(msg, 15, \"\"),\n    createddate: (f = msg.getCreateddate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n    updateddate: (f = msg.getUpdateddate()) && google_protobuf_timestamp_pb.Timestamp.toObject(includeInstance, f),\n    contextsList: jspb.Message.toObjectList(msg.getContextsList(),\n    proto.AssistantConversationContext.toObject, includeInstance),\n    metricsList: jspb.Message.toObjectList(msg.getMetricsList(),\n    proto.Metric.toObject, includeInstance),\n    metadataList: jspb.Message.toObjectList(msg.getMetadataList(),\n    proto.Metadata.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.AssistantConversation}\n */\nproto.AssistantConversation.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.AssistantConversation;\n  return proto.AssistantConversation.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.AssistantConversation} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.AssistantConversation}\n */\nproto.AssistantConversation.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setId(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setUserid(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantid(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setName(value);\n      break;\n    case 5:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setProjectid(value);\n      break;\n    case 6:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setOrganizationid(value);\n      break;\n    case 7:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setSource(value);\n      break;\n    case 8:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setCreatedby(value);\n      break;\n    case 9:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setUpdatedby(value);\n      break;\n    case 10:\n      var value = new proto.User;\n      reader.readMessage(value,proto.User.deserializeBinaryFromReader);\n      msg.setUser(value);\n      break;\n    case 12:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantprovidermodelid(value);\n      break;\n    case 13:\n      var value = new proto.AssistantConversationMessage;\n      reader.readMessage(value,proto.AssistantConversationMessage.deserializeBinaryFromReader);\n      msg.addAssistantconversationmessage(value);\n      break;\n    case 14:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setIdentifier(value);\n      break;\n    case 15:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setStatus(value);\n      break;\n    case 26:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setCreateddate(value);\n      break;\n    case 27:\n      var value = new google_protobuf_timestamp_pb.Timestamp;\n      reader.readMessage(value,google_protobuf_timestamp_pb.Timestamp.deserializeBinaryFromReader);\n      msg.setUpdateddate(value);\n      break;\n    case 28:\n      var value = new proto.AssistantConversationContext;\n      reader.readMessage(value,proto.AssistantConversationContext.deserializeBinaryFromReader);\n      msg.addContexts(value);\n      break;\n    case 30:\n      var value = new proto.Metric;\n      reader.readMessage(value,proto.Metric.deserializeBinaryFromReader);\n      msg.addMetrics(value);\n      break;\n    case 32:\n      var value = new proto.Metadata;\n      reader.readMessage(value,proto.Metadata.deserializeBinaryFromReader);\n      msg.addMetadata(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.AssistantConversation.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.AssistantConversation.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.AssistantConversation} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.AssistantConversation.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getId();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getUserid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      2,\n      f\n    );\n  }\n  f = message.getAssistantid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      3,\n      f\n    );\n  }\n  f = message.getName();\n  if (f.length > 0) {\n    writer.writeString(\n      4,\n      f\n    );\n  }\n  f = message.getProjectid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      5,\n      f\n    );\n  }\n  f = message.getOrganizationid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      6,\n      f\n    );\n  }\n  f = message.getSource();\n  if (f.length > 0) {\n    writer.writeString(\n      7,\n      f\n    );\n  }\n  f = message.getCreatedby();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      8,\n      f\n    );\n  }\n  f = message.getUpdatedby();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      9,\n      f\n    );\n  }\n  f = message.getUser();\n  if (f != null) {\n    writer.writeMessage(\n      10,\n      f,\n      proto.User.serializeBinaryToWriter\n    );\n  }\n  f = message.getAssistantprovidermodelid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      12,\n      f\n    );\n  }\n  f = message.getAssistantconversationmessageList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      13,\n      f,\n      proto.AssistantConversationMessage.serializeBinaryToWriter\n    );\n  }\n  f = message.getIdentifier();\n  if (f.length > 0) {\n    writer.writeString(\n      14,\n      f\n    );\n  }\n  f = message.getStatus();\n  if (f.length > 0) {\n    writer.writeString(\n      15,\n      f\n    );\n  }\n  f = message.getCreateddate();\n  if (f != null) {\n    writer.writeMessage(\n      26,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n  f = message.getUpdateddate();\n  if (f != null) {\n    writer.writeMessage(\n      27,\n      f,\n      google_protobuf_timestamp_pb.Timestamp.serializeBinaryToWriter\n    );\n  }\n  f = message.getContextsList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      28,\n      f,\n      proto.AssistantConversationContext.serializeBinaryToWriter\n    );\n  }\n  f = message.getMetricsList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      30,\n      f,\n      proto.Metric.serializeBinaryToWriter\n    );\n  }\n  f = message.getMetadataList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      32,\n      f,\n      proto.Metadata.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional uint64 id = 1;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getId = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setId = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional uint64 userId = 2;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getUserid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setUserid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 2, value);\n};\n\n\n/**\n * optional uint64 assistantId = 3;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getAssistantid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setAssistantid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 3, value);\n};\n\n\n/**\n * optional string name = 4;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getName = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setName = function(value) {\n  return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional uint64 projectId = 5;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getProjectid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setProjectid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 5, value);\n};\n\n\n/**\n * optional uint64 organizationId = 6;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getOrganizationid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setOrganizationid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 6, value);\n};\n\n\n/**\n * optional string source = 7;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getSource = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setSource = function(value) {\n  return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional uint64 createdBy = 8;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getCreatedby = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setCreatedby = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 8, value);\n};\n\n\n/**\n * optional uint64 updatedBy = 9;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getUpdatedby = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setUpdatedby = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 9, value);\n};\n\n\n/**\n * optional User user = 10;\n * @return {?proto.User}\n */\nproto.AssistantConversation.prototype.getUser = function() {\n  return /** @type{?proto.User} */ (\n    jspb.Message.getWrapperField(this, proto.User, 10));\n};\n\n\n/**\n * @param {?proto.User|undefined} value\n * @return {!proto.AssistantConversation} returns this\n*/\nproto.AssistantConversation.prototype.setUser = function(value) {\n  return jspb.Message.setWrapperField(this, 10, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.clearUser = function() {\n  return this.setUser(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantConversation.prototype.hasUser = function() {\n  return jspb.Message.getField(this, 10) != null;\n};\n\n\n/**\n * optional uint64 assistantProviderModelId = 12;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getAssistantprovidermodelid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setAssistantprovidermodelid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 12, value);\n};\n\n\n/**\n * repeated AssistantConversationMessage assistantConversationMessage = 13;\n * @return {!Array<!proto.AssistantConversationMessage>}\n */\nproto.AssistantConversation.prototype.getAssistantconversationmessageList = function() {\n  return /** @type{!Array<!proto.AssistantConversationMessage>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.AssistantConversationMessage, 13));\n};\n\n\n/**\n * @param {!Array<!proto.AssistantConversationMessage>} value\n * @return {!proto.AssistantConversation} returns this\n*/\nproto.AssistantConversation.prototype.setAssistantconversationmessageList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 13, value);\n};\n\n\n/**\n * @param {!proto.AssistantConversationMessage=} opt_value\n * @param {number=} opt_index\n * @return {!proto.AssistantConversationMessage}\n */\nproto.AssistantConversation.prototype.addAssistantconversationmessage = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 13, opt_value, proto.AssistantConversationMessage, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.clearAssistantconversationmessageList = function() {\n  return this.setAssistantconversationmessageList([]);\n};\n\n\n/**\n * optional string identifier = 14;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getIdentifier = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 14, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setIdentifier = function(value) {\n  return jspb.Message.setProto3StringField(this, 14, value);\n};\n\n\n/**\n * optional string status = 15;\n * @return {string}\n */\nproto.AssistantConversation.prototype.getStatus = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 15, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.setStatus = function(value) {\n  return jspb.Message.setProto3StringField(this, 15, value);\n};\n\n\n/**\n * optional google.protobuf.Timestamp createdDate = 26;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.AssistantConversation.prototype.getCreateddate = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 26));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.AssistantConversation} returns this\n*/\nproto.AssistantConversation.prototype.setCreateddate = function(value) {\n  return jspb.Message.setWrapperField(this, 26, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.clearCreateddate = function() {\n  return this.setCreateddate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantConversation.prototype.hasCreateddate = function() {\n  return jspb.Message.getField(this, 26) != null;\n};\n\n\n/**\n * optional google.protobuf.Timestamp updatedDate = 27;\n * @return {?proto.google.protobuf.Timestamp}\n */\nproto.AssistantConversation.prototype.getUpdateddate = function() {\n  return /** @type{?proto.google.protobuf.Timestamp} */ (\n    jspb.Message.getWrapperField(this, google_protobuf_timestamp_pb.Timestamp, 27));\n};\n\n\n/**\n * @param {?proto.google.protobuf.Timestamp|undefined} value\n * @return {!proto.AssistantConversation} returns this\n*/\nproto.AssistantConversation.prototype.setUpdateddate = function(value) {\n  return jspb.Message.setWrapperField(this, 27, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.clearUpdateddate = function() {\n  return this.setUpdateddate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.AssistantConversation.prototype.hasUpdateddate = function() {\n  return jspb.Message.getField(this, 27) != null;\n};\n\n\n/**\n * repeated AssistantConversationContext contexts = 28;\n * @return {!Array<!proto.AssistantConversationContext>}\n */\nproto.AssistantConversation.prototype.getContextsList = function() {\n  return /** @type{!Array<!proto.AssistantConversationContext>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.AssistantConversationContext, 28));\n};\n\n\n/**\n * @param {!Array<!proto.AssistantConversationContext>} value\n * @return {!proto.AssistantConversation} returns this\n*/\nproto.AssistantConversation.prototype.setContextsList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 28, value);\n};\n\n\n/**\n * @param {!proto.AssistantConversationContext=} opt_value\n * @param {number=} opt_index\n * @return {!proto.AssistantConversationContext}\n */\nproto.AssistantConversation.prototype.addContexts = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 28, opt_value, proto.AssistantConversationContext, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.clearContextsList = function() {\n  return this.setContextsList([]);\n};\n\n\n/**\n * repeated Metric metrics = 30;\n * @return {!Array<!proto.Metric>}\n */\nproto.AssistantConversation.prototype.getMetricsList = function() {\n  return /** @type{!Array<!proto.Metric>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Metric, 30));\n};\n\n\n/**\n * @param {!Array<!proto.Metric>} value\n * @return {!proto.AssistantConversation} returns this\n*/\nproto.AssistantConversation.prototype.setMetricsList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 30, value);\n};\n\n\n/**\n * @param {!proto.Metric=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metric}\n */\nproto.AssistantConversation.prototype.addMetrics = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 30, opt_value, proto.Metric, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.clearMetricsList = function() {\n  return this.setMetricsList([]);\n};\n\n\n/**\n * repeated Metadata metadata = 32;\n * @return {!Array<!proto.Metadata>}\n */\nproto.AssistantConversation.prototype.getMetadataList = function() {\n  return /** @type{!Array<!proto.Metadata>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Metadata, 32));\n};\n\n\n/**\n * @param {!Array<!proto.Metadata>} value\n * @return {!proto.AssistantConversation} returns this\n*/\nproto.AssistantConversation.prototype.setMetadataList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 32, value);\n};\n\n\n/**\n * @param {!proto.Metadata=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metadata}\n */\nproto.AssistantConversation.prototype.addMetadata = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 32, opt_value, proto.Metadata, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.AssistantConversation} returns this\n */\nproto.AssistantConversation.prototype.clearMetadataList = function() {\n  return this.setMetadataList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.GetAllAssistantConversationRequest.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.GetAllAssistantConversationRequest.prototype.toObject = function(opt_includeInstance) {\n  return proto.GetAllAssistantConversationRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.GetAllAssistantConversationRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.GetAllAssistantConversationRequest.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    assistantid: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    paginate: (f = msg.getPaginate()) && proto.Paginate.toObject(includeInstance, f),\n    criteriasList: jspb.Message.toObjectList(msg.getCriteriasList(),\n    proto.Criteria.toObject, includeInstance),\n    source: jspb.Message.getFieldWithDefault(msg, 7, 0)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.GetAllAssistantConversationRequest}\n */\nproto.GetAllAssistantConversationRequest.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.GetAllAssistantConversationRequest;\n  return proto.GetAllAssistantConversationRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.GetAllAssistantConversationRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.GetAllAssistantConversationRequest}\n */\nproto.GetAllAssistantConversationRequest.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantid(value);\n      break;\n    case 2:\n      var value = new proto.Paginate;\n      reader.readMessage(value,proto.Paginate.deserializeBinaryFromReader);\n      msg.setPaginate(value);\n      break;\n    case 3:\n      var value = new proto.Criteria;\n      reader.readMessage(value,proto.Criteria.deserializeBinaryFromReader);\n      msg.addCriterias(value);\n      break;\n    case 7:\n      var value = /** @type {!proto.Source} */ (reader.readEnum());\n      msg.setSource(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.GetAllAssistantConversationRequest.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.GetAllAssistantConversationRequest.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.GetAllAssistantConversationRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.GetAllAssistantConversationRequest.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getAssistantid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getPaginate();\n  if (f != null) {\n    writer.writeMessage(\n      2,\n      f,\n      proto.Paginate.serializeBinaryToWriter\n    );\n  }\n  f = message.getCriteriasList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      3,\n      f,\n      proto.Criteria.serializeBinaryToWriter\n    );\n  }\n  f = message.getSource();\n  if (f !== 0.0) {\n    writer.writeEnum(\n      7,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 assistantId = 1;\n * @return {string}\n */\nproto.GetAllAssistantConversationRequest.prototype.getAssistantid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.GetAllAssistantConversationRequest} returns this\n */\nproto.GetAllAssistantConversationRequest.prototype.setAssistantid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional Paginate paginate = 2;\n * @return {?proto.Paginate}\n */\nproto.GetAllAssistantConversationRequest.prototype.getPaginate = function() {\n  return /** @type{?proto.Paginate} */ (\n    jspb.Message.getWrapperField(this, proto.Paginate, 2));\n};\n\n\n/**\n * @param {?proto.Paginate|undefined} value\n * @return {!proto.GetAllAssistantConversationRequest} returns this\n*/\nproto.GetAllAssistantConversationRequest.prototype.setPaginate = function(value) {\n  return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.GetAllAssistantConversationRequest} returns this\n */\nproto.GetAllAssistantConversationRequest.prototype.clearPaginate = function() {\n  return this.setPaginate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.GetAllAssistantConversationRequest.prototype.hasPaginate = function() {\n  return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * repeated Criteria criterias = 3;\n * @return {!Array<!proto.Criteria>}\n */\nproto.GetAllAssistantConversationRequest.prototype.getCriteriasList = function() {\n  return /** @type{!Array<!proto.Criteria>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Criteria, 3));\n};\n\n\n/**\n * @param {!Array<!proto.Criteria>} value\n * @return {!proto.GetAllAssistantConversationRequest} returns this\n*/\nproto.GetAllAssistantConversationRequest.prototype.setCriteriasList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.Criteria=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Criteria}\n */\nproto.GetAllAssistantConversationRequest.prototype.addCriterias = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Criteria, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.GetAllAssistantConversationRequest} returns this\n */\nproto.GetAllAssistantConversationRequest.prototype.clearCriteriasList = function() {\n  return this.setCriteriasList([]);\n};\n\n\n/**\n * optional Source source = 7;\n * @return {!proto.Source}\n */\nproto.GetAllAssistantConversationRequest.prototype.getSource = function() {\n  return /** @type {!proto.Source} */ (jspb.Message.getFieldWithDefault(this, 7, 0));\n};\n\n\n/**\n * @param {!proto.Source} value\n * @return {!proto.GetAllAssistantConversationRequest} returns this\n */\nproto.GetAllAssistantConversationRequest.prototype.setSource = function(value) {\n  return jspb.Message.setProto3EnumField(this, 7, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.GetAllAssistantConversationResponse.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.GetAllAssistantConversationResponse.prototype.toObject = function(opt_includeInstance) {\n  return proto.GetAllAssistantConversationResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.GetAllAssistantConversationResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.GetAllAssistantConversationResponse.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    code: jspb.Message.getFieldWithDefault(msg, 1, 0),\n    success: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n    dataList: jspb.Message.toObjectList(msg.getDataList(),\n    proto.AssistantConversation.toObject, includeInstance),\n    error: (f = msg.getError()) && proto.Error.toObject(includeInstance, f),\n    paginated: (f = msg.getPaginated()) && proto.Paginated.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.GetAllAssistantConversationResponse}\n */\nproto.GetAllAssistantConversationResponse.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.GetAllAssistantConversationResponse;\n  return proto.GetAllAssistantConversationResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.GetAllAssistantConversationResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.GetAllAssistantConversationResponse}\n */\nproto.GetAllAssistantConversationResponse.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {number} */ (reader.readInt32());\n      msg.setCode(value);\n      break;\n    case 2:\n      var value = /** @type {boolean} */ (reader.readBool());\n      msg.setSuccess(value);\n      break;\n    case 3:\n      var value = new proto.AssistantConversation;\n      reader.readMessage(value,proto.AssistantConversation.deserializeBinaryFromReader);\n      msg.addData(value);\n      break;\n    case 4:\n      var value = new proto.Error;\n      reader.readMessage(value,proto.Error.deserializeBinaryFromReader);\n      msg.setError(value);\n      break;\n    case 5:\n      var value = new proto.Paginated;\n      reader.readMessage(value,proto.Paginated.deserializeBinaryFromReader);\n      msg.setPaginated(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.GetAllAssistantConversationResponse.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.GetAllAssistantConversationResponse.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.GetAllAssistantConversationResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.GetAllAssistantConversationResponse.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getCode();\n  if (f !== 0) {\n    writer.writeInt32(\n      1,\n      f\n    );\n  }\n  f = message.getSuccess();\n  if (f) {\n    writer.writeBool(\n      2,\n      f\n    );\n  }\n  f = message.getDataList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      3,\n      f,\n      proto.AssistantConversation.serializeBinaryToWriter\n    );\n  }\n  f = message.getError();\n  if (f != null) {\n    writer.writeMessage(\n      4,\n      f,\n      proto.Error.serializeBinaryToWriter\n    );\n  }\n  f = message.getPaginated();\n  if (f != null) {\n    writer.writeMessage(\n      5,\n      f,\n      proto.Paginated.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional int32 code = 1;\n * @return {number}\n */\nproto.GetAllAssistantConversationResponse.prototype.getCode = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.GetAllAssistantConversationResponse} returns this\n */\nproto.GetAllAssistantConversationResponse.prototype.setCode = function(value) {\n  return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional bool success = 2;\n * @return {boolean}\n */\nproto.GetAllAssistantConversationResponse.prototype.getSuccess = function() {\n  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.GetAllAssistantConversationResponse} returns this\n */\nproto.GetAllAssistantConversationResponse.prototype.setSuccess = function(value) {\n  return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * repeated AssistantConversation data = 3;\n * @return {!Array<!proto.AssistantConversation>}\n */\nproto.GetAllAssistantConversationResponse.prototype.getDataList = function() {\n  return /** @type{!Array<!proto.AssistantConversation>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.AssistantConversation, 3));\n};\n\n\n/**\n * @param {!Array<!proto.AssistantConversation>} value\n * @return {!proto.GetAllAssistantConversationResponse} returns this\n*/\nproto.GetAllAssistantConversationResponse.prototype.setDataList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.AssistantConversation=} opt_value\n * @param {number=} opt_index\n * @return {!proto.AssistantConversation}\n */\nproto.GetAllAssistantConversationResponse.prototype.addData = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.AssistantConversation, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.GetAllAssistantConversationResponse} returns this\n */\nproto.GetAllAssistantConversationResponse.prototype.clearDataList = function() {\n  return this.setDataList([]);\n};\n\n\n/**\n * optional Error error = 4;\n * @return {?proto.Error}\n */\nproto.GetAllAssistantConversationResponse.prototype.getError = function() {\n  return /** @type{?proto.Error} */ (\n    jspb.Message.getWrapperField(this, proto.Error, 4));\n};\n\n\n/**\n * @param {?proto.Error|undefined} value\n * @return {!proto.GetAllAssistantConversationResponse} returns this\n*/\nproto.GetAllAssistantConversationResponse.prototype.setError = function(value) {\n  return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.GetAllAssistantConversationResponse} returns this\n */\nproto.GetAllAssistantConversationResponse.prototype.clearError = function() {\n  return this.setError(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.GetAllAssistantConversationResponse.prototype.hasError = function() {\n  return jspb.Message.getField(this, 4) != null;\n};\n\n\n/**\n * optional Paginated paginated = 5;\n * @return {?proto.Paginated}\n */\nproto.GetAllAssistantConversationResponse.prototype.getPaginated = function() {\n  return /** @type{?proto.Paginated} */ (\n    jspb.Message.getWrapperField(this, proto.Paginated, 5));\n};\n\n\n/**\n * @param {?proto.Paginated|undefined} value\n * @return {!proto.GetAllAssistantConversationResponse} returns this\n*/\nproto.GetAllAssistantConversationResponse.prototype.setPaginated = function(value) {\n  return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.GetAllAssistantConversationResponse} returns this\n */\nproto.GetAllAssistantConversationResponse.prototype.clearPaginated = function() {\n  return this.setPaginated(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.GetAllAssistantConversationResponse.prototype.hasPaginated = function() {\n  return jspb.Message.getField(this, 5) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.GetAllConversationMessageRequest.repeatedFields_ = [4];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.GetAllConversationMessageRequest.prototype.toObject = function(opt_includeInstance) {\n  return proto.GetAllConversationMessageRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.GetAllConversationMessageRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.GetAllConversationMessageRequest.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    assistantid: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    assistantconversationid: jspb.Message.getFieldWithDefault(msg, 2, \"0\"),\n    paginate: (f = msg.getPaginate()) && proto.Paginate.toObject(includeInstance, f),\n    criteriasList: jspb.Message.toObjectList(msg.getCriteriasList(),\n    proto.Criteria.toObject, includeInstance),\n    order: (f = msg.getOrder()) && proto.Ordering.toObject(includeInstance, f),\n    source: jspb.Message.getFieldWithDefault(msg, 7, 0)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.GetAllConversationMessageRequest}\n */\nproto.GetAllConversationMessageRequest.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.GetAllConversationMessageRequest;\n  return proto.GetAllConversationMessageRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.GetAllConversationMessageRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.GetAllConversationMessageRequest}\n */\nproto.GetAllConversationMessageRequest.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantid(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantconversationid(value);\n      break;\n    case 3:\n      var value = new proto.Paginate;\n      reader.readMessage(value,proto.Paginate.deserializeBinaryFromReader);\n      msg.setPaginate(value);\n      break;\n    case 4:\n      var value = new proto.Criteria;\n      reader.readMessage(value,proto.Criteria.deserializeBinaryFromReader);\n      msg.addCriterias(value);\n      break;\n    case 5:\n      var value = new proto.Ordering;\n      reader.readMessage(value,proto.Ordering.deserializeBinaryFromReader);\n      msg.setOrder(value);\n      break;\n    case 7:\n      var value = /** @type {!proto.Source} */ (reader.readEnum());\n      msg.setSource(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.GetAllConversationMessageRequest.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.GetAllConversationMessageRequest.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.GetAllConversationMessageRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.GetAllConversationMessageRequest.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getAssistantid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getAssistantconversationid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      2,\n      f\n    );\n  }\n  f = message.getPaginate();\n  if (f != null) {\n    writer.writeMessage(\n      3,\n      f,\n      proto.Paginate.serializeBinaryToWriter\n    );\n  }\n  f = message.getCriteriasList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      4,\n      f,\n      proto.Criteria.serializeBinaryToWriter\n    );\n  }\n  f = message.getOrder();\n  if (f != null) {\n    writer.writeMessage(\n      5,\n      f,\n      proto.Ordering.serializeBinaryToWriter\n    );\n  }\n  f = message.getSource();\n  if (f !== 0.0) {\n    writer.writeEnum(\n      7,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 assistantId = 1;\n * @return {string}\n */\nproto.GetAllConversationMessageRequest.prototype.getAssistantid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.GetAllConversationMessageRequest} returns this\n */\nproto.GetAllConversationMessageRequest.prototype.setAssistantid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional uint64 assistantConversationId = 2;\n * @return {string}\n */\nproto.GetAllConversationMessageRequest.prototype.getAssistantconversationid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.GetAllConversationMessageRequest} returns this\n */\nproto.GetAllConversationMessageRequest.prototype.setAssistantconversationid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 2, value);\n};\n\n\n/**\n * optional Paginate paginate = 3;\n * @return {?proto.Paginate}\n */\nproto.GetAllConversationMessageRequest.prototype.getPaginate = function() {\n  return /** @type{?proto.Paginate} */ (\n    jspb.Message.getWrapperField(this, proto.Paginate, 3));\n};\n\n\n/**\n * @param {?proto.Paginate|undefined} value\n * @return {!proto.GetAllConversationMessageRequest} returns this\n*/\nproto.GetAllConversationMessageRequest.prototype.setPaginate = function(value) {\n  return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.GetAllConversationMessageRequest} returns this\n */\nproto.GetAllConversationMessageRequest.prototype.clearPaginate = function() {\n  return this.setPaginate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.GetAllConversationMessageRequest.prototype.hasPaginate = function() {\n  return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * repeated Criteria criterias = 4;\n * @return {!Array<!proto.Criteria>}\n */\nproto.GetAllConversationMessageRequest.prototype.getCriteriasList = function() {\n  return /** @type{!Array<!proto.Criteria>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.Criteria, 4));\n};\n\n\n/**\n * @param {!Array<!proto.Criteria>} value\n * @return {!proto.GetAllConversationMessageRequest} returns this\n*/\nproto.GetAllConversationMessageRequest.prototype.setCriteriasList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 4, value);\n};\n\n\n/**\n * @param {!proto.Criteria=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Criteria}\n */\nproto.GetAllConversationMessageRequest.prototype.addCriterias = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.Criteria, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.GetAllConversationMessageRequest} returns this\n */\nproto.GetAllConversationMessageRequest.prototype.clearCriteriasList = function() {\n  return this.setCriteriasList([]);\n};\n\n\n/**\n * optional Ordering order = 5;\n * @return {?proto.Ordering}\n */\nproto.GetAllConversationMessageRequest.prototype.getOrder = function() {\n  return /** @type{?proto.Ordering} */ (\n    jspb.Message.getWrapperField(this, proto.Ordering, 5));\n};\n\n\n/**\n * @param {?proto.Ordering|undefined} value\n * @return {!proto.GetAllConversationMessageRequest} returns this\n*/\nproto.GetAllConversationMessageRequest.prototype.setOrder = function(value) {\n  return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.GetAllConversationMessageRequest} returns this\n */\nproto.GetAllConversationMessageRequest.prototype.clearOrder = function() {\n  return this.setOrder(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.GetAllConversationMessageRequest.prototype.hasOrder = function() {\n  return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * optional Source source = 7;\n * @return {!proto.Source}\n */\nproto.GetAllConversationMessageRequest.prototype.getSource = function() {\n  return /** @type {!proto.Source} */ (jspb.Message.getFieldWithDefault(this, 7, 0));\n};\n\n\n/**\n * @param {!proto.Source} value\n * @return {!proto.GetAllConversationMessageRequest} returns this\n */\nproto.GetAllConversationMessageRequest.prototype.setSource = function(value) {\n  return jspb.Message.setProto3EnumField(this, 7, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.GetAllConversationMessageResponse.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.GetAllConversationMessageResponse.prototype.toObject = function(opt_includeInstance) {\n  return proto.GetAllConversationMessageResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.GetAllConversationMessageResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.GetAllConversationMessageResponse.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    code: jspb.Message.getFieldWithDefault(msg, 1, 0),\n    success: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n    dataList: jspb.Message.toObjectList(msg.getDataList(),\n    proto.AssistantConversationMessage.toObject, includeInstance),\n    error: (f = msg.getError()) && proto.Error.toObject(includeInstance, f),\n    paginated: (f = msg.getPaginated()) && proto.Paginated.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.GetAllConversationMessageResponse}\n */\nproto.GetAllConversationMessageResponse.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.GetAllConversationMessageResponse;\n  return proto.GetAllConversationMessageResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.GetAllConversationMessageResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.GetAllConversationMessageResponse}\n */\nproto.GetAllConversationMessageResponse.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {number} */ (reader.readInt32());\n      msg.setCode(value);\n      break;\n    case 2:\n      var value = /** @type {boolean} */ (reader.readBool());\n      msg.setSuccess(value);\n      break;\n    case 3:\n      var value = new proto.AssistantConversationMessage;\n      reader.readMessage(value,proto.AssistantConversationMessage.deserializeBinaryFromReader);\n      msg.addData(value);\n      break;\n    case 4:\n      var value = new proto.Error;\n      reader.readMessage(value,proto.Error.deserializeBinaryFromReader);\n      msg.setError(value);\n      break;\n    case 5:\n      var value = new proto.Paginated;\n      reader.readMessage(value,proto.Paginated.deserializeBinaryFromReader);\n      msg.setPaginated(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.GetAllConversationMessageResponse.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.GetAllConversationMessageResponse.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.GetAllConversationMessageResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.GetAllConversationMessageResponse.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getCode();\n  if (f !== 0) {\n    writer.writeInt32(\n      1,\n      f\n    );\n  }\n  f = message.getSuccess();\n  if (f) {\n    writer.writeBool(\n      2,\n      f\n    );\n  }\n  f = message.getDataList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      3,\n      f,\n      proto.AssistantConversationMessage.serializeBinaryToWriter\n    );\n  }\n  f = message.getError();\n  if (f != null) {\n    writer.writeMessage(\n      4,\n      f,\n      proto.Error.serializeBinaryToWriter\n    );\n  }\n  f = message.getPaginated();\n  if (f != null) {\n    writer.writeMessage(\n      5,\n      f,\n      proto.Paginated.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional int32 code = 1;\n * @return {number}\n */\nproto.GetAllConversationMessageResponse.prototype.getCode = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.GetAllConversationMessageResponse} returns this\n */\nproto.GetAllConversationMessageResponse.prototype.setCode = function(value) {\n  return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional bool success = 2;\n * @return {boolean}\n */\nproto.GetAllConversationMessageResponse.prototype.getSuccess = function() {\n  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.GetAllConversationMessageResponse} returns this\n */\nproto.GetAllConversationMessageResponse.prototype.setSuccess = function(value) {\n  return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * repeated AssistantConversationMessage data = 3;\n * @return {!Array<!proto.AssistantConversationMessage>}\n */\nproto.GetAllConversationMessageResponse.prototype.getDataList = function() {\n  return /** @type{!Array<!proto.AssistantConversationMessage>} */ (\n    jspb.Message.getRepeatedWrapperField(this, proto.AssistantConversationMessage, 3));\n};\n\n\n/**\n * @param {!Array<!proto.AssistantConversationMessage>} value\n * @return {!proto.GetAllConversationMessageResponse} returns this\n*/\nproto.GetAllConversationMessageResponse.prototype.setDataList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.AssistantConversationMessage=} opt_value\n * @param {number=} opt_index\n * @return {!proto.AssistantConversationMessage}\n */\nproto.GetAllConversationMessageResponse.prototype.addData = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.AssistantConversationMessage, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.GetAllConversationMessageResponse} returns this\n */\nproto.GetAllConversationMessageResponse.prototype.clearDataList = function() {\n  return this.setDataList([]);\n};\n\n\n/**\n * optional Error error = 4;\n * @return {?proto.Error}\n */\nproto.GetAllConversationMessageResponse.prototype.getError = function() {\n  return /** @type{?proto.Error} */ (\n    jspb.Message.getWrapperField(this, proto.Error, 4));\n};\n\n\n/**\n * @param {?proto.Error|undefined} value\n * @return {!proto.GetAllConversationMessageResponse} returns this\n*/\nproto.GetAllConversationMessageResponse.prototype.setError = function(value) {\n  return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.GetAllConversationMessageResponse} returns this\n */\nproto.GetAllConversationMessageResponse.prototype.clearError = function() {\n  return this.setError(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.GetAllConversationMessageResponse.prototype.hasError = function() {\n  return jspb.Message.getField(this, 4) != null;\n};\n\n\n/**\n * optional Paginated paginated = 5;\n * @return {?proto.Paginated}\n */\nproto.GetAllConversationMessageResponse.prototype.getPaginated = function() {\n  return /** @type{?proto.Paginated} */ (\n    jspb.Message.getWrapperField(this, proto.Paginated, 5));\n};\n\n\n/**\n * @param {?proto.Paginated|undefined} value\n * @return {!proto.GetAllConversationMessageResponse} returns this\n*/\nproto.GetAllConversationMessageResponse.prototype.setPaginated = function(value) {\n  return jspb.Message.setWrapperField(this, 5, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.GetAllConversationMessageResponse} returns this\n */\nproto.GetAllConversationMessageResponse.prototype.clearPaginated = function() {\n  return this.setPaginated(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.GetAllConversationMessageResponse.prototype.hasPaginated = function() {\n  return jspb.Message.getField(this, 5) != null;\n};\n\n\n/**\n * @enum {number}\n */\nproto.Source = {\n  WEB_PLUGIN: 0,\n  RAPIDA_APP: 1,\n  PYTHON_SDK: 2,\n  NODE_SDK: 3,\n  GO_SDK: 4,\n  TYPESCRIPT_SDK: 5,\n  JAVA_SDK: 6,\n  PHP_SDK: 7,\n  RUST_SDK: 8\n};\n\ngoog.object.extend(exports, proto);\n","// source: talk-api.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n *     field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar google_protobuf_any_pb = require('google-protobuf/google/protobuf/any_pb.js');\ngoog.object.extend(proto, google_protobuf_any_pb);\nvar common_pb = require('./common_pb.js');\ngoog.object.extend(proto, common_pb);\ngoog.exportSymbol('proto.talk_api.AssistantDefinition', null, global);\ngoog.exportSymbol('proto.talk_api.AssistantMessagingRequest', null, global);\ngoog.exportSymbol('proto.talk_api.AssistantMessagingResponse', null, global);\ngoog.exportSymbol('proto.talk_api.AssistantMessagingResponse.DataCase', null, global);\ngoog.exportSymbol('proto.talk_api.CreateConversationMetricRequest', null, global);\ngoog.exportSymbol('proto.talk_api.CreateConversationMetricResponse', null, global);\ngoog.exportSymbol('proto.talk_api.CreateMessageMetricRequest', null, global);\ngoog.exportSymbol('proto.talk_api.CreateMessageMetricResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.talk_api.AssistantDefinition = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.talk_api.AssistantDefinition, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.talk_api.AssistantDefinition.displayName = 'proto.talk_api.AssistantDefinition';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.talk_api.AssistantMessagingRequest = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.talk_api.AssistantMessagingRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.talk_api.AssistantMessagingRequest.displayName = 'proto.talk_api.AssistantMessagingRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.talk_api.AssistantMessagingResponse = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, null, proto.talk_api.AssistantMessagingResponse.oneofGroups_);\n};\ngoog.inherits(proto.talk_api.AssistantMessagingResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.talk_api.AssistantMessagingResponse.displayName = 'proto.talk_api.AssistantMessagingResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.talk_api.CreateMessageMetricRequest = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.talk_api.CreateMessageMetricRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.talk_api.CreateMessageMetricRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.talk_api.CreateMessageMetricRequest.displayName = 'proto.talk_api.CreateMessageMetricRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.talk_api.CreateMessageMetricResponse = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.talk_api.CreateMessageMetricResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.talk_api.CreateMessageMetricResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.talk_api.CreateMessageMetricResponse.displayName = 'proto.talk_api.CreateMessageMetricResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.talk_api.CreateConversationMetricRequest = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.talk_api.CreateConversationMetricRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.talk_api.CreateConversationMetricRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.talk_api.CreateConversationMetricRequest.displayName = 'proto.talk_api.CreateConversationMetricRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.talk_api.CreateConversationMetricResponse = function(opt_data) {\n  jspb.Message.initialize(this, opt_data, 0, -1, proto.talk_api.CreateConversationMetricResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.talk_api.CreateConversationMetricResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n  /**\n   * @public\n   * @override\n   */\n  proto.talk_api.CreateConversationMetricResponse.displayName = 'proto.talk_api.CreateConversationMetricResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.talk_api.AssistantDefinition.prototype.toObject = function(opt_includeInstance) {\n  return proto.talk_api.AssistantDefinition.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.talk_api.AssistantDefinition} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.AssistantDefinition.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    assistantid: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    version: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.talk_api.AssistantDefinition}\n */\nproto.talk_api.AssistantDefinition.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.talk_api.AssistantDefinition;\n  return proto.talk_api.AssistantDefinition.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.talk_api.AssistantDefinition} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.talk_api.AssistantDefinition}\n */\nproto.talk_api.AssistantDefinition.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantid(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setVersion(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.talk_api.AssistantDefinition.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.talk_api.AssistantDefinition.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.talk_api.AssistantDefinition} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.AssistantDefinition.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getAssistantid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getVersion();\n  if (f.length > 0) {\n    writer.writeString(\n      2,\n      f\n    );\n  }\n};\n\n\n/**\n * optional uint64 assistantId = 1;\n * @return {string}\n */\nproto.talk_api.AssistantDefinition.prototype.getAssistantid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.talk_api.AssistantDefinition} returns this\n */\nproto.talk_api.AssistantDefinition.prototype.setAssistantid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional string version = 2;\n * @return {string}\n */\nproto.talk_api.AssistantDefinition.prototype.getVersion = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.talk_api.AssistantDefinition} returns this\n */\nproto.talk_api.AssistantDefinition.prototype.setVersion = function(value) {\n  return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.toObject = function(opt_includeInstance) {\n  return proto.talk_api.AssistantMessagingRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.talk_api.AssistantMessagingRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.AssistantMessagingRequest.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    assistant: (f = msg.getAssistant()) && proto.talk_api.AssistantDefinition.toObject(includeInstance, f),\n    message: (f = msg.getMessage()) && common_pb.Message.toObject(includeInstance, f),\n    assistantconversationid: jspb.Message.getFieldWithDefault(msg, 4, \"0\"),\n    metadataMap: (f = msg.getMetadataMap()) ? f.toObject(includeInstance, proto.google.protobuf.Any.toObject) : [],\n    source: jspb.Message.getFieldWithDefault(msg, 7, 0),\n    argsMap: (f = msg.getArgsMap()) ? f.toObject(includeInstance, proto.google.protobuf.Any.toObject) : [],\n    optionsMap: (f = msg.getOptionsMap()) ? f.toObject(includeInstance, proto.google.protobuf.Any.toObject) : []\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.talk_api.AssistantMessagingRequest}\n */\nproto.talk_api.AssistantMessagingRequest.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.talk_api.AssistantMessagingRequest;\n  return proto.talk_api.AssistantMessagingRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.talk_api.AssistantMessagingRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.talk_api.AssistantMessagingRequest}\n */\nproto.talk_api.AssistantMessagingRequest.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 2:\n      var value = new proto.talk_api.AssistantDefinition;\n      reader.readMessage(value,proto.talk_api.AssistantDefinition.deserializeBinaryFromReader);\n      msg.setAssistant(value);\n      break;\n    case 3:\n      var value = new common_pb.Message;\n      reader.readMessage(value,common_pb.Message.deserializeBinaryFromReader);\n      msg.setMessage(value);\n      break;\n    case 4:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantconversationid(value);\n      break;\n    case 6:\n      var value = msg.getMetadataMap();\n      reader.readMessage(value, function(message, reader) {\n        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.google.protobuf.Any.deserializeBinaryFromReader, \"\", new proto.google.protobuf.Any());\n         });\n      break;\n    case 7:\n      var value = /** @type {!proto.Source} */ (reader.readEnum());\n      msg.setSource(value);\n      break;\n    case 10:\n      var value = msg.getArgsMap();\n      reader.readMessage(value, function(message, reader) {\n        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.google.protobuf.Any.deserializeBinaryFromReader, \"\", new proto.google.protobuf.Any());\n         });\n      break;\n    case 11:\n      var value = msg.getOptionsMap();\n      reader.readMessage(value, function(message, reader) {\n        jspb.Map.deserializeBinary(message, reader, jspb.BinaryReader.prototype.readString, jspb.BinaryReader.prototype.readMessage, proto.google.protobuf.Any.deserializeBinaryFromReader, \"\", new proto.google.protobuf.Any());\n         });\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.talk_api.AssistantMessagingRequest.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.talk_api.AssistantMessagingRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.AssistantMessagingRequest.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getAssistant();\n  if (f != null) {\n    writer.writeMessage(\n      2,\n      f,\n      proto.talk_api.AssistantDefinition.serializeBinaryToWriter\n    );\n  }\n  f = message.getMessage();\n  if (f != null) {\n    writer.writeMessage(\n      3,\n      f,\n      common_pb.Message.serializeBinaryToWriter\n    );\n  }\n  f = /** @type {string} */ (jspb.Message.getField(message, 4));\n  if (f != null) {\n    writer.writeUint64String(\n      4,\n      f\n    );\n  }\n  f = message.getMetadataMap(true);\n  if (f && f.getLength() > 0) {\n    f.serializeBinary(6, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.google.protobuf.Any.serializeBinaryToWriter);\n  }\n  f = message.getSource();\n  if (f !== 0.0) {\n    writer.writeEnum(\n      7,\n      f\n    );\n  }\n  f = message.getArgsMap(true);\n  if (f && f.getLength() > 0) {\n    f.serializeBinary(10, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.google.protobuf.Any.serializeBinaryToWriter);\n  }\n  f = message.getOptionsMap(true);\n  if (f && f.getLength() > 0) {\n    f.serializeBinary(11, writer, jspb.BinaryWriter.prototype.writeString, jspb.BinaryWriter.prototype.writeMessage, proto.google.protobuf.Any.serializeBinaryToWriter);\n  }\n};\n\n\n/**\n * optional AssistantDefinition assistant = 2;\n * @return {?proto.talk_api.AssistantDefinition}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.getAssistant = function() {\n  return /** @type{?proto.talk_api.AssistantDefinition} */ (\n    jspb.Message.getWrapperField(this, proto.talk_api.AssistantDefinition, 2));\n};\n\n\n/**\n * @param {?proto.talk_api.AssistantDefinition|undefined} value\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n*/\nproto.talk_api.AssistantMessagingRequest.prototype.setAssistant = function(value) {\n  return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n */\nproto.talk_api.AssistantMessagingRequest.prototype.clearAssistant = function() {\n  return this.setAssistant(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.hasAssistant = function() {\n  return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional Message message = 3;\n * @return {?proto.Message}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.getMessage = function() {\n  return /** @type{?proto.Message} */ (\n    jspb.Message.getWrapperField(this, common_pb.Message, 3));\n};\n\n\n/**\n * @param {?proto.Message|undefined} value\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n*/\nproto.talk_api.AssistantMessagingRequest.prototype.setMessage = function(value) {\n  return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n */\nproto.talk_api.AssistantMessagingRequest.prototype.clearMessage = function() {\n  return this.setMessage(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.hasMessage = function() {\n  return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional uint64 assistantConversationId = 4;\n * @return {string}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.getAssistantconversationid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n */\nproto.talk_api.AssistantMessagingRequest.prototype.setAssistantconversationid = function(value) {\n  return jspb.Message.setField(this, 4, value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n */\nproto.talk_api.AssistantMessagingRequest.prototype.clearAssistantconversationid = function() {\n  return jspb.Message.setField(this, 4, undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.hasAssistantconversationid = function() {\n  return jspb.Message.getField(this, 4) != null;\n};\n\n\n/**\n * map<string, google.protobuf.Any> metadata = 6;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map<string,!proto.google.protobuf.Any>}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.getMetadataMap = function(opt_noLazyCreate) {\n  return /** @type {!jspb.Map<string,!proto.google.protobuf.Any>} */ (\n      jspb.Message.getMapField(this, 6, opt_noLazyCreate,\n      proto.google.protobuf.Any));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n */\nproto.talk_api.AssistantMessagingRequest.prototype.clearMetadataMap = function() {\n  this.getMetadataMap().clear();\n  return this;};\n\n\n/**\n * optional Source source = 7;\n * @return {!proto.Source}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.getSource = function() {\n  return /** @type {!proto.Source} */ (jspb.Message.getFieldWithDefault(this, 7, 0));\n};\n\n\n/**\n * @param {!proto.Source} value\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n */\nproto.talk_api.AssistantMessagingRequest.prototype.setSource = function(value) {\n  return jspb.Message.setProto3EnumField(this, 7, value);\n};\n\n\n/**\n * map<string, google.protobuf.Any> args = 10;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map<string,!proto.google.protobuf.Any>}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.getArgsMap = function(opt_noLazyCreate) {\n  return /** @type {!jspb.Map<string,!proto.google.protobuf.Any>} */ (\n      jspb.Message.getMapField(this, 10, opt_noLazyCreate,\n      proto.google.protobuf.Any));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n */\nproto.talk_api.AssistantMessagingRequest.prototype.clearArgsMap = function() {\n  this.getArgsMap().clear();\n  return this;};\n\n\n/**\n * map<string, google.protobuf.Any> options = 11;\n * @param {boolean=} opt_noLazyCreate Do not create the map if\n * empty, instead returning `undefined`\n * @return {!jspb.Map<string,!proto.google.protobuf.Any>}\n */\nproto.talk_api.AssistantMessagingRequest.prototype.getOptionsMap = function(opt_noLazyCreate) {\n  return /** @type {!jspb.Map<string,!proto.google.protobuf.Any>} */ (\n      jspb.Message.getMapField(this, 11, opt_noLazyCreate,\n      proto.google.protobuf.Any));\n};\n\n\n/**\n * Clears values from the map. The map will be non-null.\n * @return {!proto.talk_api.AssistantMessagingRequest} returns this\n */\nproto.talk_api.AssistantMessagingRequest.prototype.clearOptionsMap = function() {\n  this.getOptionsMap().clear();\n  return this;};\n\n\n\n/**\n * Oneof group definitions for this message. Each group defines the field\n * numbers belonging to that group. When of these fields' value is set, all\n * other fields in the group are cleared. During deserialization, if multiple\n * fields are encountered for a group, only the last value seen will be kept.\n * @private {!Array<!Array<number>>}\n * @const\n */\nproto.talk_api.AssistantMessagingResponse.oneofGroups_ = [[3,5]];\n\n/**\n * @enum {number}\n */\nproto.talk_api.AssistantMessagingResponse.DataCase = {\n  DATA_NOT_SET: 0,\n  MESSAGE: 3,\n  EVENT: 5\n};\n\n/**\n * @return {proto.talk_api.AssistantMessagingResponse.DataCase}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.getDataCase = function() {\n  return /** @type {proto.talk_api.AssistantMessagingResponse.DataCase} */(jspb.Message.computeOneofCase(this, proto.talk_api.AssistantMessagingResponse.oneofGroups_[0]));\n};\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.toObject = function(opt_includeInstance) {\n  return proto.talk_api.AssistantMessagingResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.talk_api.AssistantMessagingResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.AssistantMessagingResponse.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    code: jspb.Message.getFieldWithDefault(msg, 1, 0),\n    success: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n    error: (f = msg.getError()) && common_pb.Error.toObject(includeInstance, f),\n    message: (f = msg.getMessage()) && common_pb.AssistantConversationMessage.toObject(includeInstance, f),\n    event: (f = msg.getEvent()) && common_pb.Event.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.talk_api.AssistantMessagingResponse}\n */\nproto.talk_api.AssistantMessagingResponse.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.talk_api.AssistantMessagingResponse;\n  return proto.talk_api.AssistantMessagingResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.talk_api.AssistantMessagingResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.talk_api.AssistantMessagingResponse}\n */\nproto.talk_api.AssistantMessagingResponse.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {number} */ (reader.readInt32());\n      msg.setCode(value);\n      break;\n    case 2:\n      var value = /** @type {boolean} */ (reader.readBool());\n      msg.setSuccess(value);\n      break;\n    case 4:\n      var value = new common_pb.Error;\n      reader.readMessage(value,common_pb.Error.deserializeBinaryFromReader);\n      msg.setError(value);\n      break;\n    case 3:\n      var value = new common_pb.AssistantConversationMessage;\n      reader.readMessage(value,common_pb.AssistantConversationMessage.deserializeBinaryFromReader);\n      msg.setMessage(value);\n      break;\n    case 5:\n      var value = new common_pb.Event;\n      reader.readMessage(value,common_pb.Event.deserializeBinaryFromReader);\n      msg.setEvent(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.talk_api.AssistantMessagingResponse.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.talk_api.AssistantMessagingResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.AssistantMessagingResponse.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getCode();\n  if (f !== 0) {\n    writer.writeInt32(\n      1,\n      f\n    );\n  }\n  f = message.getSuccess();\n  if (f) {\n    writer.writeBool(\n      2,\n      f\n    );\n  }\n  f = message.getError();\n  if (f != null) {\n    writer.writeMessage(\n      4,\n      f,\n      common_pb.Error.serializeBinaryToWriter\n    );\n  }\n  f = message.getMessage();\n  if (f != null) {\n    writer.writeMessage(\n      3,\n      f,\n      common_pb.AssistantConversationMessage.serializeBinaryToWriter\n    );\n  }\n  f = message.getEvent();\n  if (f != null) {\n    writer.writeMessage(\n      5,\n      f,\n      common_pb.Event.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional int32 code = 1;\n * @return {number}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.getCode = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.talk_api.AssistantMessagingResponse} returns this\n */\nproto.talk_api.AssistantMessagingResponse.prototype.setCode = function(value) {\n  return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional bool success = 2;\n * @return {boolean}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.getSuccess = function() {\n  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.talk_api.AssistantMessagingResponse} returns this\n */\nproto.talk_api.AssistantMessagingResponse.prototype.setSuccess = function(value) {\n  return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * optional Error error = 4;\n * @return {?proto.Error}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.getError = function() {\n  return /** @type{?proto.Error} */ (\n    jspb.Message.getWrapperField(this, common_pb.Error, 4));\n};\n\n\n/**\n * @param {?proto.Error|undefined} value\n * @return {!proto.talk_api.AssistantMessagingResponse} returns this\n*/\nproto.talk_api.AssistantMessagingResponse.prototype.setError = function(value) {\n  return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.talk_api.AssistantMessagingResponse} returns this\n */\nproto.talk_api.AssistantMessagingResponse.prototype.clearError = function() {\n  return this.setError(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.hasError = function() {\n  return jspb.Message.getField(this, 4) != null;\n};\n\n\n/**\n * optional AssistantConversationMessage message = 3;\n * @return {?proto.AssistantConversationMessage}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.getMessage = function() {\n  return /** @type{?proto.AssistantConversationMessage} */ (\n    jspb.Message.getWrapperField(this, common_pb.AssistantConversationMessage, 3));\n};\n\n\n/**\n * @param {?proto.AssistantConversationMessage|undefined} value\n * @return {!proto.talk_api.AssistantMessagingResponse} returns this\n*/\nproto.talk_api.AssistantMessagingResponse.prototype.setMessage = function(value) {\n  return jspb.Message.setOneofWrapperField(this, 3, proto.talk_api.AssistantMessagingResponse.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.talk_api.AssistantMessagingResponse} returns this\n */\nproto.talk_api.AssistantMessagingResponse.prototype.clearMessage = function() {\n  return this.setMessage(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.hasMessage = function() {\n  return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional Event event = 5;\n * @return {?proto.Event}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.getEvent = function() {\n  return /** @type{?proto.Event} */ (\n    jspb.Message.getWrapperField(this, common_pb.Event, 5));\n};\n\n\n/**\n * @param {?proto.Event|undefined} value\n * @return {!proto.talk_api.AssistantMessagingResponse} returns this\n*/\nproto.talk_api.AssistantMessagingResponse.prototype.setEvent = function(value) {\n  return jspb.Message.setOneofWrapperField(this, 5, proto.talk_api.AssistantMessagingResponse.oneofGroups_[0], value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.talk_api.AssistantMessagingResponse} returns this\n */\nproto.talk_api.AssistantMessagingResponse.prototype.clearEvent = function() {\n  return this.setEvent(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.talk_api.AssistantMessagingResponse.prototype.hasEvent = function() {\n  return jspb.Message.getField(this, 5) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.talk_api.CreateMessageMetricRequest.repeatedFields_ = [4];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.toObject = function(opt_includeInstance) {\n  return proto.talk_api.CreateMessageMetricRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.talk_api.CreateMessageMetricRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.CreateMessageMetricRequest.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    assistantid: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    assistantconversationid: jspb.Message.getFieldWithDefault(msg, 2, \"0\"),\n    messageid: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n    metricsList: jspb.Message.toObjectList(msg.getMetricsList(),\n    common_pb.Metric.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.talk_api.CreateMessageMetricRequest}\n */\nproto.talk_api.CreateMessageMetricRequest.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.talk_api.CreateMessageMetricRequest;\n  return proto.talk_api.CreateMessageMetricRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.talk_api.CreateMessageMetricRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.talk_api.CreateMessageMetricRequest}\n */\nproto.talk_api.CreateMessageMetricRequest.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantid(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantconversationid(value);\n      break;\n    case 3:\n      var value = /** @type {string} */ (reader.readString());\n      msg.setMessageid(value);\n      break;\n    case 4:\n      var value = new common_pb.Metric;\n      reader.readMessage(value,common_pb.Metric.deserializeBinaryFromReader);\n      msg.addMetrics(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.talk_api.CreateMessageMetricRequest.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.talk_api.CreateMessageMetricRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.CreateMessageMetricRequest.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getAssistantid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getAssistantconversationid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      2,\n      f\n    );\n  }\n  f = message.getMessageid();\n  if (f.length > 0) {\n    writer.writeString(\n      3,\n      f\n    );\n  }\n  f = message.getMetricsList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      4,\n      f,\n      common_pb.Metric.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional uint64 assistantId = 1;\n * @return {string}\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.getAssistantid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.talk_api.CreateMessageMetricRequest} returns this\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.setAssistantid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional uint64 assistantConversationId = 2;\n * @return {string}\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.getAssistantconversationid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.talk_api.CreateMessageMetricRequest} returns this\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.setAssistantconversationid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 2, value);\n};\n\n\n/**\n * optional string messageId = 3;\n * @return {string}\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.getMessageid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.talk_api.CreateMessageMetricRequest} returns this\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.setMessageid = function(value) {\n  return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * repeated Metric metrics = 4;\n * @return {!Array<!proto.Metric>}\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.getMetricsList = function() {\n  return /** @type{!Array<!proto.Metric>} */ (\n    jspb.Message.getRepeatedWrapperField(this, common_pb.Metric, 4));\n};\n\n\n/**\n * @param {!Array<!proto.Metric>} value\n * @return {!proto.talk_api.CreateMessageMetricRequest} returns this\n*/\nproto.talk_api.CreateMessageMetricRequest.prototype.setMetricsList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 4, value);\n};\n\n\n/**\n * @param {!proto.Metric=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metric}\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.addMetrics = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.Metric, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.talk_api.CreateMessageMetricRequest} returns this\n */\nproto.talk_api.CreateMessageMetricRequest.prototype.clearMetricsList = function() {\n  return this.setMetricsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.talk_api.CreateMessageMetricResponse.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.toObject = function(opt_includeInstance) {\n  return proto.talk_api.CreateMessageMetricResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.talk_api.CreateMessageMetricResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.CreateMessageMetricResponse.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    code: jspb.Message.getFieldWithDefault(msg, 1, 0),\n    success: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n    dataList: jspb.Message.toObjectList(msg.getDataList(),\n    common_pb.Metric.toObject, includeInstance),\n    error: (f = msg.getError()) && common_pb.Error.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.talk_api.CreateMessageMetricResponse}\n */\nproto.talk_api.CreateMessageMetricResponse.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.talk_api.CreateMessageMetricResponse;\n  return proto.talk_api.CreateMessageMetricResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.talk_api.CreateMessageMetricResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.talk_api.CreateMessageMetricResponse}\n */\nproto.talk_api.CreateMessageMetricResponse.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {number} */ (reader.readInt32());\n      msg.setCode(value);\n      break;\n    case 2:\n      var value = /** @type {boolean} */ (reader.readBool());\n      msg.setSuccess(value);\n      break;\n    case 3:\n      var value = new common_pb.Metric;\n      reader.readMessage(value,common_pb.Metric.deserializeBinaryFromReader);\n      msg.addData(value);\n      break;\n    case 4:\n      var value = new common_pb.Error;\n      reader.readMessage(value,common_pb.Error.deserializeBinaryFromReader);\n      msg.setError(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.talk_api.CreateMessageMetricResponse.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.talk_api.CreateMessageMetricResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.CreateMessageMetricResponse.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getCode();\n  if (f !== 0) {\n    writer.writeInt32(\n      1,\n      f\n    );\n  }\n  f = message.getSuccess();\n  if (f) {\n    writer.writeBool(\n      2,\n      f\n    );\n  }\n  f = message.getDataList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      3,\n      f,\n      common_pb.Metric.serializeBinaryToWriter\n    );\n  }\n  f = message.getError();\n  if (f != null) {\n    writer.writeMessage(\n      4,\n      f,\n      common_pb.Error.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional int32 code = 1;\n * @return {number}\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.getCode = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.talk_api.CreateMessageMetricResponse} returns this\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.setCode = function(value) {\n  return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional bool success = 2;\n * @return {boolean}\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.getSuccess = function() {\n  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.talk_api.CreateMessageMetricResponse} returns this\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.setSuccess = function(value) {\n  return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * repeated Metric data = 3;\n * @return {!Array<!proto.Metric>}\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.getDataList = function() {\n  return /** @type{!Array<!proto.Metric>} */ (\n    jspb.Message.getRepeatedWrapperField(this, common_pb.Metric, 3));\n};\n\n\n/**\n * @param {!Array<!proto.Metric>} value\n * @return {!proto.talk_api.CreateMessageMetricResponse} returns this\n*/\nproto.talk_api.CreateMessageMetricResponse.prototype.setDataList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.Metric=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metric}\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.addData = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Metric, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.talk_api.CreateMessageMetricResponse} returns this\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.clearDataList = function() {\n  return this.setDataList([]);\n};\n\n\n/**\n * optional Error error = 4;\n * @return {?proto.Error}\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.getError = function() {\n  return /** @type{?proto.Error} */ (\n    jspb.Message.getWrapperField(this, common_pb.Error, 4));\n};\n\n\n/**\n * @param {?proto.Error|undefined} value\n * @return {!proto.talk_api.CreateMessageMetricResponse} returns this\n*/\nproto.talk_api.CreateMessageMetricResponse.prototype.setError = function(value) {\n  return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.talk_api.CreateMessageMetricResponse} returns this\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.clearError = function() {\n  return this.setError(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.talk_api.CreateMessageMetricResponse.prototype.hasError = function() {\n  return jspb.Message.getField(this, 4) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.talk_api.CreateConversationMetricRequest.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.toObject = function(opt_includeInstance) {\n  return proto.talk_api.CreateConversationMetricRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.talk_api.CreateConversationMetricRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.CreateConversationMetricRequest.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    assistantid: jspb.Message.getFieldWithDefault(msg, 1, \"0\"),\n    assistantconversationid: jspb.Message.getFieldWithDefault(msg, 2, \"0\"),\n    metricsList: jspb.Message.toObjectList(msg.getMetricsList(),\n    common_pb.Metric.toObject, includeInstance)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.talk_api.CreateConversationMetricRequest}\n */\nproto.talk_api.CreateConversationMetricRequest.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.talk_api.CreateConversationMetricRequest;\n  return proto.talk_api.CreateConversationMetricRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.talk_api.CreateConversationMetricRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.talk_api.CreateConversationMetricRequest}\n */\nproto.talk_api.CreateConversationMetricRequest.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantid(value);\n      break;\n    case 2:\n      var value = /** @type {string} */ (reader.readUint64String());\n      msg.setAssistantconversationid(value);\n      break;\n    case 3:\n      var value = new common_pb.Metric;\n      reader.readMessage(value,common_pb.Metric.deserializeBinaryFromReader);\n      msg.addMetrics(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.talk_api.CreateConversationMetricRequest.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.talk_api.CreateConversationMetricRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.CreateConversationMetricRequest.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getAssistantid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      1,\n      f\n    );\n  }\n  f = message.getAssistantconversationid();\n  if (parseInt(f, 10) !== 0) {\n    writer.writeUint64String(\n      2,\n      f\n    );\n  }\n  f = message.getMetricsList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      3,\n      f,\n      common_pb.Metric.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional uint64 assistantId = 1;\n * @return {string}\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.getAssistantid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.talk_api.CreateConversationMetricRequest} returns this\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.setAssistantid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 1, value);\n};\n\n\n/**\n * optional uint64 assistantConversationId = 2;\n * @return {string}\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.getAssistantconversationid = function() {\n  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"0\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.talk_api.CreateConversationMetricRequest} returns this\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.setAssistantconversationid = function(value) {\n  return jspb.Message.setProto3StringIntField(this, 2, value);\n};\n\n\n/**\n * repeated Metric metrics = 3;\n * @return {!Array<!proto.Metric>}\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.getMetricsList = function() {\n  return /** @type{!Array<!proto.Metric>} */ (\n    jspb.Message.getRepeatedWrapperField(this, common_pb.Metric, 3));\n};\n\n\n/**\n * @param {!Array<!proto.Metric>} value\n * @return {!proto.talk_api.CreateConversationMetricRequest} returns this\n*/\nproto.talk_api.CreateConversationMetricRequest.prototype.setMetricsList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.Metric=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metric}\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.addMetrics = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Metric, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.talk_api.CreateConversationMetricRequest} returns this\n */\nproto.talk_api.CreateConversationMetricRequest.prototype.clearMetricsList = function() {\n  return this.setMetricsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.talk_api.CreateConversationMetricResponse.repeatedFields_ = [3];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n *     net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n *     JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.toObject = function(opt_includeInstance) {\n  return proto.talk_api.CreateConversationMetricResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n *     the JSPB instance for transitional soy proto support:\n *     http://goto/soy-param-migration\n * @param {!proto.talk_api.CreateConversationMetricResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.CreateConversationMetricResponse.toObject = function(includeInstance, msg) {\n  var f, obj = {\n    code: jspb.Message.getFieldWithDefault(msg, 1, 0),\n    success: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n    dataList: jspb.Message.toObjectList(msg.getDataList(),\n    common_pb.Metric.toObject, includeInstance),\n    error: (f = msg.getError()) && common_pb.Error.toObject(includeInstance, f)\n  };\n\n  if (includeInstance) {\n    obj.$jspbMessageInstance = msg;\n  }\n  return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.talk_api.CreateConversationMetricResponse}\n */\nproto.talk_api.CreateConversationMetricResponse.deserializeBinary = function(bytes) {\n  var reader = new jspb.BinaryReader(bytes);\n  var msg = new proto.talk_api.CreateConversationMetricResponse;\n  return proto.talk_api.CreateConversationMetricResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.talk_api.CreateConversationMetricResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.talk_api.CreateConversationMetricResponse}\n */\nproto.talk_api.CreateConversationMetricResponse.deserializeBinaryFromReader = function(msg, reader) {\n  while (reader.nextField()) {\n    if (reader.isEndGroup()) {\n      break;\n    }\n    var field = reader.getFieldNumber();\n    switch (field) {\n    case 1:\n      var value = /** @type {number} */ (reader.readInt32());\n      msg.setCode(value);\n      break;\n    case 2:\n      var value = /** @type {boolean} */ (reader.readBool());\n      msg.setSuccess(value);\n      break;\n    case 3:\n      var value = new common_pb.Metric;\n      reader.readMessage(value,common_pb.Metric.deserializeBinaryFromReader);\n      msg.addData(value);\n      break;\n    case 4:\n      var value = new common_pb.Error;\n      reader.readMessage(value,common_pb.Error.deserializeBinaryFromReader);\n      msg.setError(value);\n      break;\n    default:\n      reader.skipField();\n      break;\n    }\n  }\n  return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.serializeBinary = function() {\n  var writer = new jspb.BinaryWriter();\n  proto.talk_api.CreateConversationMetricResponse.serializeBinaryToWriter(this, writer);\n  return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.talk_api.CreateConversationMetricResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.talk_api.CreateConversationMetricResponse.serializeBinaryToWriter = function(message, writer) {\n  var f = undefined;\n  f = message.getCode();\n  if (f !== 0) {\n    writer.writeInt32(\n      1,\n      f\n    );\n  }\n  f = message.getSuccess();\n  if (f) {\n    writer.writeBool(\n      2,\n      f\n    );\n  }\n  f = message.getDataList();\n  if (f.length > 0) {\n    writer.writeRepeatedMessage(\n      3,\n      f,\n      common_pb.Metric.serializeBinaryToWriter\n    );\n  }\n  f = message.getError();\n  if (f != null) {\n    writer.writeMessage(\n      4,\n      f,\n      common_pb.Error.serializeBinaryToWriter\n    );\n  }\n};\n\n\n/**\n * optional int32 code = 1;\n * @return {number}\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.getCode = function() {\n  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.talk_api.CreateConversationMetricResponse} returns this\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.setCode = function(value) {\n  return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional bool success = 2;\n * @return {boolean}\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.getSuccess = function() {\n  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.talk_api.CreateConversationMetricResponse} returns this\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.setSuccess = function(value) {\n  return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * repeated Metric data = 3;\n * @return {!Array<!proto.Metric>}\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.getDataList = function() {\n  return /** @type{!Array<!proto.Metric>} */ (\n    jspb.Message.getRepeatedWrapperField(this, common_pb.Metric, 3));\n};\n\n\n/**\n * @param {!Array<!proto.Metric>} value\n * @return {!proto.talk_api.CreateConversationMetricResponse} returns this\n*/\nproto.talk_api.CreateConversationMetricResponse.prototype.setDataList = function(value) {\n  return jspb.Message.setRepeatedWrapperField(this, 3, value);\n};\n\n\n/**\n * @param {!proto.Metric=} opt_value\n * @param {number=} opt_index\n * @return {!proto.Metric}\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.addData = function(opt_value, opt_index) {\n  return jspb.Message.addToRepeatedWrapperField(this, 3, opt_value, proto.Metric, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.talk_api.CreateConversationMetricResponse} returns this\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.clearDataList = function() {\n  return this.setDataList([]);\n};\n\n\n/**\n * optional Error error = 4;\n * @return {?proto.Error}\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.getError = function() {\n  return /** @type{?proto.Error} */ (\n    jspb.Message.getWrapperField(this, common_pb.Error, 4));\n};\n\n\n/**\n * @param {?proto.Error|undefined} value\n * @return {!proto.talk_api.CreateConversationMetricResponse} returns this\n*/\nproto.talk_api.CreateConversationMetricResponse.prototype.setError = function(value) {\n  return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.talk_api.CreateConversationMetricResponse} returns this\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.clearError = function() {\n  return this.setError(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.talk_api.CreateConversationMetricResponse.prototype.hasError = function() {\n  return jspb.Message.getField(this, 4) != null;\n};\n\n\ngoog.object.extend(exports, proto.talk_api);\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\n\nexport type RapidaSource =\n  | 'web-plugin'\n  | 'debugger'\n  | 'rapida-app'\n  | 'node-sdk'\n  | 'go-sdk'\n  | 'typescript-sdk'\n  | 'java-sdk'\n  | 'php-sdk'\n  | 'rust-sdk'\n  | 'python-sdk';\n\nexport const WEB_PLUGIN_SOURCE: RapidaSource = 'web-plugin';\nexport const DEBUGGER_SOURCE: RapidaSource = 'debugger';\nexport const RAPIDA_APP_SOURCE: RapidaSource = 'rapida-app';\n\nexport const PYTHONSDK_SOURCE: RapidaSource = 'python-sdk';\nexport const NODESDK_SOURCE: RapidaSource = 'node-sdk';\nexport const GOSDK_SOURCE: RapidaSource = 'go-sdk';\nexport const TYPESCRIPTSDK_SOURCE: RapidaSource = 'typescript-sdk';\nexport const JAVASDK_SOURCE: RapidaSource = 'java-sdk';\nexport const PHPSDK_SOURCE: RapidaSource = 'php-sdk';\nexport const RUSTSDK_SOURCE: RapidaSource = 'rust-sdk';\n\n// Get returns the string value of the RapidaSource\nexport function getRapidaSourceValue(source: RapidaSource): string {\n  return source;\n}\n\n// FromStr returns the corresponding RapidaSource for a given string,\n// or 'web-plugin' if the string does not match any source.\nexport function fromStr(label: string): RapidaSource {\n  switch (label.toLowerCase()) {\n    case 'web-plugin':\n      return WEB_PLUGIN_SOURCE;\n    case 'debugger':\n      return DEBUGGER_SOURCE;\n    case 'rapida-app':\n      return RAPIDA_APP_SOURCE;\n    case 'python-sdk':\n      return PYTHONSDK_SOURCE;\n    case 'node-sdk':\n      return NODESDK_SOURCE;\n    case 'go-sdk':\n      return GOSDK_SOURCE;\n    case 'typescript-sdk':\n      return TYPESCRIPTSDK_SOURCE;\n    case 'java-sdk':\n      return JAVASDK_SOURCE;\n    case 'php-sdk':\n      return PHPSDK_SOURCE;\n    case 'rust-sdk':\n      return RUSTSDK_SOURCE;\n\n    default:\n      console.warn(\n        \"The source is not supported. Only 'web-plugin', 'debugger', 'rapida-app', and 'sdk' are allowed.\",\n      );\n      return WEB_PLUGIN_SOURCE;\n  }\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\n\nimport { Feedback } from \"./feedback\";\n\n/**\n *\n */\nexport enum MessageRole {\n  // text channel for input and output\n  System = \"system\",\n\n  // audio channel for input and output\n  User = \"user\",\n}\n\n/**\n *\n */\nexport enum MessageStatus {\n  /**\n   * Pending status for the message\n   */\n  Pending = \"pending\",\n\n  /**\n   * complete the message\n   */\n  Complete = \"complete\",\n}\n\n/**\n *\n */\nexport interface Message {\n  /**\n   * id of the message\n   */\n  id: string;\n\n  /**\n   * role of the message who had sent it\n   */\n  role: MessageRole;\n\n  /**\n   * list of sentences in the message\n   */\n  messages: string[];\n\n  /**\n   * feedback given to the message\n   */\n  feedback?: Feedback;\n\n  /**\n   *time\n   */\n  time: Date;\n\n  /**\n   *\n   */\n  status: MessageStatus;\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nexport enum Channel {\n  // text channel for input and output\n  Text = \"text\",\n\n  // audio channel for input and output\n  Audio = \"audio\",\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nexport enum ConnectionState {\n  // when connection is disconnect or at initial state\n  Disconnected = \"disconnected\",\n\n  // connected voice agent state\n  Connected = \"connected\",\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nexport enum Feedback {\n  // text channel for input and output\n  Helpful = \"helpful\",\n\n  // audio channel for input and output\n  NotHelpful = \"not_helpful\",\n\n  // other\n  Other = \"other\",\n}\n\nexport function getFeedback(input?: string): Feedback {\n  switch (input?.toLowerCase()) {\n    case \"helpful\":\n      return Feedback.Helpful;\n    case \"not helpful\":\n    case \"not_helpful\":\n      return Feedback.NotHelpful;\n    default:\n      return Feedback.Other;\n  }\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nexport const DEFAULT_DEVICE_ID = \"default\";\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nconst commonVersionIdentifier = /version\\/(\\d+(\\.?_?\\d+)+)/i;\n\nexport type DetectableBrowser =\n  | \"Chrome\"\n  | \"Firefox\"\n  | \"Safari\"\n  | \"Internet Explorer\"\n  | \"Edge\";\nexport type DetectableOS = \"iOS\" | \"macOS\";\n\nexport type BrowserDetails = {\n  name: DetectableBrowser;\n  version: string;\n  os?: DetectableOS;\n  osVersion?: string;\n};\n\nlet browserDetails: BrowserDetails | undefined;\n\n/**\n * @internal\n */\nexport function getBrowser(\n  userAgent?: string,\n  force = true\n): BrowserDetails | undefined {\n  if (typeof userAgent === \"undefined\" && typeof navigator === \"undefined\") {\n    return;\n  }\n  const ua = (userAgent ?? navigator.userAgent).toLowerCase();\n  if (browserDetails === undefined || force) {\n    const browser = browsersList.find(({ test }) => test.test(ua));\n    browserDetails = browser?.describe(ua);\n  }\n  return browserDetails;\n}\n\nconst browsersList = [\n  {\n    test: /firefox|iceweasel|fxios/i,\n    describe(ua: string) {\n      const browser: BrowserDetails = {\n        name: \"Firefox\",\n        version: getMatch(\n          /(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,\n          ua\n        ),\n        os: ua.toLowerCase().includes(\"fxios\") ? \"iOS\" : undefined,\n        osVersion: getOSVersion(ua),\n      };\n      return browser;\n    },\n  },\n  {\n    test: /chrom|crios|crmo/i,\n    describe(ua: string) {\n      const browser: BrowserDetails = {\n        name: \"Chrome\",\n        version: getMatch(\n          /(?:chrome|chromium|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,\n          ua\n        ),\n        os: ua.toLowerCase().includes(\"crios\") ? \"iOS\" : undefined,\n        osVersion: getOSVersion(ua),\n      };\n\n      return browser;\n    },\n  },\n  /* Safari */\n  {\n    test: /safari|applewebkit/i,\n    describe(ua: string) {\n      const browser: BrowserDetails = {\n        name: \"Safari\",\n        version: getMatch(commonVersionIdentifier, ua),\n        os: ua.includes(\"mobile/\") ? \"iOS\" : \"macOS\",\n        osVersion: getOSVersion(ua),\n      };\n\n      return browser;\n    },\n  },\n];\n\nfunction getMatch(exp: RegExp, ua: string, id = 1) {\n  const match = ua.match(exp);\n  return (match && match.length >= id && match[id]) || \"\";\n}\n\nfunction getOSVersion(ua: string) {\n  return ua.includes(\"mac os\")\n    ? getMatch(/\\(.+?(\\d+_\\d+(:?_\\d+)?)/, ua, 1).replace(/_/g, \".\")\n    : undefined;\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { getBrowser } from \"@/rapida/utils/rapida_client\";\nimport { RapidaEnvironment } from \"@/rapida/utils/rapida_environment\";\nimport {\n  DEBUGGER_SOURCE,\n  getRapidaSourceValue,\n  RAPIDA_APP_SOURCE,\n  RapidaSource,\n  TYPESCRIPTSDK_SOURCE,\n} from \"@/rapida/utils/rapida_source\";\nimport { Timestamp } from \"google-protobuf/google/protobuf/timestamp_pb\";\nimport moment from \"moment\";\n\nexport function isSafari(): boolean {\n  return getBrowser()?.name === \"Safari\";\n}\n\nexport function isChrome(): boolean {\n  return getBrowser()?.name === \"Chrome\";\n}\n\nexport function isFirefox(): boolean {\n  return getBrowser()?.name === \"Firefox\";\n}\n\nexport function isInternetExplorer(): boolean {\n  return getBrowser()?.name === \"Internet Explorer\";\n}\n\nexport function isEdge(): boolean {\n  return getBrowser()?.name === \"Edge\";\n}\n\nexport function isMacOs(): boolean {\n  return getBrowser()?.os === \"macOS\";\n}\n\nexport function isIOS(): boolean {\n  return getBrowser()?.os === \"iOS\";\n}\n\nexport const GetEnvironment = (): RapidaEnvironment => {\n  return process.env.NODE_ENV !== \"development\"\n    ? RapidaEnvironment.PRODUCTION\n    : RapidaEnvironment.DEVELOPMENT;\n};\n\n/**\n *\n * @returns\n */\nexport const GetSource = (): RapidaSource => {\n  const envSource = process.env.RAPIDA_SOURCE as RapidaSource;\n  if (envSource && getRapidaSourceValue(envSource)) {\n    return envSource;\n  }\n\n  return TYPESCRIPTSDK_SOURCE; // Default fallback\n};\n\n/**\n *\n * @returns\n */\nexport const isElectron = (): boolean => {\n  return window.isElectron != undefined ? window.isElectron : false;\n};\n\nexport function toDate(timestamp: Timestamp): Date {\n  // Extract seconds and nanos from gRPC Timestamp\n  const seconds = timestamp.getSeconds();\n  const nanos = timestamp.getNanos();\n\n  // Calculate milliseconds since Unix epoch\n  // const milliseconds = seconds * 1000 + Math.round(nanos / 1e6);\n\n  // // Create Moment.js object from milliseconds\n  // return moment.utc(milliseconds).toDate();\n\n  // // Extract seconds and nanos from the gRPC timestamp\n  // const { seconds, nanos } = timestamp;\n\n  // Convert seconds to milliseconds\n  const millisecondsFromSeconds = seconds * 1000;\n\n  // Convert nanos to milliseconds\n  const millisecondsFromNanos = nanos / 1000000;\n\n  // Combine the two to get the total milliseconds\n  const totalMilliseconds = millisecondsFromSeconds + millisecondsFromNanos;\n\n  // Create a new Date object using the total milliseconds (interpreted as UTC)\n  const utcDate = new Date(totalMilliseconds);\n\n  // The Date object automatically handles conversion to local time\n  return utcDate;\n}\n\nexport function toHumanReadableDate(timestamp: Timestamp): string {\n  const options = {\n    year: \"numeric\",\n    month: \"short\",\n    day: \"numeric\",\n  };\n\n  return toDate(timestamp).toLocaleDateString(\n    \"en-US\",\n    options as Intl.DateTimeFormatOptions\n  );\n}\n\nexport function toHumanReadableDateTime(timestamp: Timestamp): string {\n  return toDate(timestamp).toUTCString();\n}\n\nexport function toHumanReadableRelativeTime(timestamp: Timestamp): string {\n  return moment(toDate(timestamp).toUTCString()).fromNow();\n}\nexport function daysAgoFromTimestamp(timestamp: Timestamp): number {\n  const givenDate = moment(toDate(timestamp).toUTCString());\n  const today = moment().utc();\n  return today.diff(givenDate, \"days\");\n}\nexport function toHumanReadableRelativeDay(timestamp: Timestamp): string {\n  const daysAgo = daysAgoFromTimestamp(timestamp);\n  if (daysAgo === 0) {\n    return \"today\";\n  } else if (daysAgo === 1) {\n    return \"yesterday\";\n  } else {\n    return `${daysAgo} days ago`;\n  }\n}\n\nexport function getTimeFromDate(timestamp: Timestamp): string {\n  const hours = toDate(timestamp).getHours().toString().padStart(2, \"0\");\n  const minutes = toDate(timestamp).getMinutes().toString().padStart(2, \"0\");\n  return `${hours}:${minutes}`;\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { DEFAULT_DEVICE_ID } from \"@/rapida/constants\";\nimport { isSafari } from \"@/rapida/utils\";\n\nexport class DeviceManager {\n  private static instance?: DeviceManager;\n\n  static mediaDeviceKinds: MediaDeviceKind[] = [\"audioinput\", \"audiooutput\"];\n\n  static getInstance(): DeviceManager {\n    if (this.instance === undefined) {\n      this.instance = new DeviceManager();\n    }\n    return this.instance;\n  }\n\n  static userMediaPromiseMap: Map<MediaDeviceKind, Promise<MediaStream>> =\n    new Map();\n\n  async getDevices(\n    kind?: MediaDeviceKind,\n    requestPermissions: boolean = true\n  ): Promise<MediaDeviceInfo[]> {\n    if (DeviceManager.userMediaPromiseMap?.size > 0) {\n      console.debug(\"awaiting getUserMedia promise\");\n      try {\n        if (kind) {\n          await DeviceManager.userMediaPromiseMap.get(kind);\n        } else {\n          await Promise.all(DeviceManager.userMediaPromiseMap.values());\n        }\n      } catch (e: any) {\n        console.warn(\"error waiting for media permissons\");\n      }\n    }\n    let devices = await navigator.mediaDevices.enumerateDevices();\n\n    if (\n      requestPermissions &&\n      // for safari we need to skip this check, as otherwise it will re-acquire user media and fail on iOS https://bugs.webkit.org/show_bug.cgi?id=179363\n      !(isSafari() && this.hasDeviceInUse(kind))\n    ) {\n      const isDummyDeviceOrEmpty =\n        devices.filter((d) => d.kind === kind).length === 0 ||\n        devices.some((device) => {\n          const noLabel = device.label === \"\";\n          const isRelevant = kind ? device.kind === kind : true;\n          return noLabel && isRelevant;\n        });\n\n      if (isDummyDeviceOrEmpty) {\n        const permissionsToAcquire = {\n          video: kind !== \"audioinput\" && kind !== \"audiooutput\",\n        };\n        const stream = await navigator.mediaDevices.getUserMedia(\n          permissionsToAcquire\n        );\n        devices = await navigator.mediaDevices.enumerateDevices();\n        stream.getTracks().forEach((track) => {\n          track.stop();\n        });\n      }\n    }\n    if (kind) {\n      devices = devices.filter((device) => device.kind === kind);\n    }\n\n    return devices;\n  }\n\n  async normalizeDeviceId(\n    kind: MediaDeviceKind,\n    deviceId?: string,\n    groupId?: string\n  ): Promise<string | undefined> {\n    if (deviceId !== DEFAULT_DEVICE_ID) {\n      return deviceId;\n    }\n\n    // resolve actual device id if it's 'default': Chrome returns it when no\n    // device has been chosen\n    const devices = await this.getDevices(kind);\n\n    const defaultDevice = devices.find((d) => d.deviceId === DEFAULT_DEVICE_ID);\n\n    if (!defaultDevice) {\n      console.warn(\"could not reliably determine default device\");\n      return undefined;\n    }\n\n    const device = devices.find(\n      (d) =>\n        d.deviceId !== DEFAULT_DEVICE_ID &&\n        d.groupId === (groupId ?? defaultDevice.groupId)\n    );\n\n    if (!device) {\n      console.warn(\"could not reliably determine default device\");\n      return undefined;\n    }\n\n    return device?.deviceId;\n  }\n\n  private hasDeviceInUse(kind?: MediaDeviceKind): boolean {\n    return kind\n      ? DeviceManager.userMediaPromiseMap.has(kind)\n      : DeviceManager.userMediaPromiseMap.size > 0;\n  }\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { DeviceManager } from \"@/rapida/devices/device-manager\";\nimport { DEFAULT_DEVICE_ID } from \"@/rapida/constants\";\nimport { AssistantMessagingResponse } from \"@/rapida/clients/protos/talk-api_pb\";\nimport { AgentEvent } from \"@/rapida/events/agent-event\";\nimport { AgentServerEvent } from \"@/rapida/events/agent-server-event\";\nimport { Content } from \"@/rapida/clients/protos/common_pb\";\nimport {\n  toStreamAudioContent,\n  toTextContent,\n} from \"@/rapida/utils/rapida_content\";\nimport { WavRecorder, WavStreamPlayer } from \"@/rapida/wavtools/index.js\";\nimport { getStringFromProtoStruct } from \"@/rapida/utils/rapida_metadata\";\nimport { toDate } from \"@/rapida/utils\";\nimport { MessageRole, MessageStatus } from \"@/rapida/agents/message\";\nimport { Channel } from \"@/rapida/channels\";\nimport { AgentConfig } from \"@/rapida/agents/agent-config\";\nimport { ConnectionConfig } from \"@/rapida/connections/connection-config\";\nimport { Agent } from \"@/rapida/agents/\";\n\nexport class VoiceAgent extends Agent {\n  // input channel for in\n  // as the api takes bytes of array can have text byte ot audio byte\n  /**\n   * input media device id\n   */\n  inputChannel: Channel = Channel.Audio;\n  private audioInputPaused: boolean = true;\n  private inputDeviceId: string = DEFAULT_DEVICE_ID;\n  get inputMediaDevice(): string {\n    return this.inputDeviceId;\n  }\n\n  private audioRecorder: WavRecorder;\n  get recorder() {\n    return this.audioRecorder;\n  }\n\n  /**\n   * output media device id\n   */\n  // changing the channel if you want to control the output to text or audio\n  private outputChannel: Channel = Channel.Audio;\n\n  // later will impliment mute speaker\n  private audioOutputPaused: boolean = true;\n  private outputDeviceId: string = DEFAULT_DEVICE_ID;\n  get outputMediaDevice(): string {\n    return this.outputDeviceId;\n  }\n\n  // player one is audio player another is recorder\n  private audioPlayer: WavStreamPlayer;\n  get player() {\n    return this.audioPlayer;\n  }\n\n  /**\n   * Creates a new Room, the primary construct for a LiveKit session.\n   * @param options\n   */\n  constructor(connection: ConnectionConfig, agentConfig: AgentConfig) {\n    super(connection, agentConfig);\n    // still work in progress\n    this.outputChannel = this.agentConfig.outputOptions.defaultChannel;\n    this.inputChannel = this.agentConfig.inputOptions.defaultChannel;\n\n    //\n    this.audioPlayer = new WavStreamPlayer(\n      this.agentConfig.outputOptions.playerOption\n    );\n    this.audioRecorder = new WavRecorder(\n      this.agentConfig.inputOptions.recorderOption\n    );\n  }\n\n  async disconnect() {\n    await this.disconnectAgent();\n\n    if (this.inputChannel == Channel.Audio) {\n      await this.stopRecording();\n    }\n  }\n\n  connect = async () => {\n    try {\n      await this.connectAgent();\n      const devices = await this.audioRecorder.listDevices();\n      if (devices.length === 0) {\n        return;\n      }\n      this.inputDeviceId = devices[0].deviceId;\n      this.outputDeviceId = devices[0].deviceId;\n\n      if (this.inputChannel == Channel.Audio) {\n        // start recording\n        await this.startRecording(true);\n      }\n    } catch (err) {\n      console.error(\"error while connect \" + err);\n    }\n  };\n\n  /**\n   *\n   *  Audio recording stop and start function controlling jus when audio will start and stop\n   *  doesn't mean connect\n   * start the reocrding for audio recorder\n   * @param clear\n   */\n  private startRecording = async (clear: boolean) => {\n    if ((await this.audioRecorder.getStatus()) != \"recording\") {\n      await this.audioRecorder.begin(this.inputDeviceId);\n    }\n    if (clear) {\n      await this.audioRecorder.clear();\n    }\n    //\n    await this.audioPlayer.connect();\n    //\n    await this.audioRecorder.record(async (data) => {\n      await this.onSendAudio(data.mono);\n    });\n  };\n\n  private stopRecording = async () => {\n    try {\n      if ((await this.audioRecorder.getStatus()) != \"recording\") {\n        return;\n      }\n      //\n      await this.audioPlayer.interrupt();\n      //\n      await this.audioRecorder.clear();\n      await this.audioRecorder.end();\n    } catch (err) {\n      console.error(\"error while stoping the recording \" + err);\n    }\n  };\n\n  /**\n   *\n   * @param text\n   */\n  onSendText = async (text: string) => {\n    if (!this.isConnected) await this.connect();\n    if (this.inputChannel == Channel.Text) {\n      // only send text when you know the channel is text\n      this.talkingConnection?.write(\n        this.createAssistantRequest(\"user\", [toTextContent(text)])\n      );\n    }\n  };\n  /**\n   *\n   * @param mono\n   */\n  private onSendAudio = async (mono: Int16Array) => {\n    if (this.inputChannel == Channel.Audio)\n      // only send the audio when you know it's audio\n      this.talkingConnection?.write(\n        this.createAssistantRequest(\"user\", [\n          this.createAudioMessage(this.arrayBufferToUint8(mono)),\n        ])\n      );\n  };\n\n  private createAudioMessage(mono: Uint8Array): Content {\n    return toStreamAudioContent(mono);\n  }\n\n  base64ToArrayBuffer(base64) {\n    const binaryString = atob(base64);\n    const len = binaryString.length;\n    const bytes = new Uint8Array(len);\n    for (let i = 0; i < len; i++) {\n      bytes[i] = binaryString.charCodeAt(i);\n    }\n    return bytes.buffer;\n  }\n\n  /**\n   *\n   * @param float32Array\n   * @returns\n   */\n  floatTo16BitPCM(float32Array) {\n    const buffer = new ArrayBuffer(float32Array.length * 2);\n    const view = new DataView(buffer);\n    let offset = 0;\n    for (let i = 0; i < float32Array.length; i++, offset += 2) {\n      let s = Math.max(-1, Math.min(1, float32Array[i]));\n      view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n    }\n    return buffer;\n  }\n\n  /**\n   * Converts an ArrayBuffer, Int16Array or Float32Array to a base64 string\n   * @param {ArrayBuffer|Int16Array|Float32Array} arrayBuffer\n   * @returns {string}\n   */\n  private arrayBufferToUint8(arrayBuffer) {\n    if (arrayBuffer instanceof Float32Array) {\n      arrayBuffer = this.floatTo16BitPCM(arrayBuffer);\n    } else if (arrayBuffer instanceof Int16Array) {\n      arrayBuffer = arrayBuffer.buffer;\n    }\n    return new Uint8Array(arrayBuffer);\n  }\n\n  /**\n   * Getting  all the list of deviceid\n   * @param kind\n   * @param requestPermissions\n   * @returns\n   */\n  static getLocalDevices(\n    kind?: MediaDeviceKind,\n    requestPermissions: boolean = true\n  ): Promise<MediaDeviceInfo[]> {\n    return DeviceManager.getInstance().getDevices(kind, requestPermissions);\n  }\n\n  /**\n   *  changing the deviceid\n   * @param deviceId the device id\n   */\n  public setOutputMediaDevice = async (deviceId: string) => {\n    if (this.outputDeviceId === deviceId) {\n      return;\n    }\n    this.outputDeviceId = deviceId;\n    this.emit(AgentEvent.OutputMediaDeviceChanged, deviceId);\n  };\n\n  /**\n   *  Changing media device id\n   * @param deviceId\n   * @returns\n   */\n  public setInputMediaDevice = async (deviceId: string) => {\n    if (this.inputDeviceId === deviceId) {\n      return;\n    }\n    this.inputDeviceId = deviceId;\n    this.emit(AgentEvent.InputMediaDeviceChanged, deviceId);\n  };\n\n  /**\n   *\n   * @param input\n   * @returns\n   */\n  setInputChannel = async (input: Channel) => {\n    if (this.inputChannel == input) {\n      return;\n    }\n    if (input == Channel.Audio) {\n      await this.startRecording(true);\n    } else {\n      await this.stopRecording();\n    }\n\n    this.inputChannel = input;\n    this.emit(AgentEvent.InputChannelSwitch, this.inputChannel);\n  };\n\n  /**\n   *\n   * @param output\n   * @returns\n   */\n  setOutputChannel(output: Channel) {\n    if (this.outputChannel == output) {\n      return;\n    }\n    this.outputChannel = output;\n    this.emit(AgentEvent.OutputChannelSwitch, this.outputChannel);\n  }\n\n  /**\n   * Input for the voice agent\n   * to check if audio in or text in\n   */\n  toggelAudioInput = async () => {\n    if (this.audioInputPaused) {\n      this.audioInputPaused = false;\n      if (this.audioRecorder && this.audioRecorder.getStatus() === \"paused\") {\n        await this.startRecording(false);\n      }\n      this.emit(AgentEvent.AudioInputMuteToggle, this.audioInputPaused);\n      return;\n    }\n    this.audioInputPaused = true;\n    await this.audioRecorder.pause();\n    this.emit(AgentEvent.AudioInputMuteToggle, this.audioInputPaused);\n  };\n\n  get isAudioInput(): boolean {\n    return this.inputChannel == Channel.Audio;\n  }\n\n  get isAudioInputEnable(): boolean {\n    return this.isConnected && this.isAudioInput && !this.audioInputPaused;\n  }\n\n  /**\n   * if text channel enable\n   */\n  get isTextInput(): boolean {\n    return this.inputChannel == Channel.Text;\n  }\n\n  /**\n   * output for voice agent\n   */\n  toggelAudioOutput = async () => {\n    if (this.audioOutputPaused) {\n      this.audioOutputPaused = false;\n      this.emit(AgentEvent.AudioOutputMuteToggle, this.audioOutputPaused);\n      return;\n    }\n    this.audioOutputPaused = true;\n    await this.audioPlayer.interrupt();\n    await this.emit(AgentEvent.AudioOutputMuteToggle, this.audioOutputPaused);\n  };\n\n  /**\n   * if ouput audio is enabled\n   */\n  get isAudioOutput(): boolean {\n    return this.outputChannel == Channel.Audio;\n  }\n\n  get isAudioOutputEnable(): boolean {\n    return this.isConnected && this.isAudioOutput && !this.audioOutputPaused;\n  }\n\n  get isTextOutput(): boolean {\n    return this.outputChannel == Channel.Text;\n  }\n\n  override onRecieve = async (response: AssistantMessagingResponse) => {\n    switch (response.getDataCase()) {\n      case AssistantMessagingResponse.DataCase.DATA_NOT_SET:\n        break;\n      case AssistantMessagingResponse.DataCase.EVENT:\n        if (response.getEvent()) {\n          switch (response.getEvent()?.getName()) {\n            case AgentServerEvent.Transcript:\n              const agentTranscript = getStringFromProtoStruct(\n                response.getEvent()?.getMeta(),\n                \"text\"\n              );\n              if (agentTranscript) {\n                this.agentTranscript = agentTranscript;\n                if (this.agentMessages.length > 0) {\n                  const lastMessage =\n                    this.agentMessages[this.agentMessages.length - 1];\n                  if (lastMessage.role === MessageRole.User) {\n                    this.agentMessages.pop();\n                  }\n                }\n                this.agentMessages.push({\n                  id: \"unknown-message\",\n                  role: MessageRole.User,\n                  messages: [agentTranscript],\n                  time: toDate(response.getEvent()?.getTime()),\n                  status: MessageStatus.Pending,\n                });\n              }\n              this.emit(\n                AgentEvent.ServerEvent,\n                AgentServerEvent.Transcript,\n                response.getEvent()!\n              );\n              break;\n            case AgentServerEvent.Interruption:\n              this.agentTranscript = \"\";\n              await this.audioPlayer.interrupt();\n              this.emit(\n                AgentEvent.ServerEvent,\n                AgentServerEvent.Interruption,\n                response.getEvent()!\n              );\n              break;\n\n            case AgentServerEvent.CompleteConversation:\n              this.emit(\n                AgentEvent.ServerEvent,\n                AgentServerEvent.CompleteConversation,\n                response.getEvent()!\n              );\n              await this.disconnect();\n              break;\n            case AgentServerEvent.Complete:\n              this.emit(\n                AgentEvent.ServerEvent,\n                AgentServerEvent.Complete,\n                response.getEvent()!\n              );\n              break;\n            case AgentServerEvent.CompleteGeneration:\n            case AgentServerEvent.Generation:\n              // generation started mark the previous message of user to complete\n              if (this.agentMessages.length > 0) {\n                const lastMessage =\n                  this.agentMessages[this.agentMessages.length - 1];\n                if (lastMessage.role === MessageRole.User) {\n                  lastMessage.status = MessageStatus.Complete;\n                }\n              }\n              //\n              const msgid = getStringFromProtoStruct(\n                response.getEvent()?.getMeta(),\n                \"messageid\"\n              );\n              const agentMessage = getStringFromProtoStruct(\n                response.getEvent()?.getMeta(),\n                \"text\"\n              );\n              if (agentMessage) {\n                this.agentMessages = this.agentMessages.filter(\n                  (msg) => msg.id !== msgid || msg.role !== MessageRole.System\n                );\n                this.agentMessages.push({\n                  id: msgid!,\n                  role: MessageRole.System,\n                  messages: [agentMessage],\n                  time: toDate(response.getEvent()?.getTime()),\n                  status:\n                    response.getEvent()?.getName() ==\n                    AgentServerEvent.CompleteGeneration\n                      ? MessageStatus.Complete\n                      : MessageStatus.Pending,\n                });\n              }\n              this.emit(\n                AgentEvent.ServerEvent,\n                response.getEvent()?.getName() ==\n                  AgentServerEvent.CompleteGeneration\n                  ? AgentServerEvent.CompleteGeneration\n                  : AgentServerEvent.Generation,\n                response.getEvent()!\n              );\n              break;\n            case AgentServerEvent.Start:\n              //\n              if (this.agentMessages.length > 0) {\n                const lastMessage =\n                  this.agentMessages[this.agentMessages.length - 1];\n                if (lastMessage && lastMessage.role === MessageRole.User) {\n                  this.agentMessages.pop();\n                }\n              }\n\n              const userMessage = getStringFromProtoStruct(\n                response.getEvent()?.getMeta(),\n                \"text\"\n              );\n              const messageid = getStringFromProtoStruct(\n                response.getEvent()?.getMeta(),\n                \"messageid\"\n              );\n              if (userMessage) {\n                this.agentMessages = this.agentMessages.filter(\n                  (msg) => msg.id !== messageid || msg.role !== MessageRole.User\n                );\n                this.agentMessages.push({\n                  id: messageid!,\n                  role: MessageRole.User,\n                  messages: [userMessage],\n                  time: toDate(response.getEvent()?.getTime()),\n                  status: MessageStatus.Complete,\n                });\n              }\n              this.emit(\n                AgentEvent.ServerEvent,\n                AgentServerEvent.Start,\n                response.getEvent()!\n              );\n              break;\n          }\n          this.agentEvents.push(response.getEvent()!);\n        }\n        return;\n      case AssistantMessagingResponse.DataCase.MESSAGE:\n        const conversation = response.getMessage();\n        if (\n          !conversation?.getAssistantconversationid() ||\n          !conversation?.getMessageid()\n        )\n          return;\n        this.onChangeConversation(conversation?.getAssistantconversationid());\n        const responseContent =\n          conversation.getResponse()?.getContentsList() || [];\n        for (const content of responseContent) {\n          if (content.getContenttype() === \"audio\") {\n            const audioData = content.getContent_asU8();\n            this.audioPlayer.add16BitPCM(\n              new Uint8Array(audioData).buffer,\n              conversation?.getMessageid()\n            );\n          }\n        }\n        break;\n      default:\n        break;\n    }\n  };\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { Content } from \"@/rapida/clients/protos/common_pb\";\n\nexport enum ResponseContentType {\n  TEXT_CONTENT = \"text\",\n  AUDIO_CONTENT = \"audio\",\n  IMAGE_CONTENT = \"image\",\n  MULTI_MEDIA_CONTENT = \"multi\",\n}\n\n// Get returns the string value of the RapidaEnvironment\nexport function getResponseContentType(env: ResponseContentType): string {\n  return env;\n}\n\n// FromStr returns the corresponding RapidaEnvironment for a given string,\n// or DEVELOPMENT if the string does not match any environment.\nexport function fromStr(label: string): ResponseContentType {\n  switch (label.toLowerCase()) {\n    case ResponseContentType.TEXT_CONTENT:\n      return ResponseContentType.TEXT_CONTENT;\n    case ResponseContentType.AUDIO_CONTENT:\n      return ResponseContentType.AUDIO_CONTENT;\n    case ResponseContentType.IMAGE_CONTENT:\n      return ResponseContentType.IMAGE_CONTENT;\n    case ResponseContentType.MULTI_MEDIA_CONTENT:\n      return ResponseContentType.MULTI_MEDIA_CONTENT;\n    default:\n      console.warn(\n        \"The content type is not supported. Only text, audio, image, multi\"\n      );\n      return ResponseContentType.TEXT_CONTENT;\n  }\n}\n\ntype ResponseContentFormat = \"raw\" | \"word\" | \"url\" | \"chunk\";\n\nexport const TEXT_CONTENT_FORMAT_RAW: ResponseContentFormat = \"raw\";\nexport const TEXT_CONTENT_FORMAT_WORD: ResponseContentFormat = \"word\";\n\nexport const AUDIO_CONTENT_FORMAT_RAW: ResponseContentFormat = \"raw\";\nexport const AUDIO_CONTENT_FORMAT_CHUNK: ResponseContentFormat = \"chunk\";\nexport const AUDIO_CONTENT_FORMAT_URL: ResponseContentFormat = \"url\";\n\nexport const IMAGE_CONTENT_FORMAT_RAW: ResponseContentFormat = \"raw\";\nexport const IMAGE_CONTENT_FORMAT_URL: ResponseContentFormat = \"url\";\n\nexport const MULTI_MEDIA_CONTENT_FORMAT_RAW: ResponseContentFormat = \"raw\";\nexport const MULTI_MEDIA_CONTENT_FORMAT_URL: ResponseContentFormat = \"url\";\n\n/**\n *\n * @param str\n * @returns\n */\nexport const toTextContent = (str: string, format?: ResponseContentFormat) => {\n  const cnt = new Content();\n  if (format) cnt.setContentformat(format);\n  else cnt.setContentformat(TEXT_CONTENT_FORMAT_RAW);\n  cnt.setContenttype(ResponseContentType.TEXT_CONTENT);\n  cnt.setContent(new TextEncoder().encode(str));\n  return cnt;\n};\n\nexport const toStreamAudioContent = (raw: Uint8Array | string): Content => {\n  const cnt = new Content();\n  cnt.setContentformat(AUDIO_CONTENT_FORMAT_CHUNK);\n  cnt.setContenttype(ResponseContentType.AUDIO_CONTENT);\n  cnt.setContent(raw);\n  return cnt;\n};\n\nexport const toContentText = (cnt?: Content[]): string => {\n  let text = \"\";\n  if (!cnt) return text;\n  cnt\n    .filter((x) => x.getContenttype() === \"text\")\n    .forEach((x) => {\n      try {\n        const contentText = new TextDecoder().decode(\n          x.getContent() as Uint8Array\n        );\n        text += contentText; // Append the decoded text to the `text` variable\n      } catch (error) {}\n    });\n  return text;\n};\n","/**\n * Raw wav audio file contents\n * @typedef {Object} WavPackerAudioType\n * @property {Blob} blob\n * @property {string} url\n * @property {number} channelCount\n * @property {number} sampleRate\n * @property {number} duration\n */\n\n/**\n * Utility class for assembling PCM16 \"audio/wav\" data\n * @class\n */\nexport class WavPacker {\n  /**\n   * Converts Float32Array of amplitude data to ArrayBuffer in Int16Array format\n   * @param {Float32Array} float32Array\n   * @returns {ArrayBuffer}\n   */\n  static floatTo16BitPCM(float32Array) {\n    const buffer = new ArrayBuffer(float32Array.length * 2);\n    const view = new DataView(buffer);\n    let offset = 0;\n    for (let i = 0; i < float32Array.length; i++, offset += 2) {\n      let s = Math.max(-1, Math.min(1, float32Array[i]));\n      view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n    }\n    return buffer;\n  }\n\n  /**\n   * Concatenates two ArrayBuffers\n   * @param {ArrayBuffer} leftBuffer\n   * @param {ArrayBuffer} rightBuffer\n   * @returns {ArrayBuffer}\n   */\n  static mergeBuffers(leftBuffer, rightBuffer) {\n    const tmpArray = new Uint8Array(\n      leftBuffer.byteLength + rightBuffer.byteLength,\n    );\n    tmpArray.set(new Uint8Array(leftBuffer), 0);\n    tmpArray.set(new Uint8Array(rightBuffer), leftBuffer.byteLength);\n    return tmpArray.buffer;\n  }\n\n  /**\n   * Packs data into an Int16 format\n   * @private\n   * @param {number} size 0 = 1x Int16, 1 = 2x Int16\n   * @param {number} arg value to pack\n   * @returns\n   */\n  _packData(size, arg) {\n    return [\n      new Uint8Array([arg, arg >> 8]),\n      new Uint8Array([arg, arg >> 8, arg >> 16, arg >> 24]),\n    ][size];\n  }\n\n  /**\n   * Packs audio into \"audio/wav\" Blob\n   * @param {number} sampleRate\n   * @param {{bitsPerSample: number, channels: Array<Float32Array>, data: Int16Array}} audio\n   * @returns {WavPackerAudioType}\n   */\n  pack(sampleRate, audio) {\n    if (!audio?.bitsPerSample) {\n      throw new Error(`Missing \"bitsPerSample\"`);\n    } else if (!audio?.channels) {\n      throw new Error(`Missing \"channels\"`);\n    } else if (!audio?.data) {\n      throw new Error(`Missing \"data\"`);\n    }\n    const { bitsPerSample, channels, data } = audio;\n    const output = [\n      // Header\n      'RIFF',\n      this._packData(\n        1,\n        4 + (8 + 24) /* chunk 1 length */ + (8 + 8) /* chunk 2 length */,\n      ), // Length\n      'WAVE',\n      // chunk 1\n      'fmt ', // Sub-chunk identifier\n      this._packData(1, 16), // Chunk length\n      this._packData(0, 1), // Audio format (1 is linear quantization)\n      this._packData(0, channels.length),\n      this._packData(1, sampleRate),\n      this._packData(1, (sampleRate * channels.length * bitsPerSample) / 8), // Byte rate\n      this._packData(0, (channels.length * bitsPerSample) / 8),\n      this._packData(0, bitsPerSample),\n      // chunk 2\n      'data', // Sub-chunk identifier\n      this._packData(\n        1,\n        (channels[0].length * channels.length * bitsPerSample) / 8,\n      ), // Chunk length\n      data,\n    ];\n    const blob = new Blob(output, { type: 'audio/mpeg' });\n    const url = URL.createObjectURL(blob);\n    return {\n      blob,\n      url,\n      channelCount: channels.length,\n      sampleRate,\n      duration: data.byteLength / (channels.length * sampleRate * 2),\n    };\n  }\n}\n// eslint-disable-next-line no-undef\nglobalThis.WavPacker = WavPacker;\n","/**\n * Constants for help with visualization\n * Helps map frequency ranges from Fast Fourier Transform\n * to human-interpretable ranges, notably music ranges and\n * human vocal ranges.\n */\n\n// Eighth octave frequencies\nconst octave8Frequencies = [\n  4186.01, 4434.92, 4698.63, 4978.03, 5274.04, 5587.65, 5919.91, 6271.93,\n  6644.88, 7040.0, 7458.62, 7902.13,\n];\n\n// Labels for each of the above frequencies\nconst octave8FrequencyLabels = [\n  'C',\n  'C#',\n  'D',\n  'D#',\n  'E',\n  'F',\n  'F#',\n  'G',\n  'G#',\n  'A',\n  'A#',\n  'B',\n];\n\n/**\n * All note frequencies from 1st to 8th octave\n * in format \"A#8\" (A#, 8th octave)\n */\nexport const noteFrequencies = [];\nexport const noteFrequencyLabels = [];\nfor (let i = 1; i <= 8; i++) {\n  for (let f = 0; f < octave8Frequencies.length; f++) {\n    const freq = octave8Frequencies[f];\n    noteFrequencies.push(freq / Math.pow(2, 8 - i));\n    noteFrequencyLabels.push(octave8FrequencyLabels[f] + i);\n  }\n}\n\n/**\n * Subset of the note frequencies between 32 and 2000 Hz\n * 6 octave range: C1 to B6\n */\nconst voiceFrequencyRange = [32.0, 2000.0];\nexport const voiceFrequencies = noteFrequencies.filter((_, i) => {\n  return (\n    noteFrequencies[i] > voiceFrequencyRange[0] &&\n    noteFrequencies[i] < voiceFrequencyRange[1]\n  );\n});\nexport const voiceFrequencyLabels = noteFrequencyLabels.filter((_, i) => {\n  return (\n    noteFrequencies[i] > voiceFrequencyRange[0] &&\n    noteFrequencies[i] < voiceFrequencyRange[1]\n  );\n});\n","import {\n  noteFrequencies,\n  noteFrequencyLabels,\n  voiceFrequencies,\n  voiceFrequencyLabels,\n} from \"./constants.js\";\n\n/**\n * Output of AudioAnalysis for the frequency domain of the audio\n * @typedef {Object} AudioAnalysisOutputType\n * @property {Float32Array} values Amplitude of this frequency between {0, 1} inclusive\n * @property {number[]} frequencies Raw frequency bucket values\n * @property {string[]} labels Labels for the frequency bucket values\n */\n\n/**\n * Analyzes audio for visual output\n * @class\n */\nexport class AudioAnalysis {\n  /**\n   * Retrieves frequency domain data from an AnalyserNode adjusted to a decibel range\n   * returns human-readable formatting and labels\n   * @param {AnalyserNode} analyser\n   * @param {number} sampleRate\n   * @param {Float32Array} [fftResult]\n   * @param {\"frequency\"|\"music\"|\"voice\"} [analysisType]\n   * @param {number} [minDecibels] default -100\n   * @param {number} [maxDecibels] default -30\n   * @returns {AudioAnalysisOutputType}\n   */\n  static getFrequencies(\n    analyser,\n    sampleRate,\n    fftResult,\n    analysisType = \"frequency\",\n    minDecibels = -100,\n    maxDecibels = -30\n  ) {\n    if (!fftResult) {\n      fftResult = new Float32Array(analyser.frequencyBinCount);\n      analyser.getFloatFrequencyData(fftResult);\n    }\n    const nyquistFrequency = sampleRate / 2;\n    const frequencyStep = (1 / fftResult.length) * nyquistFrequency;\n    let outputValues;\n    let frequencies;\n    let labels;\n    if (analysisType === \"music\" || analysisType === \"voice\") {\n      const useFrequencies =\n        analysisType === \"voice\" ? voiceFrequencies : noteFrequencies;\n      const aggregateOutput = Array(useFrequencies.length).fill(minDecibels);\n      for (let i = 0; i < fftResult.length; i++) {\n        const frequency = i * frequencyStep;\n        const amplitude = fftResult[i];\n        for (let n = useFrequencies.length - 1; n >= 0; n--) {\n          if (frequency > useFrequencies[n]) {\n            aggregateOutput[n] = Math.max(aggregateOutput[n], amplitude);\n            break;\n          }\n        }\n      }\n      outputValues = aggregateOutput;\n      frequencies =\n        analysisType === \"voice\" ? voiceFrequencies : noteFrequencies;\n      labels =\n        analysisType === \"voice\" ? voiceFrequencyLabels : noteFrequencyLabels;\n    } else {\n      outputValues = Array.from(fftResult);\n      frequencies = outputValues.map((_, i) => frequencyStep * i);\n      labels = frequencies.map((f) => `${f.toFixed(2)} Hz`);\n    }\n    // We normalize to {0, 1}\n    const normalizedOutput = outputValues.map((v) => {\n      return Math.max(\n        0,\n        Math.min((v - minDecibels) / (maxDecibels - minDecibels), 1)\n      );\n    });\n    const values = new Float32Array(normalizedOutput);\n    return {\n      values,\n      frequencies,\n      labels,\n    };\n  }\n\n  /**\n   * Creates a new AudioAnalysis instance for an HTMLAudioElement\n   * @param {HTMLAudioElement} audioElement\n   * @param {AudioBuffer|null} [audioBuffer] If provided, will cache all frequency domain data from the buffer\n   * @returns {AudioAnalysis}\n   */\n  constructor(audioElement, audioBuffer = null) {\n    this.fftResults = [];\n    if (audioBuffer) {\n      /**\n       * Modified from\n       * https://stackoverflow.com/questions/75063715/using-the-web-audio-api-to-analyze-a-song-without-playing\n       *\n       * We do this to populate FFT values for the audio if provided an `audioBuffer`\n       * The reason to do this is that Safari fails when using `createMediaElementSource`\n       * This has a non-zero RAM cost so we only opt-in to run it on Safari, Chrome is better\n       */\n      const { length, sampleRate } = audioBuffer;\n      const offlineAudioContext = new OfflineAudioContext({\n        length,\n        sampleRate,\n      });\n      const source = offlineAudioContext.createBufferSource();\n      source.buffer = audioBuffer;\n      const analyser = offlineAudioContext.createAnalyser();\n      analyser.fftSize = 8192;\n      analyser.smoothingTimeConstant = 0.1;\n      source.connect(analyser);\n      // limit is :: 128 / sampleRate;\n      // but we just want 60fps - cuts ~1s from 6MB to 1MB of RAM\n      const renderQuantumInSeconds = 1 / 60;\n      const durationInSeconds = length / sampleRate;\n      const analyze = (index) => {\n        const suspendTime = renderQuantumInSeconds * index;\n        if (suspendTime < durationInSeconds) {\n          offlineAudioContext.suspend(suspendTime).then(() => {\n            const fftResult = new Float32Array(analyser.frequencyBinCount);\n            analyser.getFloatFrequencyData(fftResult);\n            this.fftResults.push(fftResult);\n            analyze(index + 1);\n          });\n        }\n        if (index === 1) {\n          offlineAudioContext.startRendering();\n        } else {\n          offlineAudioContext.resume();\n        }\n      };\n      source.start(0);\n      analyze(1);\n      this.audio = audioElement;\n      this.context = offlineAudioContext;\n      this.analyser = analyser;\n      this.sampleRate = sampleRate;\n      this.audioBuffer = audioBuffer;\n    } else {\n      const audioContext = new AudioContext();\n      const track = audioContext.createMediaElementSource(audioElement);\n      const analyser = audioContext.createAnalyser();\n      analyser.fftSize = 8192;\n      analyser.smoothingTimeConstant = 0.1;\n      track.connect(analyser);\n      analyser.connect(audioContext.destination);\n      this.audio = audioElement;\n      this.context = audioContext;\n      this.analyser = analyser;\n      this.sampleRate = this.context.sampleRate;\n      this.audioBuffer = null;\n    }\n  }\n\n  /**\n   * Gets the current frequency domain data from the playing audio track\n   * @param {\"frequency\"|\"music\"|\"voice\"} [analysisType]\n   * @param {number} [minDecibels] default -100\n   * @param {number} [maxDecibels] default -30\n   * @returns {AudioAnalysisOutputType}\n   */\n  getFrequencies(\n    analysisType = \"frequency\",\n    minDecibels = -100,\n    maxDecibels = -30\n  ) {\n    let fftResult = null;\n    if (this.audioBuffer && this.fftResults.length) {\n      const pct = this.audio.currentTime / this.audio.duration;\n      const index = Math.min(\n        (pct * this.fftResults.length) | 0,\n        this.fftResults.length - 1\n      );\n      fftResult = this.fftResults[index];\n    }\n    return AudioAnalysis.getFrequencies(\n      this.analyser,\n      this.sampleRate,\n      fftResult,\n      analysisType,\n      minDecibels,\n      maxDecibels\n    );\n  }\n\n  /**\n   * Resume the internal AudioContext if it was suspended due to the lack of\n   * user interaction when the AudioAnalysis was instantiated.\n   * @returns {Promise<true>}\n   */\n  async resumeIfSuspended() {\n    if (this.context.state === \"suspended\") {\n      await this.context.resume();\n    }\n    return true;\n  }\n}\n// eslint-disable-next-line no-undef\nglobalThis.AudioAnalysis = AudioAnalysis;\n","export const StreamProcessorWorklet = `\nclass StreamProcessor extends AudioWorkletProcessor {\n  constructor() {\n    super();\n    this.hasStarted = false;\n    this.hasInterrupted = false;\n    this.outputBuffers = [];\n    this.bufferLength = 128;\n    this.write = { buffer: new Float32Array(this.bufferLength), trackId: null };\n    this.writeOffset = 0;\n    this.trackSampleOffsets = {};\n    this.port.onmessage = (event) => {\n      if (event.data) {\n        const payload = event.data;\n        if (payload.event === 'write') {\n          const int16Array = payload.buffer;\n          const float32Array = new Float32Array(int16Array.length);\n          for (let i = 0; i < int16Array.length; i++) {\n            float32Array[i] = int16Array[i] / 0x8000; // Convert Int16 to Float32\n          }\n          this.writeData(float32Array, payload.trackId);\n        } else if (\n          payload.event === 'offset' ||\n          payload.event === 'interrupt'\n        ) {\n          const requestId = payload.requestId;\n          const trackId = this.write.trackId;\n          const offset = this.trackSampleOffsets[trackId] || 0;\n          this.port.postMessage({\n            event: 'offset',\n            requestId,\n            trackId,\n            offset,\n          });\n          if (payload.event === 'interrupt') {\n            this.hasInterrupted = true;\n          }\n        } else {\n          throw new Error(\\`Unhandled event \"\\${payload.event}\"\\`);\n        }\n      }\n    };\n  }\n\n  writeData(float32Array, trackId = null) {\n    let { buffer } = this.write;\n    let offset = this.writeOffset;\n    for (let i = 0; i < float32Array.length; i++) {\n      buffer[offset++] = float32Array[i];\n      if (offset >= buffer.length) {\n        this.outputBuffers.push(this.write);\n        this.write = { buffer: new Float32Array(this.bufferLength), trackId };\n        buffer = this.write.buffer;\n        offset = 0;\n      }\n    }\n    this.writeOffset = offset;\n    return true;\n  }\n\n  process(inputs, outputs, parameters) {\n    const output = outputs[0];\n    const outputChannelData = output[0];\n    const outputBuffers = this.outputBuffers;\n    if (this.hasInterrupted) {\n      this.port.postMessage({ event: 'stop' });\n      return false;\n    } else if (outputBuffers.length) {\n      this.hasStarted = true;\n      const { buffer, trackId } = outputBuffers.shift();\n      for (let i = 0; i < outputChannelData.length; i++) {\n        // outputChannelData[i] = buffer[i] || 0;\n        outputChannelData[i] = (buffer[i] || 0) * 0.7; // Apply volume adjustment\n      }\n      if (trackId) {\n        this.trackSampleOffsets[trackId] =\n          this.trackSampleOffsets[trackId] || 0;\n        this.trackSampleOffsets[trackId] += buffer.length;\n      }\n      return true;\n    } else if (this.hasStarted) {\n      this.port.postMessage({ event: 'stop' });\n      return false;\n    } else {\n      return true;\n    }\n  }\n}\n\nregisterProcessor('stream_processor', StreamProcessor);\n`;\n\nconst script = new Blob([StreamProcessorWorklet], {\n  type: 'application/javascript',\n});\nconst src = URL.createObjectURL(script);\nexport const StreamProcessorSrc = src;\n","import { StreamProcessorSrc } from \"./worklets/stream_processor.js\";\nimport { AudioAnalysis } from \"./analysis/audio_analysis.js\";\n\n/**\n * Plays audio streams received in raw PCM16 chunks from the browser\n * @class\n */\nexport class WavStreamPlayer {\n  /**\n   * Creates a new WavStreamPlayer instance\n   * @param {{sampleRate?: number}} options\n   * @returns {WavStreamPlayer}\n   */\n  constructor({ sampleRate = 44100 } = {}) {\n    this.scriptSrc = StreamProcessorSrc;\n    this.sampleRate = sampleRate;\n    this.context = null;\n    this.stream = null;\n    this.analyser = null;\n    this.trackSampleOffsets = {};\n    this.interruptedTrackIds = {};\n  }\n\n  /**\n   * Connects the audio context and enables output to speakers\n   * @returns {Promise<true>}\n   */\n  async connect(deviceId = \"\") {\n    this.context = new AudioContext({ sampleRate: this.sampleRate });\n    if (this.context.state === \"suspended\") {\n      await this.context.resume();\n    }\n    try {\n      await this.context.audioWorklet.addModule(this.scriptSrc);\n    } catch (e) {\n      console.error(e);\n      throw new Error(`Could not add audioWorklet module: ${this.scriptSrc}`);\n    }\n\n    if (deviceId) {\n      this.changeDeviceId(deviceId);\n    }\n\n    const analyser = this.context.createAnalyser();\n    analyser.fftSize = 8192;\n    analyser.smoothingTimeConstant = 0.1;\n    this.analyser = analyser;\n    return true;\n  }\n\n  /**\n   * if user want to change the device id that is needed for the user\n   * @param  deviceId\n   */\n  async changeDeviceId(deviceId) {\n    if (this.context) {\n      await this.context.setSinkId(deviceId);\n    }\n  }\n\n  /**\n   * Gets the current frequency domain data from the playing track\n   * @param {\"frequency\"|\"music\"|\"voice\"} [analysisType]\n   * @param {number} [minDecibels] default -100\n   * @param {number} [maxDecibels] default -30\n   * @returns {import('./analysis/audio_analysis.js').AudioAnalysisOutputType}\n   */\n  getFrequencies(\n    analysisType = \"frequency\",\n    minDecibels = -100,\n    maxDecibels = -30\n  ) {\n    if (!this.analyser) {\n      throw new Error(\"Not connected, please call .connect() first\");\n    }\n    return AudioAnalysis.getFrequencies(\n      this.analyser,\n      this.sampleRate,\n      null,\n      analysisType,\n      minDecibels,\n      maxDecibels\n    );\n  }\n\n  /**\n   * Starts audio streaming\n   * @private\n   * @returns {Promise<true>}\n   */\n  _start() {\n    const streamNode = new AudioWorkletNode(this.context, \"stream_processor\");\n    streamNode.connect(this.context.destination);\n    streamNode.port.onmessage = (e) => {\n      const { event } = e.data;\n      if (event === \"stop\") {\n        streamNode.disconnect();\n        this.stream = null;\n      } else if (event === \"offset\") {\n        const { requestId, trackId, offset } = e.data;\n        const currentTime = offset / this.sampleRate;\n        this.trackSampleOffsets[requestId] = { trackId, offset, currentTime };\n      }\n    };\n    this.analyser.disconnect();\n    streamNode.connect(this.analyser);\n    this.stream = streamNode;\n    return true;\n  }\n\n  /**\n   * Adds 16BitPCM data to the currently playing audio stream\n   * You can add chunks beyond the current play point and they will be queued for play\n   * @param {ArrayBuffer|Int16Array} arrayBuffer\n   * @param {string} [trackId]\n   * @returns {Int16Array}\n   */\n  add16BitPCM(arrayBuffer, trackId = \"default\") {\n    if (typeof trackId !== \"string\") {\n    } else if (this.interruptedTrackIds[trackId]) {\n      return;\n    }\n    if (!this.stream) {\n      this._start();\n    }\n    let buffer;\n    if (arrayBuffer instanceof Int16Array) {\n      buffer = arrayBuffer;\n    } else if (arrayBuffer instanceof ArrayBuffer) {\n      buffer = new Int16Array(arrayBuffer);\n    } else {\n      throw new Error(`argument must be Int16Array or ArrayBuffer`);\n    }\n    this.stream.port.postMessage({ event: \"write\", buffer, trackId });\n    return buffer;\n  }\n\n  /**\n   * Gets the offset (sample count) of the currently playing stream\n   * @param {boolean} [interrupt]\n   * @returns {{trackId: string|null, offset: number, currentTime: number}}\n   */\n  async getTrackSampleOffset(interrupt = false) {\n    if (!this.stream) {\n      return null;\n    }\n    const requestId = crypto.randomUUID();\n    this.stream.port.postMessage({\n      event: interrupt ? \"interrupt\" : \"offset\",\n      requestId,\n    });\n    let trackSampleOffset;\n    while (!trackSampleOffset) {\n      trackSampleOffset = this.trackSampleOffsets[requestId];\n      await new Promise((r) => setTimeout(() => r(), 1));\n    }\n    const { trackId } = trackSampleOffset;\n    if (interrupt && trackId) {\n      this.interruptedTrackIds[trackId] = true;\n    }\n    return trackSampleOffset;\n  }\n\n  /**\n   * Strips the current stream and returns the sample offset of the audio\n   * @param {boolean} [interrupt]\n   * @returns {{trackId: string|null, offset: number, currentTime: number}}\n   */\n  async interrupt() {\n    return this.getTrackSampleOffset(true);\n  }\n}\n\n// eslint-disable-next-line no-undef\nglobalThis.WavStreamPlayer = WavStreamPlayer;\n","const AudioProcessorWorklet = `\nclass AudioProcessor extends AudioWorkletProcessor {\n\n  constructor() {\n    super();\n    this.port.onmessage = this.receive.bind(this);\n    this.initialize();\n  }\n\n  initialize() {\n    this.foundAudio = false;\n    this.recording = false;\n    this.chunks = [];\n  }\n\n  /**\n   * Concatenates sampled chunks into channels\n   * Format is chunk[Left[], Right[]]\n   */\n  readChannelData(chunks, channel = -1, maxChannels = 9) {\n    let channelLimit;\n    if (channel !== -1) {\n      if (chunks[0] && chunks[0].length - 1 < channel) {\n        throw new Error(\n          \\`Channel \\${channel} out of range: max \\${chunks[0].length}\\`\n        );\n      }\n      channelLimit = channel + 1;\n    } else {\n      channel = 0;\n      channelLimit = Math.min(chunks[0] ? chunks[0].length : 1, maxChannels);\n    }\n    const channels = [];\n    for (let n = channel; n < channelLimit; n++) {\n      const length = chunks.reduce((sum, chunk) => {\n        return sum + chunk[n].length;\n      }, 0);\n      const buffers = chunks.map((chunk) => chunk[n]);\n      const result = new Float32Array(length);\n      let offset = 0;\n      for (let i = 0; i < buffers.length; i++) {\n        result.set(buffers[i], offset);\n        offset += buffers[i].length;\n      }\n      channels[n] = result;\n    }\n    return channels;\n  }\n\n  /**\n   * Combines parallel audio data into correct format,\n   * channels[Left[], Right[]] to float32Array[LRLRLRLR...]\n   */\n  formatAudioData(channels) {\n    if (channels.length === 1) {\n      // Simple case is only one channel\n      const float32Array = channels[0].slice();\n      const meanValues = channels[0].slice();\n      return { float32Array, meanValues };\n    } else {\n      const float32Array = new Float32Array(\n        channels[0].length * channels.length\n      );\n      const meanValues = new Float32Array(channels[0].length);\n      for (let i = 0; i < channels[0].length; i++) {\n        const offset = i * channels.length;\n        let meanValue = 0;\n        for (let n = 0; n < channels.length; n++) {\n          float32Array[offset + n] = channels[n][i];\n          meanValue += channels[n][i];\n        }\n        meanValues[i] = meanValue / channels.length;\n      }\n      return { float32Array, meanValues };\n    }\n  }\n\n  /**\n   * Converts 32-bit float data to 16-bit integers\n   */\n  floatTo16BitPCM(float32Array) {\n    const buffer = new ArrayBuffer(float32Array.length * 2);\n    const view = new DataView(buffer);\n    let offset = 0;\n    for (let i = 0; i < float32Array.length; i++, offset += 2) {\n      let s = Math.max(-1, Math.min(1, float32Array[i]));\n      view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7fff, true);\n    }\n    return buffer;\n  }\n\n  /**\n   * Retrieves the most recent amplitude values from the audio stream\n   * @param {number} channel\n   */\n  getValues(channel = -1) {\n    const channels = this.readChannelData(this.chunks, channel);\n    const { meanValues } = this.formatAudioData(channels);\n    return { meanValues, channels };\n  }\n\n  /**\n   * Exports chunks as an audio/wav file\n   */\n  export() {\n    const channels = this.readChannelData(this.chunks);\n    const { float32Array, meanValues } = this.formatAudioData(channels);\n    const audioData = this.floatTo16BitPCM(float32Array);\n    return {\n      meanValues: meanValues,\n      audio: {\n        bitsPerSample: 16,\n        channels: channels,\n        data: audioData,\n      },\n    };\n  }\n\n  receive(e) {\n    const { event, id } = e.data;\n    let receiptData = {};\n    switch (event) {\n      case 'start':\n        this.recording = true;\n        break;\n      case 'stop':\n        this.recording = false;\n        break;\n      case 'clear':\n        this.initialize();\n        break;\n      case 'export':\n        receiptData = this.export();\n        break;\n      case 'read':\n        receiptData = this.getValues();\n        break;\n      default:\n        break;\n    }\n    // Always send back receipt\n    this.port.postMessage({ event: 'receipt', id, data: receiptData });\n  }\n\n  sendChunk(chunk) {\n    const channels = this.readChannelData([chunk]);\n    const { float32Array, meanValues } = this.formatAudioData(channels);\n    const rawAudioData = this.floatTo16BitPCM(float32Array);\n    const monoAudioData = this.floatTo16BitPCM(meanValues);\n    this.port.postMessage({\n      event: 'chunk',\n      data: {\n        mono: monoAudioData,\n        raw: rawAudioData,\n      },\n    });\n  }\n\n  process(inputList, outputList, parameters) {\n    // Copy input to output (e.g. speakers)\n    // Note that this creates choppy sounds with Mac products\n    const sourceLimit = Math.min(inputList.length, outputList.length);\n    for (let inputNum = 0; inputNum < sourceLimit; inputNum++) {\n      const input = inputList[inputNum];\n      const output = outputList[inputNum];\n      const channelCount = Math.min(input.length, output.length);\n      for (let channelNum = 0; channelNum < channelCount; channelNum++) {\n        input[channelNum].forEach((sample, i) => {\n          output[channelNum][i] = sample;\n        });\n      }\n    }\n    const inputs = inputList[0];\n    // There's latency at the beginning of a stream before recording starts\n    // Make sure we actually receive audio data before we start storing chunks\n    let sliceIndex = 0;\n    if (!this.foundAudio) {\n      for (const channel of inputs) {\n        sliceIndex = 0; // reset for each channel\n        if (this.foundAudio) {\n          break;\n        }\n        if (channel) {\n          for (const value of channel) {\n            if (value !== 0) {\n              // find only one non-zero entry in any channel\n              this.foundAudio = true;\n              break;\n            } else {\n              sliceIndex++;\n            }\n          }\n        }\n      }\n    }\n    if (inputs && inputs[0] && this.foundAudio && this.recording) {\n      // We need to copy the TypedArray, because the \\`process\\`\n      // internals will reuse the same buffer to hold each input\n      const chunk = inputs.map((input) => input.slice(sliceIndex));\n      this.chunks.push(chunk);\n      this.sendChunk(chunk);\n    }\n    return true;\n  }\n}\n\nregisterProcessor('audio_processor', AudioProcessor);\n`;\n\nconst script = new Blob([AudioProcessorWorklet], {\n  type: 'application/javascript',\n});\nconst src = URL.createObjectURL(script);\nexport const AudioProcessorSrc = src;\n","import { AudioProcessorSrc } from \"./worklets/audio_processor.js\";\nimport { AudioAnalysis } from \"./analysis/audio_analysis.js\";\nimport { WavPacker } from \"./wav_packer.js\";\n\n/**\n * Decodes audio into a wav file\n * @typedef {Object} DecodedAudioType\n * @property {Blob} blob\n * @property {string} url\n * @property {Float32Array} values\n * @property {AudioBuffer} audioBuffer\n */\n\n/**\n * Records live stream of user audio as PCM16 \"audio/wav\" data\n * @class\n */\nexport class WavRecorder {\n  /**\n   * Create a new WavRecorder instance\n   * @param {{sampleRate?: number, outputToSpeakers?: boolean, debug?: boolean}} [options]\n   * @returns {WavRecorder}\n   */\n  constructor({\n    sampleRate = 44100,\n    outputToSpeakers = false,\n    debug = false,\n  } = {}) {\n    // Script source\n    this.scriptSrc = AudioProcessorSrc;\n    // Config\n    this.sampleRate = sampleRate;\n    this.outputToSpeakers = outputToSpeakers;\n    this.debug = !!debug;\n    this._deviceChangeCallback = null;\n    this._devices = [];\n    // State variables\n    this.stream = null;\n    this.processor = null;\n    this.source = null;\n    this.node = null;\n    this.recording = false;\n    // Event handling with AudioWorklet\n    this._lastEventId = 0;\n    this.eventReceipts = {};\n    this.eventTimeout = 5000;\n    // Process chunks of audio\n    this._chunkProcessor = () => {};\n    this._chunkProcessorSize = void 0;\n    this._chunkProcessorBuffer = {\n      raw: new ArrayBuffer(0),\n      mono: new ArrayBuffer(0),\n    };\n  }\n\n  /**\n   * Decodes audio data from multiple formats to a Blob, url, Float32Array and AudioBuffer\n   * @param {Blob|Float32Array|Int16Array|ArrayBuffer|number[]} audioData\n   * @param {number} sampleRate\n   * @param {number} fromSampleRate\n   * @returns {Promise<DecodedAudioType>}\n   */\n  static async decode(audioData, sampleRate = 44100, fromSampleRate = -1) {\n    const context = new AudioContext({ sampleRate });\n    let arrayBuffer;\n    let blob;\n    if (audioData instanceof Blob) {\n      if (fromSampleRate !== -1) {\n        throw new Error(\n          `Can not specify \"fromSampleRate\" when reading from Blob`\n        );\n      }\n      blob = audioData;\n      arrayBuffer = await blob.arrayBuffer();\n    } else if (audioData instanceof ArrayBuffer) {\n      if (fromSampleRate !== -1) {\n        throw new Error(\n          `Can not specify \"fromSampleRate\" when reading from ArrayBuffer`\n        );\n      }\n      arrayBuffer = audioData;\n      blob = new Blob([arrayBuffer], { type: \"audio/wav\" });\n    } else {\n      let float32Array;\n      let data;\n      if (audioData instanceof Int16Array) {\n        data = audioData;\n        float32Array = new Float32Array(audioData.length);\n        for (let i = 0; i < audioData.length; i++) {\n          float32Array[i] = audioData[i] / 0x8000;\n        }\n      } else if (audioData instanceof Float32Array) {\n        float32Array = audioData;\n      } else if (audioData instanceof Array) {\n        float32Array = new Float32Array(audioData);\n      } else {\n        throw new Error(\n          `\"audioData\" must be one of: Blob, Float32Arrray, Int16Array, ArrayBuffer, Array<number>`\n        );\n      }\n      if (fromSampleRate === -1) {\n        throw new Error(\n          `Must specify \"fromSampleRate\" when reading from Float32Array, In16Array or Array`\n        );\n      } else if (fromSampleRate < 3000) {\n        throw new Error(`Minimum \"fromSampleRate\" is 3000 (3kHz)`);\n      }\n      if (!data) {\n        data = WavPacker.floatTo16BitPCM(float32Array);\n      }\n      const audio = {\n        bitsPerSample: 16,\n        channels: [float32Array],\n        data,\n      };\n      const packer = new WavPacker();\n      const result = packer.pack(fromSampleRate, audio);\n      blob = result.blob;\n      arrayBuffer = await blob.arrayBuffer();\n    }\n    const audioBuffer = await context.decodeAudioData(arrayBuffer);\n    const values = audioBuffer.getChannelData(0);\n    const url = URL.createObjectURL(blob);\n    return {\n      blob,\n      url,\n      values,\n      audioBuffer,\n    };\n  }\n\n  /**\n   * Logs data in debug mode\n   * @param {...any} arguments\n   * @returns {true}\n   */\n  log() {\n    if (this.debug) {\n      this.log(...arguments);\n    }\n    return true;\n  }\n\n  /**\n   * Retrieves the current sampleRate for the recorder\n   * @returns {number}\n   */\n  getSampleRate() {\n    return this.sampleRate;\n  }\n\n  /**\n   * Retrieves the current status of the recording\n   * @returns {\"ended\"|\"paused\"|\"recording\"}\n   */\n  getStatus() {\n    if (!this.processor) {\n      return \"ended\";\n    } else if (!this.recording) {\n      return \"paused\";\n    } else {\n      return \"recording\";\n    }\n  }\n\n  /**\n   * Sends an event to the AudioWorklet\n   * @private\n   * @param {string} name\n   * @param {{[key: string]: any}} data\n   * @param {AudioWorkletNode} [_processor]\n   * @returns {Promise<{[key: string]: any}>}\n   */\n  async _event(name, data = {}, _processor = null) {\n    _processor = _processor || this.processor;\n    if (!_processor) {\n      throw new Error(\"Can not send events without recording first\");\n    }\n    const message = {\n      event: name,\n      id: this._lastEventId++,\n      data,\n    };\n    _processor.port.postMessage(message);\n    const t0 = new Date().valueOf();\n    while (!this.eventReceipts[message.id]) {\n      if (new Date().valueOf() - t0 > this.eventTimeout) {\n        throw new Error(`Timeout waiting for \"${name}\" event`);\n      }\n      await new Promise((res) => setTimeout(() => res(true), 1));\n    }\n    const payload = this.eventReceipts[message.id];\n    delete this.eventReceipts[message.id];\n    return payload;\n  }\n\n  /**\n   * Sets device change callback, remove if callback provided is `null`\n   * @param {(Array<MediaDeviceInfo & {default: boolean}>): void|null} callback\n   * @returns {true}\n   */\n  listenForDeviceChange(callback) {\n    if (callback === null && this._deviceChangeCallback) {\n      navigator.mediaDevices.removeEventListener(\n        \"devicechange\",\n        this._deviceChangeCallback\n      );\n      this._deviceChangeCallback = null;\n    } else if (callback !== null) {\n      // Basically a debounce; we only want this called once when devices change\n      // And we only want the most recent callback() to be executed\n      // if a few are operating at the same time\n      let lastId = 0;\n      let lastDevices = [];\n      const serializeDevices = (devices) =>\n        devices\n          .map((d) => d.deviceId)\n          .sort()\n          .join(\",\");\n      const cb = async () => {\n        let id = ++lastId;\n        const devices = await this.listDevices();\n        if (id === lastId) {\n          if (serializeDevices(lastDevices) !== serializeDevices(devices)) {\n            lastDevices = devices;\n            callback(devices.slice());\n          }\n        }\n      };\n      navigator.mediaDevices.addEventListener(\"devicechange\", cb);\n      cb();\n      this._deviceChangeCallback = cb;\n    }\n    return true;\n  }\n\n  /**\n   * Manually request permission to use the microphone\n   * @returns {Promise<true>}\n   */\n  async requestPermission() {\n    const permissionStatus = await navigator.permissions.query({\n      name: \"microphone\",\n    });\n    if (permissionStatus.state === \"denied\") {\n      window.alert(\"You must grant microphone access to use this feature.\");\n    } else if (permissionStatus.state === \"prompt\") {\n      try {\n        const stream = await navigator.mediaDevices.getUserMedia({\n          audio: true,\n        });\n        const tracks = stream.getTracks();\n        tracks.forEach((track) => track.stop());\n      } catch (e) {\n        window.alert(\"You must grant microphone access to use this feature.\");\n      }\n    }\n    return true;\n  }\n\n  /**\n   * List all eligible devices for recording, will request permission to use microphone\n   * @returns {Promise<Array<MediaDeviceInfo & {default: boolean}>>}\n   */\n  async listDevices() {\n    if (\n      !navigator.mediaDevices ||\n      !(\"enumerateDevices\" in navigator.mediaDevices)\n    ) {\n      throw new Error(\"Could not request user devices\");\n    }\n    await this.requestPermission();\n    const devices = await navigator.mediaDevices.enumerateDevices();\n    const audioDevices = devices.filter(\n      (device) => device.kind === \"audioinput\"\n    );\n    const defaultDeviceIndex = audioDevices.findIndex(\n      (device) => device.deviceId === \"default\"\n    );\n    const deviceList = [];\n    if (defaultDeviceIndex !== -1) {\n      let defaultDevice = audioDevices.splice(defaultDeviceIndex, 1)[0];\n      let existingIndex = audioDevices.findIndex(\n        (device) => device.groupId === defaultDevice.groupId\n      );\n      if (existingIndex !== -1) {\n        defaultDevice = audioDevices.splice(existingIndex, 1)[0];\n      }\n      defaultDevice.default = true;\n      deviceList.push(defaultDevice);\n    }\n    return deviceList.concat(audioDevices);\n  }\n\n  /**\n   * Begins a recording session and requests microphone permissions if not already granted\n   * Microphone recording indicator will appear on browser tab but status will be \"paused\"\n   * @param {string} [deviceId] if no device provided, default device will be used\n   * @returns {Promise<true>}\n   */\n  async begin(deviceId) {\n    if (this.processor) {\n      throw new Error(\n        `Already connected: please call .end() to start a new session`\n      );\n    }\n\n    if (\n      !navigator.mediaDevices ||\n      !(\"getUserMedia\" in navigator.mediaDevices)\n    ) {\n      throw new Error(\"Could not request user media\");\n    }\n    try {\n      const config = { audio: true };\n      if (deviceId) {\n        config.audio = { deviceId: { exact: deviceId } };\n      }\n      this.stream = await navigator.mediaDevices.getUserMedia(config);\n    } catch (err) {\n      throw new Error(\"Could not start media stream\");\n    }\n\n    const context = new AudioContext({ sampleRate: this.sampleRate });\n    const source = context.createMediaStreamSource(this.stream);\n    // Load and execute the module script.\n    try {\n      await context.audioWorklet.addModule(this.scriptSrc);\n    } catch (e) {\n      console.error(e);\n      throw new Error(`Could not add audioWorklet module: ${this.scriptSrc}`);\n    }\n    const processor = new AudioWorkletNode(context, \"audio_processor\");\n    processor.port.onmessage = (e) => {\n      const { event, id, data } = e.data;\n      if (event === \"receipt\") {\n        this.eventReceipts[id] = data;\n      } else if (event === \"chunk\") {\n        if (this._chunkProcessorSize) {\n          const buffer = this._chunkProcessorBuffer;\n          this._chunkProcessorBuffer = {\n            raw: WavPacker.mergeBuffers(buffer.raw, data.raw),\n            mono: WavPacker.mergeBuffers(buffer.mono, data.mono),\n          };\n          if (\n            this._chunkProcessorBuffer.mono.byteLength >=\n            this._chunkProcessorSize\n          ) {\n            this._chunkProcessor(this._chunkProcessorBuffer);\n            this._chunkProcessorBuffer = {\n              raw: new ArrayBuffer(0),\n              mono: new ArrayBuffer(0),\n            };\n          }\n        } else {\n          this._chunkProcessor(data);\n        }\n      }\n    };\n\n    const node = source.connect(processor);\n    const analyser = context.createAnalyser();\n    analyser.fftSize = 8192;\n    analyser.smoothingTimeConstant = 0.1;\n    node.connect(analyser);\n    if (this.outputToSpeakers) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        \"Warning: Output to speakers may affect sound quality,\\n\" +\n          \"especially due to system audio feedback preventative measures.\\n\" +\n          \"use only for debugging\"\n      );\n      analyser.connect(context.destination);\n    }\n\n    this.source = source;\n    this.node = node;\n    this.analyser = analyser;\n    this.processor = processor;\n    return true;\n  }\n\n  /**\n   * Gets the current frequency domain data from the recording track\n   * @param {\"frequency\"|\"music\"|\"voice\"} [analysisType]\n   * @param {number} [minDecibels] default -100\n   * @param {number} [maxDecibels] default -30\n   * @returns {import('./analysis/audio_analysis.js').AudioAnalysisOutputType}\n   */\n  getFrequencies(\n    analysisType = \"frequency\",\n    minDecibels = -100,\n    maxDecibels = -30\n  ) {\n    if (!this.processor) {\n      throw new Error(\"Session ended: please call .begin() first\");\n    }\n    return AudioAnalysis.getFrequencies(\n      this.analyser,\n      this.sampleRate,\n      null,\n      analysisType,\n      minDecibels,\n      maxDecibels\n    );\n  }\n\n  /**\n   * Pauses the recording\n   * Keeps microphone stream open but halts storage of audio\n   * @returns {Promise<true>}\n   */\n  async pause() {\n    if (!this.processor) {\n      throw new Error(\"Session ended: please call .begin() first\");\n    } else if (!this.recording) {\n      throw new Error(\"Already paused: please call .record() first\");\n    }\n    if (this._chunkProcessorBuffer.raw.byteLength) {\n      this._chunkProcessor(this._chunkProcessorBuffer);\n    }\n    this.log(\"Pausing ...\");\n    await this._event(\"stop\");\n    this.recording = false;\n    return true;\n  }\n\n  /**\n   * Start recording stream and storing to memory from the connected audio source\n   * @param {(data: { mono: Int16Array; raw: Int16Array }) => any} [chunkProcessor]\n   * @param {number} [chunkSize] chunkProcessor will not be triggered until this size threshold met in mono audio\n   * @returns {Promise<true>}\n   */\n  async record(chunkProcessor = () => {}, chunkSize = 8192) {\n    if (!this.processor) {\n      throw new Error(\"Session ended: please call .begin() first\");\n    } else if (this.recording) {\n      throw new Error(\"Already recording: please call .pause() first\");\n    } else if (typeof chunkProcessor !== \"function\") {\n      throw new Error(`chunkProcessor must be a function`);\n    }\n    this._chunkProcessor = chunkProcessor;\n    this._chunkProcessorSize = chunkSize;\n    this._chunkProcessorBuffer = {\n      raw: new ArrayBuffer(0),\n      mono: new ArrayBuffer(0),\n    };\n    this.log(\"Recording ...\");\n    await this._event(\"start\");\n    this.recording = true;\n    return true;\n  }\n\n  /**\n   * Clears the audio buffer, empties stored recording\n   * @returns {Promise<true>}\n   */\n  async clear() {\n    if (!this.processor) {\n      throw new Error(\"Session ended: please call .begin() first\");\n    }\n    await this._event(\"clear\");\n    return true;\n  }\n\n  /**\n   * Reads the current audio stream data\n   * @returns {Promise<{meanValues: Float32Array, channels: Array<Float32Array>}>}\n   */\n  async read() {\n    if (!this.processor) {\n      throw new Error(\"Session ended: please call .begin() first\");\n    }\n    this.log(\"Reading ...\");\n    const result = await this._event(\"read\");\n    return result;\n  }\n\n  /**\n   * Saves the current audio stream to a file\n   * @param {boolean} [force] Force saving while still recording\n   * @returns {Promise<import('./wav_packer.js').WavPackerAudioType>}\n   */\n  async save(force = false) {\n    if (!this.processor) {\n      throw new Error(\"Session ended: please call .begin() first\");\n    }\n    if (!force && this.recording) {\n      throw new Error(\n        \"Currently recording: please call .pause() first, or call .save(true) to force\"\n      );\n    }\n    this.log(\"Exporting ...\");\n    const exportData = await this._event(\"export\");\n    const packer = new WavPacker();\n    const result = packer.pack(this.sampleRate, exportData.audio);\n    return result;\n  }\n\n  /**\n   * Ends the current recording session and saves the result\n   * @returns {Promise<import('./wav_packer.js').WavPackerAudioType>}\n   */\n  async end() {\n    if (!this.processor) {\n      throw new Error(\"Session ended: please call .begin() first\");\n    }\n\n    const _processor = this.processor;\n\n    this.log(\"Stopping ...\");\n    await this._event(\"stop\");\n    this.recording = false;\n    const tracks = this.stream.getTracks();\n    tracks.forEach((track) => track.stop());\n\n    this.log(\"Exporting ...\");\n    const exportData = await this._event(\"export\", {}, _processor);\n\n    this.processor.disconnect();\n    this.source.disconnect();\n    this.node.disconnect();\n    this.analyser.disconnect();\n    this.stream = null;\n    this.processor = null;\n    this.source = null;\n    this.node = null;\n\n    const packer = new WavPacker();\n    const result = packer.pack(this.sampleRate, exportData.audio);\n    return result;\n  }\n\n  /**\n   * Performs a full cleanup of WavRecorder instance\n   * Stops actively listening via microphone and removes existing listeners\n   * @returns {Promise<true>}\n   */\n  async quit() {\n    this.listenForDeviceChange(null);\n    if (this.processor) {\n      await this.end();\n    }\n    return true;\n  }\n}\n// eslint-disable-next-line no-undef\nglobalThis.WavRecorder = WavRecorder;\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { Metadata, Metric } from \"@/rapida/clients/protos/common_pb\";\nimport { Struct, Value } from \"google-protobuf/google/protobuf/struct_pb\";\n\n/** Metric name for time taken in operation */\nconst TIME_TAKEN = \"TIME_TAKEN\";\n/** Metric name for operation status */\nconst STATUS = \"STATUS\";\n/** Metric name for input token count */\nconst INPUT_TOKEN = \"INPUT_TOKEN\";\n/** Metric name for output token count */\nconst OUTPUT_TOKEN = \"OUTPUT_TOKEN\";\n/** Metric name for total token count */\nconst TOTAL_TOKEN = \"TOTAL_TOKEN\";\n/** Metric name for total cost */\nconst COST = \"COST\";\n/** Metric name for input cost */\nconst INPUT_COST = \"INPUT_COST\";\n/** Metric name for output cost */\nconst OUTPUT_COST = \"OUTPUT_COST\";\n/** Metric name for LLM request identifier */\nconst LLM_REQUEST_ID = \"LLM_REQUEST_ID\";\n\n/**\n * Retrieves the total token count from a metrics array\n * @param metrics - Array of Metric objects to search through\n * @returns The total token count as a number, or 0 if not found\n */\nexport const getTotalTokenMetric = (metrics: Array<Metric>): number => {\n  let ttl = metrics.find((x) => x.getName() === TOTAL_TOKEN);\n  return ttl ? +ttl.getValue() : 0;\n};\n\n/**\n * Retrieves the time taken metric from a metrics array\n * @param metrics - Array of Metric objects to search through\n * @returns The time taken as a number, or 0 if not found\n */\nexport const getTimeTakenMetric = (metrics: Array<Metric>): number => {\n  let ttl = metrics.find((x) => x.getName() === TIME_TAKEN);\n  return ttl ? +ttl.getValue() : 0;\n};\n\n/**\n * Retrieves a value from a metadata array by key\n * @param mt - Array of Metadata objects to search through\n * @param k - Key to search for\n * @returns The value if found, undefined otherwise\n */\nexport function getMetadataValue(mt: Metadata[], k: string) {\n  let _mt = mt.find((m) => {\n    return m.getKey() === k;\n  });\n\n  return _mt?.getValue();\n}\n\n/**\n * Retrieves a value from a metadata array by key with a default fallback\n * @param mt - Array of Metadata objects to search through\n * @param k - Key to search for\n * @param df - Default value to return if key not found\n * @returns The value if found, default value otherwise\n */\nexport function getMetadataValueOrDefault(\n  mt: Metadata[],\n  k: string,\n  df: string\n) {\n  let _mt = mt.find((m) => {\n    return m.getKey() === k;\n  });\n\n  return _mt ? _mt?.getValue() : df;\n}\n\n/**\n * Extracts a string value from a Protocol Buffer Struct\n * @param struct - Protocol Buffer Struct object\n * @param key - Key to extract\n * @returns String value if found and is string type, null otherwise\n */\nexport function getStringFromProtoStruct(\n  struct?: Struct,\n  key?: string\n): string | null {\n  if (!struct || !key) {\n    return null;\n  }\n  const fields = struct.getFieldsMap();\n  const value = fields.get(key);\n\n  if (value && value.getKindCase() === Value.KindCase.STRING_VALUE) {\n    return value.getStringValue();\n  }\n\n  return null;\n}\n\n/**\n * Extracts and parses a JSON value from a Protocol Buffer Struct\n * @param struct - Protocol Buffer Struct object\n * @param key - Key to extract\n * @returns Parsed JSON object if found, null otherwise\n * @description Handles both string-encoded JSON and nested Struct values\n */\nexport function getJsonFromProtoStruct(\n  struct?: Struct,\n  key?: string\n): Record<string, any> | null {\n  if (!struct || !key) {\n    return null;\n  }\n  const fields = struct.getFieldsMap();\n  const value = fields.get(key);\n\n  if (value && value.getKindCase() === Value.KindCase.STRING_VALUE) {\n    return JSON.parse(value.getStringValue());\n  }\n\n  if (value && value.getKindCase() === Value.KindCase.STRUCT_VALUE) {\n    const result = value.getStructValue()?.toJavaScript();\n    return result ?? {};\n  }\n\n  return null;\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { AgentConfig } from \"@/rapida/agents/agent-config\";\nimport {\n  AssistantMessagingRequest,\n  AssistantMessagingResponse,\n} from \"@/rapida/clients/protos/talk-api_pb\";\nimport { ConnectionConfig } from \"@/rapida/connections/connection-config\";\nimport { ConnectionState } from \"@/rapida/connections/connection-state\";\nimport { AgentEventCallback } from \"@/rapida/events/agent-event-callback\";\nimport { EventEmitter } from \"events\";\nimport type TypedEmitter from \"typed-emitter\";\nimport { Content, Event, Message } from \"@/rapida/clients/protos/common_pb\";\nimport { Message as LocalMessage, MessageRole } from \"@/rapida/agents/message\";\nimport { AgentEvent } from \"@/rapida/events/agent-event\";\nimport {\n  AssistantTalk,\n  CreateConversationMetric,\n  CreateMessageMetric,\n} from \"@/rapida/clients/talk\";\nimport { getFeedback } from \"@/rapida/agents/feedback\";\n\n//\nexport class Agent extends (EventEmitter as new () => TypedEmitter<AgentEventCallback>) {\n  /**\n   * connection state default connection is disconnected\n   */\n  state: ConnectionState = ConnectionState.Disconnected;\n\n  /**\n   * conversation id\n   */\n  protected agentMessagingId: string | undefined;\n  get conversationId(): string | undefined {\n    return this.agentMessagingId;\n  }\n  /**\n   *\n   * @param assistantConversationId\n   * @returns\n   */\n  protected onChangeConversation = (assistantConversationId: string) => {\n    if (this.agentMessagingId) return;\n    this.agentMessagingId = assistantConversationId;\n  };\n\n  /**\n   * an connection for talking client\n   * when you are conversing with agent then this client will get used\n   * work with bi-driectional request <> response\n   */\n  // @ts-ignore\n  protected talkingConnection: any;\n  // | BidirectionalStream<AssistantMessagingRequest, AssistantMessagingResponse>\n  // | undefined;\n  // |\n\n  //\n  protected agentConfig: AgentConfig;\n  protected connectionConfig: ConnectionConfig;\n\n  //\n  /**\n   *\n   */\n  protected agentEvents: Event[];\n  get events(): Event[] {\n    return this.agentEvents;\n  }\n\n  /**\n   *\n   */\n  protected agentMessages: LocalMessage[];\n  get messages(): LocalMessage[] {\n    return this.agentMessages;\n  }\n\n  /**\n   *\n   */\n  protected agentTranscript: string = \"\";\n  get transcript(): string {\n    return this.agentTranscript;\n  }\n\n  /**\n   *\n   * @param connection\n   * @param agentConfig\n   * @param onRecieve\n   */\n  protected constructor(\n    connection: ConnectionConfig,\n    agentConfig: AgentConfig\n  ) {\n    super();\n    this.agentConfig = agentConfig;\n    this.connectionConfig = connection;\n    //\n    //\n    this.agentMessagingId = undefined;\n    this.agentEvents = [];\n    this.agentMessages = [];\n    this.agentTranscript = \"\";\n  }\n\n  /**\n   * Message builder\n   * @param role\n   * @param contents\n   * @returns\n   */\n  protected createAssistantRequest = (\n    role: string,\n    contents: Content[]\n  ): AssistantMessagingRequest => {\n    const request = new AssistantMessagingRequest();\n    if (this.agentMessagingId)\n      request.setAssistantconversationid(this.agentMessagingId);\n    const message = new Message();\n    message.setRole(role);\n    message.setContentsList(contents);\n\n    request.setAssistant(this.agentConfig.definition);\n    request.setMessage(message);\n\n    //\n    if (this.agentConfig.options) {\n      this.agentConfig.options?.forEach((v, k) => {\n        request.getOptionsMap().set(k, v);\n      });\n    }\n\n    //\n    if (this.agentConfig.metadata) {\n      this.agentConfig.metadata?.forEach((v, k) => {\n        request.getMetadataMap().set(k, v);\n      });\n    }\n\n    //\n    if (this.agentConfig.arguments) {\n      this.agentConfig.arguments?.forEach((v, k) => {\n        request.getArgsMap().set(k, v);\n      });\n    }\n\n    return request;\n  };\n\n  /**\n   * After changing connection emit the connection change event with curent state of connection\n   * @param state\n   * @returns\n   */\n  protected setAndEmitConnectionState(state: ConnectionState): boolean {\n    if (state === this.state) {\n      return false;\n    }\n    this.state = state;\n    this.emit(AgentEvent.ConnectionChanged, this.state);\n    this.connectionConfig.onConnectionChange(state);\n    return true;\n  }\n\n  /**\n   *\n   * @param messageId\n   * @param metrics\n   */\n  createMessageMetric(\n    messageId: string,\n    metrics: {\n      name: string;\n      description: string;\n      value: string;\n    }[]\n  ) {\n    CreateMessageMetric(\n      this.connectionConfig.conversationClient,\n      this.agentConfig.definition.getAssistantid(),\n      this.agentMessagingId!,\n      messageId,\n      metrics,\n      () => {\n        //\n        const feedback = getFeedback(metrics[metrics.length - 1]?.value);\n        this.agentMessages = this.agentMessages.map((message) => {\n          if (message.id === messageId && message.role === MessageRole.System) {\n            return {\n              ...message,\n              feedback: feedback,\n            };\n          }\n          return message;\n        });\n        this.emit(AgentEvent.MessageFeedback, getFeedback(feedback));\n      },\n      this.connectionConfig.auth\n    );\n  }\n\n  /**\n   *\n   * @param metrics\n   */\n  createConversationMetric(\n    metrics: {\n      name: string;\n      description: string;\n      value: string;\n    }[]\n  ) {\n    CreateConversationMetric(\n      this.connectionConfig.conversationClient,\n      this.agentConfig.definition.getAssistantid(),\n      this.agentMessagingId!,\n      metrics,\n      () => {\n        console.dir(\"message metric got created\");\n      },\n      this.connectionConfig.auth\n    );\n  }\n\n  /**\n   *\n   * @param event\n   * @param args\n   * @returns\n   */\n  emit<E extends keyof AgentEventCallback>(\n    event: E,\n    ...args: Parameters<AgentEventCallback[E]>\n  ): boolean {\n    return super.emit(event, ...args);\n  }\n\n  /**\n   *\n   */\n  get isConnected(): boolean {\n    return this.state === ConnectionState.Connected;\n  }\n\n  /**\n   *\n   */\n  protected connectAgent = async () => {\n    if (this.state === ConnectionState.Connected) {\n      return;\n    }\n    try {\n      this.talkingConnection = AssistantTalk(\n        this.connectionConfig.streamClient,\n        this.connectionConfig.auth\n      );\n      this.talkingConnection?.on(\"data\", await this.onDataChange);\n      this.talkingConnection?.on(\"end\", await this.onEnd);\n      this.talkingConnection?.on(\"status\", await this.onStatusChange);\n      //\n      await this.setAndEmitConnectionState(ConnectionState.Connected);\n    } catch (err) {\n      console.error(\"error while creating a connection with talking server\");\n    }\n  };\n\n  protected disconnectAgent = async () => {\n    if (this.state !== ConnectionState.Connected) {\n      return;\n    }\n    await this.talkingConnection?.end();\n  };\n  /**\n   * call it when end of stream\n   */\n  private onEnd = async () => {\n    await this.setAndEmitConnectionState(ConnectionState.Disconnected);\n  };\n\n  // when status change of active connection\n  private onStatusChange = async (s) => {\n    console.log(s);\n  };\n\n  /**\n   *\n   * @param response\n   * @returns\n   */\n  protected onDataChange = async (response: AssistantMessagingResponse) => {\n    this.agentConfig.onCallback(response);\n    if (this.onRecieve) this.onRecieve(response);\n  };\n\n  /**\n   *\n   * @param response\n   */\n  onRecieve(_: AssistantMessagingResponse) {\n    console.warn(\"no recieve method registered\");\n  }\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n *  This module provides functions for managing projects through the ProjectService.\n */\nimport {\n  AssistantMessagingRequest,\n  AssistantDefinition,\n  AssistantMessagingResponse,\n} from \"@/rapida/clients/protos/talk-api_pb\";\nimport {\n  GetAllConversationMessageRequest,\n  GetAllConversationMessageResponse,\n  GetAllAssistantConversationResponse,\n  GetAllAssistantConversationRequest,\n  Metric,\n} from \"@/rapida/clients/protos/common_pb\";\nimport {\n  ClientAuthInfo,\n  UserAuthInfo,\n  WithAuthContext,\n} from \"@/rapida/clients\";\nimport {\n  ServiceError,\n  BidirectionalStream,\n  ResponseStream,\n} from \"@/rapida/clients/protos/talk-api_pb_service\";\nimport { Criteria, Paginate, Message } from \"@/rapida/clients/protos/common_pb\";\nimport { TalkServiceClient } from \"@/rapida/clients/protos/talk-api_pb_service\";\nimport {\n  CreateConversationMetricResponse,\n  CreateConversationMetricRequest,\n} from \"./protos/talk-api_pb\";\nimport {\n  CreateMessageMetricResponse,\n  CreateMessageMetricRequest,\n} from \"./protos/talk-api_pb\";\nimport {\n  fromStageStr,\n  UndefinedStage,\n  AuthenticationStage,\n  TranscriptionStage,\n  AssistantIdentificationStage,\n  QueryFormulationStage,\n  InformationRetrievalStage,\n  DocumentRetrievalStage,\n  ContextAugmentationStage,\n  TextGenerationStage,\n  OutputEvaluationStage,\n} from \"@/rapida/utils/rapida_stages\";\n\n/**\n *\n * @param stage\n * @returns\n */\nexport function GetStageMessage(stage: string): string {\n  switch (fromStageStr(stage)) {\n    case UndefinedStage:\n      return \"is undefined. Please wait...\";\n    case AuthenticationStage:\n      return \"is authenticating...\";\n    case TranscriptionStage:\n      return \"is transcribing the audio...\";\n    case AssistantIdentificationStage:\n      return \"is identifying the assistant...\";\n    case QueryFormulationStage:\n      return \"is formulating the query...\";\n    case InformationRetrievalStage:\n      return \"is retrieving information...\";\n    case DocumentRetrievalStage:\n      return \"is retrieving documents...\";\n    case ContextAugmentationStage:\n      return \"is augmenting the context...\";\n    case TextGenerationStage:\n      return \"is generating the text...\";\n    case OutputEvaluationStage:\n      return \"is evaluating the output...\";\n    default:\n      return \"Unknown stage. Please wait...\";\n  }\n}\n\n/**\n *\n * @param assistantId\n * @param assistantProviderModelId\n * @param message\n * @param authHeader\n * @param cb\n */\nexport function AssistantMessaging(\n  conversationClient: TalkServiceClient,\n  assistantId: string,\n  assistantProviderModelId: string,\n  conversation: {\n    message: Message;\n    assistantConversationId?: string | null;\n  },\n  authHeader: ClientAuthInfo | UserAuthInfo\n): ResponseStream<AssistantMessagingResponse> {\n  const req = new AssistantMessagingRequest();\n  const ad = new AssistantDefinition();\n  ad.setAssistantid(assistantId);\n  ad.setVersion(assistantProviderModelId);\n  req.setAssistant(ad);\n\n  if (conversation.assistantConversationId) {\n    req.setAssistantconversationid(conversation.assistantConversationId);\n  }\n  req.setMessage(conversation.message);\n  const ctx = WithAuthContext(authHeader);\n  return conversationClient.assistantMessaging(req, ctx);\n}\n/**\n *\n * @param assistantId\n * @param page\n * @param pageSize\n * @param criteria\n * @param cb\n * @param authHeader\n */\nexport function GetAllAssistantConversation(\n  conversationClient: TalkServiceClient,\n  assistantId: string,\n  page: number,\n  pageSize: number,\n  criteria: { key: string; value: string }[],\n  cb: (\n    err: ServiceError | null,\n    uvcr: GetAllAssistantConversationResponse | null\n  ) => void,\n  authHeader: ClientAuthInfo | UserAuthInfo\n) {\n  const req = new GetAllAssistantConversationRequest();\n  req.setAssistantid(assistantId);\n  const paginate = new Paginate();\n  criteria.forEach((x) => {\n    let ctr = new Criteria();\n    ctr.setKey(x.key);\n    ctr.setValue(x.value);\n    req.addCriterias(ctr);\n  });\n  paginate.setPage(page);\n  paginate.setPagesize(pageSize);\n  req.setPaginate(paginate);\n  conversationClient.getAllAssistantConversation(\n    req,\n    WithAuthContext(authHeader),\n    cb\n  );\n}\n\n/**\n *\n * @param assistantId\n * @param assistantConversationId\n * @param page\n * @param pageSize\n * @param criteria\n * @param cb\n * @param authHeader\n */\nexport function GetAllAssistantConversationMessage(\n  conversationClient: TalkServiceClient,\n  assistantId: string,\n  assistantConversationId: string,\n  page: number,\n  pageSize: number,\n  criteria: { key: string; value: string }[],\n  authHeader: ClientAuthInfo | UserAuthInfo,\n  cb: (\n    err: ServiceError | null,\n    uvcr: GetAllConversationMessageResponse | null\n  ) => void\n) {\n  const req = new GetAllConversationMessageRequest();\n  req.setAssistantid(assistantId);\n  req.setAssistantconversationid(assistantConversationId);\n  const paginate = new Paginate();\n  criteria.forEach((x) => {\n    let ctr = new Criteria();\n    ctr.setKey(x.key);\n    ctr.setValue(x.value);\n    req.addCriterias(ctr);\n  });\n  paginate.setPage(page);\n  paginate.setPagesize(pageSize);\n  req.setPaginate(paginate);\n  conversationClient.getAllConversationMessage(\n    req,\n    WithAuthContext(authHeader),\n    cb\n  );\n}\n\n/**\n *\n * @param authHeader\n * @returns\n */\nexport function AssistantTalk(\n  conversationStreamClient: TalkServiceClient,\n  authHeader: UserAuthInfo | ClientAuthInfo\n): BidirectionalStream<AssistantMessagingRequest, AssistantMessagingResponse> {\n  return conversationStreamClient.assistantTalk(WithAuthContext(authHeader));\n}\n\n/**\n *\n * @param conversationClient\n * @param assistantId\n * @param assistantConversationId\n * @param assistantConversationMessageId\n * @param cb\n * @param authHeader\n */\nexport function CreateMessageMetric(\n  conversationClient: TalkServiceClient,\n  assistantId: string,\n  assistantConversationId: string,\n  messageId: string,\n  metrics: { name: string; value: string; description: string }[],\n  cb: (\n    err: ServiceError | null,\n    uvcr: CreateMessageMetricResponse | null\n  ) => void,\n  authHeader: ClientAuthInfo | UserAuthInfo\n) {\n  const req = new CreateMessageMetricRequest();\n  req.setAssistantid(assistantId);\n  req.setAssistantconversationid(assistantConversationId);\n  req.setMessageid(messageId);\n  for (var mtr of metrics) {\n    const _m = new Metric();\n    _m.setName(mtr.name);\n    _m.setValue(mtr.value);\n    _m.setDescription(mtr.description);\n    req.addMetrics(_m);\n  }\n  conversationClient.createMessageMetric(req, WithAuthContext(authHeader), cb);\n}\n\n/**\n *\n * @param conversationClient\n * @param assistantId\n * @param assistantConversationId\n * @param metrics\n * @param cb\n * @param authHeader\n */\nexport function CreateConversationMetric(\n  conversationClient: TalkServiceClient,\n  assistantId: string,\n  assistantConversationId: string,\n  metrics: { name: string; value: string; description: string }[],\n  cb: (\n    err: ServiceError | null,\n    uvcr: CreateConversationMetricResponse | null\n  ) => void,\n  authHeader: ClientAuthInfo | UserAuthInfo\n) {\n  const req = new CreateConversationMetricRequest();\n  req.setAssistantid(assistantId);\n  req.setAssistantconversationid(assistantConversationId);\n  for (var mtr of metrics) {\n    const _m = new Metric();\n    _m.setName(mtr.name);\n    _m.setValue(mtr.value);\n    _m.setDescription(mtr.description);\n    req.addMetrics(_m);\n  }\n  conversationClient.createConversationMetric(\n    req,\n    WithAuthContext(authHeader),\n    cb\n  );\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\n\nexport const HEADER_AUTH_ID = 'x-auth-id';\nexport const HEADER_PROJECT_ID = 'x-project-id';\n\nexport const HEADER_API_KEY = 'x-api-key';\nexport const HEADER_SOURCE_KEY = 'x-client-source';\nexport const HEADER_ENVIRONMENT_KEY = 'x-rapida-environment';\nexport const HEADER_REGION_KEY = 'x-rapida-region';\n\nexport const HEADER_USER_AGENT = 'x-user-agent';\nexport const HEADER_LANGUAGE = 'x-language';\nexport const HEADER_PLATFORM = 'x-platform';\nexport const HEADER_SCREEN_WIDTH = 'x-screen-width';\nexport const HEADER_SCREEN_HEIGHT = 'x-screen-height';\nexport const HEADER_WINDOW_WIDTH = 'x-window-width';\nexport const HEADER_WINDOW_HEIGHT = 'x-window-height';\nexport const HEADER_TIMEZONE = 'x-timezone';\nexport const HEADER_COLOR_DEPTH = 'x-color-depth';\nexport const HEADER_DEVICE_MEMORY = 'x-device-memory';\nexport const HEADER_HARDWARE_CONCURRENCY = 'x-hardware-concurrency';\nexport const HEADER_CONNECTION_TYPE = 'x-connection-type';\nexport const HEADER_CONNECTION_EFFECTIVE_TYPE = 'x-connection-effective-type';\nexport const HEADER_COOKIES_ENABLED = 'x-cookies-enabled';\nexport const HEADER_DO_NOT_TRACK = 'x-do-not-track';\nexport const HEADER_REFERRER = 'x-referrer';\nexport const HEADER_REMOTE_URL = 'x-remote-url';\nexport const HEADER_LATITUDE = 'x-latitude';\nexport const HEADER_LONGITUDE = 'x-longitude';\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n *  Utility functions for working with gRPC metadata in Rapida applications.\n */\n\nimport { GetEnvironment, GetSource } from \"@/rapida/utils\";\nimport {\n  HEADER_ENVIRONMENT_KEY,\n  HEADER_SOURCE_KEY,\n  HEADER_REGION_KEY,\n  HEADER_API_KEY,\n  HEADER_AUTH_ID,\n  HEADER_PROJECT_ID,\n  HEADER_USER_AGENT,\n  HEADER_LANGUAGE,\n  HEADER_PLATFORM,\n  HEADER_SCREEN_WIDTH,\n  HEADER_SCREEN_HEIGHT,\n  HEADER_WINDOW_WIDTH,\n  HEADER_WINDOW_HEIGHT,\n  HEADER_TIMEZONE,\n  HEADER_COLOR_DEPTH,\n  HEADER_DEVICE_MEMORY,\n  HEADER_HARDWARE_CONCURRENCY,\n  HEADER_CONNECTION_TYPE,\n  HEADER_CONNECTION_EFFECTIVE_TYPE,\n  HEADER_COOKIES_ENABLED,\n  HEADER_DO_NOT_TRACK,\n  HEADER_REFERRER,\n  HEADER_REMOTE_URL,\n  HEADER_LATITUDE,\n  HEADER_LONGITUDE,\n} from \"@/rapida/utils/rapida_header\";\nimport { grpc } from \"@improbable-eng/grpc-web\";\nimport { ALL_REGION } from \"@/rapida/utils/rapida_region\";\nimport { RapidaSource } from \"@/rapida/utils/rapida_source\";\n\n/**\n * Configures gRPC metadata with platform-specific and environment-specific headers.\n *\n * @param il - The gRPC metadata to configure.\n * @returns The configured gRPC metadata.\n */\nexport const WithPlatform = (il: grpc.Metadata): grpc.Metadata => {\n  // Set the source header based on the platform\n  il.set(HEADER_SOURCE_KEY, GetSource());\n\n  // Set the environment header if in production\n\n  il.set(HEADER_ENVIRONMENT_KEY, GetEnvironment());\n\n  // Set the region header to 'all' by default\n  il.set(HEADER_REGION_KEY, ALL_REGION);\n\n  return il;\n};\n\n/**\n * Configures gRPC metadata with authentication context headers.\n *\n * @param authHeader - A record of authentication headers to add.\n * @returns The configured gRPC metadata with authentication headers.\n */\nexport const WithAuthContext = (\n  authHeader?: ClientAuthInfo | UserAuthInfo\n): grpc.Metadata => {\n  const metadata = WithClientContext(WithPlatform(new grpc.Metadata()));\n  // Set each authentication header in the metadata\n  if (authHeader) {\n    for (const [key, value] of Object.entries(authHeader)) {\n      metadata.set(key, value);\n    }\n  }\n  return metadata;\n};\n\n/**\n * an client information that will help to create an authentication token and header informatioan\n */\nexport interface UserAuthInfo {\n  authorization: string;\n  [HEADER_AUTH_ID]: string;\n  [HEADER_PROJECT_ID]?: string;\n  [HEADER_SOURCE_KEY]?: RapidaSource;\n}\n\nexport interface ClientAuthInfo {\n  [HEADER_API_KEY]: string;\n  [HEADER_AUTH_ID]?: string;\n  [HEADER_SOURCE_KEY]?: RapidaSource;\n}\n\ninterface ClientInfo {\n  [HEADER_USER_AGENT]: string;\n  [HEADER_LANGUAGE]: string;\n  [HEADER_PLATFORM]: string;\n  [HEADER_SCREEN_WIDTH]: number;\n  [HEADER_SCREEN_HEIGHT]: number;\n  [HEADER_WINDOW_WIDTH]: number;\n  [HEADER_WINDOW_HEIGHT]: number;\n  [HEADER_TIMEZONE]: string;\n  [HEADER_COLOR_DEPTH]: number;\n  [HEADER_DEVICE_MEMORY]?: number;\n  [HEADER_HARDWARE_CONCURRENCY]?: number;\n  [HEADER_CONNECTION_TYPE]?: string;\n  [HEADER_CONNECTION_EFFECTIVE_TYPE]?: string;\n  [HEADER_COOKIES_ENABLED]: boolean;\n  [HEADER_DO_NOT_TRACK]?: string | null;\n  [HEADER_REFERRER]: string;\n  [HEADER_REMOTE_URL]: string;\n  [HEADER_LATITUDE]?: number;\n  [HEADER_LONGITUDE]?: number;\n}\n/**\n * Retrieves client information from the browser.\n *\n * This function gathers various details about the client's device and browser,\n * including screen dimensions, user agent, language, platform, and more.\n * It also attempts to get the geolocation if available and permitted.\n *\n * @returns {ClientInfo} A promise that resolves to an object containing client information.\n */\nconst getClientInfo = (): ClientInfo => {\n  const screen_width = window.screen.width;\n  const screen_height = window.screen.height;\n\n  const baseInfo: ClientInfo = {\n    [HEADER_USER_AGENT]: navigator.userAgent,\n    [HEADER_LANGUAGE]: navigator.language,\n    [HEADER_PLATFORM]:\n      (navigator as any)?.userAgentData?.platform || navigator?.platform,\n    [HEADER_SCREEN_WIDTH]: screen_width,\n    [HEADER_SCREEN_HEIGHT]: screen_height,\n    [HEADER_WINDOW_WIDTH]: window.innerWidth,\n    [HEADER_WINDOW_HEIGHT]: window.innerHeight,\n    [HEADER_TIMEZONE]: Intl.DateTimeFormat().resolvedOptions().timeZone,\n    [HEADER_COLOR_DEPTH]: window.screen.colorDepth,\n    [HEADER_DEVICE_MEMORY]: (navigator as any).deviceMemory,\n    [HEADER_HARDWARE_CONCURRENCY]: navigator.hardwareConcurrency,\n    [HEADER_CONNECTION_TYPE]: (navigator as any).connection?.type,\n    [HEADER_CONNECTION_EFFECTIVE_TYPE]: (navigator as any).connection\n      ?.effectiveType,\n    [HEADER_COOKIES_ENABLED]: navigator.cookieEnabled,\n    [HEADER_DO_NOT_TRACK]: navigator.doNotTrack,\n    [HEADER_REFERRER]: document.referrer,\n    [HEADER_REMOTE_URL]: window.location.href,\n  };\n  if (\"geolocation\" in navigator) {\n    try {\n      navigator.geolocation.getCurrentPosition((position) => {\n        baseInfo[HEADER_LATITUDE] = position.coords.latitude;\n        baseInfo[HEADER_LONGITUDE] = position.coords.longitude;\n      });\n    } catch (error) {\n      console.warn(\"Geolocation not available or permission denied\");\n    }\n  }\n  return baseInfo;\n};\n\n/**\n * Enhances gRPC metadata with client context information.\n *\n * This function takes an optional gRPC metadata object and enriches it\n * with client information obtained from getClientInfo(). It iterates\n * through the client info and sets each non-undefined value in the\n * metadata object.\n *\n * @param {grpc.Metadata} metadata - Optional gRPC metadata object to enhance.\n * @returns {grpc.Metadata} The enhanced metadata object with client context.\n */\nexport const WithClientContext = (\n  metadata: grpc.Metadata = new grpc.Metadata()\n): grpc.Metadata => {\n  const clientInfo = getClientInfo();\n\n  for (const [key, value] of Object.entries(clientInfo)) {\n    if (value !== undefined) {\n      metadata.set(key, String(value));\n    }\n  }\n  return metadata;\n};\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\n\nexport type RapidaRegion = 'ap' | 'us' | 'eu' | 'all';\n\nexport const AP_REGION: RapidaRegion = 'ap';\nexport const US_REGION: RapidaRegion = 'us';\nexport const EU_REGION: RapidaRegion = 'eu';\nexport const ALL_REGION: RapidaRegion = 'all';\n\n// Get returns the string value of the RapidaRegion\nexport function getRapidaRegionValue(region: RapidaRegion): string {\n  return region;\n}\n\n// FromStr returns the corresponding RapidaRegion for a given string,\n// or 'all' if the string does not match any region.\nexport function fromStr(label: string): RapidaRegion {\n  switch (label.toLowerCase()) {\n    case 'ap':\n      return AP_REGION;\n    case 'us':\n      return US_REGION;\n    case 'eu':\n      return EU_REGION;\n    case 'all':\n      return ALL_REGION;\n    default:\n      console.warn(\n        \"The region is not supported. Supported regions are 'ap', 'us', 'eu', and 'all'.\",\n      );\n      return ALL_REGION;\n  }\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { VoiceAgent } from \"@/rapida/agents/voice-agent\";\nimport * as React from \"react\";\n\n/** @public */\nexport const VoiceAgentContext = React.createContext<VoiceAgent | undefined>(\n  undefined\n);\n\n/**\n * Ensures that a room is provided via context.\n * If no room is provided, an error is thrown.\n * @public\n */\nexport function useVoiceAgent() {\n  const ctx = React.useContext(VoiceAgentContext);\n  if (!ctx) {\n    throw Error(\"tried to access agent context outside\");\n  }\n  return ctx;\n}\n\n/**\n * Returns the room context if it exists, otherwise undefined.\n * @public\n */\nexport function useMaybeVoiceAgent() {\n  return React.useContext(VoiceAgentContext);\n}\n\n/**\n * Ensures that a room is provided, either via context or explicitly as a parameter.\n * If no room is provided, an error is thrown.\n * @public\n */\nexport function useEnsureVoiceAgent(agent?: VoiceAgent) {\n  const context = useMaybeVoiceAgent();\n  const r = agent ?? context;\n  if (!r) {\n    throw new Error(\n      \"No agent provided, make sure you are inside a agent context or pass the room explicitly\"\n    );\n  }\n  return r;\n}\n","/*\n *  Copyright (c) 2024. Rapida\n *\n *  Permission is hereby granted, free of charge, to any person obtaining a copy\n *  of this software and associated documentation files (the \"Software\"), to deal\n *  in the Software without restriction, including without limitation the rights\n *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *  copies of the Software, and to permit persons to whom the Software is\n *  furnished to do so, subject to the following conditions:\n *\n *  The above copyright notice and this permission notice shall be included in\n *  all copies or substantial portions of the Software.\n *\n *  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n *  THE SOFTWARE.\n *\n *  Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { Subject, map, Observable, startWith, finalize, concat } from \"rxjs\";\nimport { VoiceAgent } from \"@/rapida/agents/voice-agent\";\nimport { AgentEvent } from \"@/rapida/events/agent-event\";\nimport { AgentEventCallback } from \"@/rapida/events/agent-event-callback\";\nimport { ConnectionState } from \"@/rapida/connections/connection-state\";\n\n/**\n *\n * @param agent\n * @param events\n * @returns\n */\nexport function observeVoiceAgentEvents(\n  agent: VoiceAgent,\n  ...events: AgentEvent[]\n): Observable<VoiceAgent> {\n  const observable = new Observable<VoiceAgent>((subscribe) => {\n    const onVoiceAgentUpdate = () => {\n      subscribe.next(agent);\n    };\n\n    events.forEach((evt) => {\n      agent.on(evt, onVoiceAgentUpdate);\n    });\n\n    const unsubscribe = () => {\n      events.forEach((evt) => {\n        agent.off(evt, onVoiceAgentUpdate);\n      });\n    };\n    return unsubscribe;\n  }).pipe(startWith(agent));\n\n  return observable;\n}\n\n/**\n *\n * @param agent\n * @param event\n * @returns\n */\nexport function agentEventSelector<T extends AgentEvent>(\n  agent: VoiceAgent,\n  event: T\n) {\n  const observable = new Observable<Parameters<AgentEventCallback[T]>>(\n    (subscribe) => {\n      const update = (...params: Parameters<AgentEventCallback[T]>) => {\n        subscribe.next(params);\n      };\n      agent.on(event as keyof AgentEventCallback, update);\n      const unsubscribe = () => {\n        agent.off(event as keyof AgentEventCallback, update);\n      };\n      return unsubscribe;\n    }\n  );\n  return observable;\n}\n\n/**\n *\n * @param agent\n * @returns\n */\nexport function agentObserver(agent: VoiceAgent) {\n  const observable = observeVoiceAgentEvents(\n    agent,\n    AgentEvent.ServerEvent,\n    AgentEvent.DataReceived,\n    // swiching channel event\n    AgentEvent.OutputChannelSwitch,\n    AgentEvent.InputChannelSwitch,\n\n    //\n    AgentEvent.ConnectionChanged,\n\n    //\n    AgentEvent.AudioInputMuteToggle,\n    AgentEvent.AudioInputMuteToggle\n  ).pipe(startWith(agent));\n\n  return observable;\n}\n\n/**\n *\n * @param kind\n * @param onError\n * @param requestPermissions\n * @returns\n */\nexport function browserMediaDeviceObserver(\n  kind?: MediaDeviceKind,\n  onError?: (e: Error) => void,\n  requestPermissions = true\n) {\n  const onDeviceChange = async () => {\n    try {\n      const newDevices = await VoiceAgent.getLocalDevices(\n        kind,\n        requestPermissions\n      );\n      deviceSubject.next(newDevices);\n    } catch (e: any) {\n      onError?.(e);\n    }\n  };\n  const deviceSubject = new Subject<MediaDeviceInfo[]>();\n\n  const observable = deviceSubject.pipe(\n    finalize(() => {\n      navigator?.mediaDevices?.removeEventListener(\n        \"devicechange\",\n        onDeviceChange\n      );\n    })\n  );\n\n  if (typeof window !== \"undefined\") {\n    if (!window.isSecureContext) {\n      throw new Error(\n        `Accessing media devices is available only in secure contexts (HTTPS and localhost), in some or all supporting browsers. See: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/mediaDevices`\n      );\n    }\n    navigator?.mediaDevices?.addEventListener(\"devicechange\", onDeviceChange);\n  }\n  // because we rely on an async function, concat the promise to retrieve the initial values with the observable\n  return concat(\n    VoiceAgent.getLocalDevices(kind, requestPermissions).catch((e) => {\n      onError?.(e);\n      return [] as MediaDeviceInfo[];\n    }),\n    observable\n  );\n}\n\nexport function createDataObserver(agent: VoiceAgent) {\n  return agentEventSelector(agent, AgentEvent.DataReceived);\n}\n\n/**\n *\n * @param agent\n * @returns\n */\n\nexport function agentInputMediaDeviceChangeObservable(agent: VoiceAgent) {\n  return agentEventSelector(agent, AgentEvent.InputMediaDeviceChanged).pipe(\n    map(([deviceId]: [string]) => {\n      return deviceId;\n    })\n  );\n}\n\n/**\n * for observable of mute and unmute of the input and output of audio\n * @param agent\n * @returns\n */\nexport function agentAudioInputMuteObservable(agent: VoiceAgent) {\n  const observable = observeVoiceAgentEvents(\n    agent,\n    AgentEvent.AudioInputMuteToggle\n  ).pipe(\n    map((_agn: VoiceAgent) => {\n      return { isEnable: _agn.isAudioInputEnable };\n    })\n  );\n  return observable;\n}\n\n/**\n * for observable of mute and unmute of the input and output of audio\n * @param agent\n * @returns\n */\nexport function agentAudioOutputMuteObservable(agent: VoiceAgent) {\n  const observable = observeVoiceAgentEvents(\n    agent,\n    AgentEvent.AudioOutputMuteToggle\n  ).pipe(\n    map((_agn: VoiceAgent) => {\n      return { isEnable: _agn.isAudioOutputEnable };\n    })\n  );\n  return observable;\n}\n\n/**\n * when connection of agent get changed\n * @param agent\n * @returns\n */\nexport function agentConnectionStateObservable(agent: VoiceAgent) {\n  const observable = observeVoiceAgentEvents(\n    agent,\n    AgentEvent.ConnectionChanged\n  ).pipe(\n    map((_a: VoiceAgent) => {\n      return { isConnected: agent.state === ConnectionState.Connected };\n    })\n  );\n  return observable;\n}\n\n/**\n * overserving the input channel\n * @param agent\n * @returns\n */\nexport function agentInputObservable(agent: VoiceAgent) {\n  const observable = observeVoiceAgentEvents(\n    agent,\n    AgentEvent.InputChannelSwitch\n  ).pipe(\n    map((_agent: VoiceAgent) => {\n      return { channel: _agent.inputChannel };\n    })\n  );\n  return observable;\n}\n\n/**\n *\n * @param agent\n * @returns\n */\nexport function agentMessageChangeEventObserver(agent: VoiceAgent) {\n  const observable = observeVoiceAgentEvents(\n    agent,\n    AgentEvent.ServerEvent,\n    AgentEvent.MessageFeedback\n  ).pipe(\n    map((v) => {\n      return {\n        eventType: v,\n        events: agent.events,\n        chats: agent.messages,\n        transcript: agent.transcript,\n      };\n    }),\n    startWith({\n      eventType: undefined,\n      events: agent.events,\n      chats: agent.messages,\n      transcript: agent.transcript,\n    })\n  );\n  return observable;\n}\n\n/**\n *\n * @param agent\n * @returns\n */\nexport function agentServerEventObserver(agent: VoiceAgent) {\n  const observable = agentEventSelector(agent, AgentEvent.ServerEvent).pipe(\n    map(([v]) => {\n      return {\n        eventType: v,\n        events: agent.events,\n        chats: agent.messages,\n        transcript: agent.transcript,\n      };\n    }),\n    startWith({\n      eventType: undefined,\n      events: agent.events,\n      chats: agent.messages,\n      transcript: agent.transcript,\n    })\n  );\n  return observable;\n}\n"],"mappings":"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","names":["reader","reader","MessageRole","MessageStatus","Channel","ConnectionState","Feedback","import_talk_api_pb","script","src","import_talk_api_pb","import_common_pb","import_common_pb","import_common_pb","import_talk_api_pb"]}